Ciągi binarne [2017] [PR]
W pliku binarne.txt znajduje się 500 napisów złożonych wyłącznie z zer i jedynek. W każdym wierszu umieszczony jest jeden napis. Każdy napis ma długość podzielną przez 4. Napisz program (lub programy), który da odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku zadanie4.txt, każdą odpowiedź poprzedź numerem odpowiedniego zadania.
Zadanie 4.1 (0-4)
Napis nazywać będziemy dwucyklicznym, jeśli składa się on wyłącznie z dwóch powtórzeń tego samego napisu.
Przykład:
Napis 10001000 jest dwucykliczny (składa się z dwóch powtórzeń napisu 1000), natomiast napisy 00011000 i 10001001 nie są dwucykliczne.
Podaj liczbę napisów dwucyklicznych w pliku binarne.txt, najdłuższy napis dwucykliczny z tego pliku oraz jego długość.
Zadanie 4.2 (0-2)
Napisy z pliku binarne.txt traktujemy jako binarne zapisy liczb dziesiętnych, w których każdy segment złożony z 4 znaków jest reprezentacją binarnego zapisu jednej cyfry (zapis taki nazywany jest kodem BCD). Napis uznajemy za niepoprawny, gdy któryś z segmentów ma wartość większą niż 9 (czyli nie jest zapisem cyfry dziesiętnej).
Przykład:
Napis 10010111 jest poprawny i reprezentuje liczbę 97, natomiast napis 11010000 nie jest poprawny, gdyż jego pierwszy segment (1101) reprezentuje w zapisie binarnym większą od 9 liczbę 13. Podobnie nie jest poprawny napis 1110, ponieważ reprezentuje w zapisie binarnym liczbę 14.
Podaj liczbę niepoprawnych napisów z pliku binarne.txt oraz najmniejszą długość niepoprawnego napisu.
Zadanie 4.3 (0-4)
Napisy z pliku binarne.txt traktujemy teraz jako liczby naturalne w zwykłym zapisie binarnym, pomijamy jednak liczby większe niż 65 535. Wyznacz największą spośród tych liczb, podaj jej wartość w zapisie binarnym oraz w zapisie dziesiętnym.
Przykład:
W pliku o zawartości:
1111000011110000
11110000111100001000
10100110
druga liczba jest pomijana (jako większa od 65 535), zatem największą liczbę wybieramy spośród 1111000011110000(2)=61680(10) oraz 10100110(2)=166(10). Odpowiedzią jest zatem para 1111000011110000, 61680.
Do pobrania: binarne.txt