Cześć, potrzebuję pseudokod lub schemat blokowy algorytmu który ma "wypisać" wszystkie ciągi zero jedynkowe długości n. N to liczba naturalna która sami zadajemy.
Dana jest liczba naturalna n. Wypisać wszystkie ciągi
zero-jedynkowe długości n
Cześć, potrzebuję pseudokod lub schemat blokowy algorytmu który ma "wypisać" wszystkie ciągi zero jedynkowe długości n. N to liczba naturalna która sami zadajemy.
Dana jest liczba naturalna n. Wypisać wszystkie ciągi
zero-jedynkowe długości n
Generalnie robisz 1 funkcję, która potrafi wyświetlić liczbę binarną długości n i 2gą funkcję, która potrafi dodać 1 do liczby binarnej. Potem robisz tak:
Zgodnie z arytmetyką binarną funkcja dodająca 1 powinna ustawić same 0 w zmiennej, jeśli ta by potrzebowała więcej bitów niż możliwe na zapis. To możesz wykorzystać do sprawdzenia, czy wypisałeś już wszystkie.
Idea jest taka: zaczynając od zera, Dodajesz 2 ^ (n - 1)
razy jeden:
0000 -> + 1
0001 -> + 1
0010 -> + 1
0011 -> + 1
....
I tak dalej.
Dla dużych n
Wasze sposoby przekroczą zakres (dla tradycyjnych int
ów, ale w Pythonie3 już powinno działać). Natomiast można to zrobić rekurencyjnie:
ciag :: Integer -> [String]
ciag 0 = [""]
ciag n =
[ ('0':x) | x <- ciag (n-1) ] ++
[ ('1':x) | x <- ciag (n-1) ]
(przykład w Haskellu).