ciągi zer i jedynek

0

Trochę ciężko to wytłumaczyć, ale chciałbym zrobić coś takiego: przypisać do ciągu złożonego z zer i jedynek losową wartość. Długość tego ciągu określa użytkownik. Może podam przykład.

Jak użytkownik wprowadzi 1 to będą 2^1 = 2 takie ciągi:
[0] => losowa wartość
[1] => losowa wartość

Jak użytkownik wprowadzi 2 to będą 2^2 = 4 takie ciągi:
[00] => losowa wartość
[01] => losowa wartość
[10] => losowa wartość
[11] => losowa wartość

itd.
Najlepiej to chyba użyć do tego celu kolekcji HashMap gdzie kluczem będzie ciąg a wartością wartość losowa? A w jaki sposób wygenerować wszystkie takie ciągi złożone z zer i jedynek o danej długości??

0

może po prostu przekonwertuj najpierw te twoje ciągi na decymalne

A w jaki sposób wygenerować wszystkie takie ciągi złożone z zer i jedynek o danej długości?

po prostu użyj wartości od 0 do (2^n)-1

czyli Twoim rozwiązaniem jest zwykła tablica o długości 2^n

jeśli nie wykorzystujesz wszystkich wartości, a jedynie kilka, czyli np. dla ciągu zer jedynek o długości 32, wykorzystasz tylko np. 15 pól, to lepiej użyć mapę.

0

Dalej nie rozumiem jak mam wygenerować wszystkie możliwe ciągi np. o długości 2 składające się z zer i jedynek, czyli: 00, 01, 10, 11 lub równie dobrze mogłby się składać z liter np. A i B i wówczas byłoby: AA, AB, BA, BB.

Ok - znalazłem już: http://introcs.cs.princeton.edu/java/23recursion/GrayCode.java.html :)

0
bit_count = 4

for num in range(2 ** bit_count):
    print('{num:{fill}{bit_count}{base}}'.format(num=num, fill='0', bit_count=bit_count, base='b'))

Output:
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

0
int bit_count = 4;
int granica = (int)Math.pow(2,bit_count);
for(int i=0;i<granica;i++)
{
     StringBuilder sb=new StringBuilder(Integer.toBinaryString(i)).reverse();
     while (sb.length()<bit_count)
     {
          sb.append("0");
     }
     System.out.println(sb.reverse());
}

Output jak wyżej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1