Kombinacje dwukolumnowe w Java

0

Witam, wie ktoś z Was jak napisać w Javie kod, który rozpisze wszystkie kombinacje dwukolumnowe?
Potrzebuję rozpisać siedem rzędów, dwie kolumny(128 kombinacji):
1 2
1 2
1 2
1 2
1 2
1 2
1 2 ,

w trzech rzędach wyglądałoby to tak:
1 2
1 2
1 2 -->> 111, 222, 121, 212,122, 112, 211, 221

Przy trzech rzędach niczego nie można pominąć, ale przy siedmiu już niestety tak :) Z góry dziękuję i będę wdzięczny za pomoc.

0

Opisz problem dokładniej, na razie jest słaby do zrozumienia...

1

Jeżeli dobrze zrozumiałem:

dla każdej liczby od 0 do (2^n)-1

  • zamieniamy ją na postać binarną
0 → 0
1 → 1
2 → 10
3 → 11
...
7 → 111
  • dopełniamy do liczby rzędów zerami z lewej strony. Np. dla trzech rzędów będzie
0    → 000
1    → 001
10   → 010
11   → 011
...
111  → 111
  • zmieniamy znaki z 1 na 2 i 0 na 1
  • gotowe
0

Przedstawię to może na rysunku https://github.com/bieranek1988/kombinacje/blob/master/kombinacje.jpg chodzi o to żeby to rozpisać na kartce papieru, dlatego przedstawiłem to w pierwszym poście jako 1 i 2, bo nie nie miałem innego pomysłu jak to tutaj przedstawić, przy 128 kombinacjach się pomylę i natrafię na taką samą kombinację po drodze.

1
>>> import itertools
>>> list(itertools.combinations_with_replacement([1,2],3)
[(1, 1, 1), (1, 1, 2), (1, 2, 2), (2, 2, 2)]

O to chodzi? O kombinacje z powtórzeniami? To nie mogłeś od razu tak napisać, że szukasz kodu na generowanie kombinacji z powtórzeniami? tylko jakieś kolumny i rzędy o_O Jak musisz mieć w javie to w standardzie takiej funkcji nie ma i nawet jakieś standardowe commonsy jak guava nie mają, ale są np. https://github.com/dpaukov/combinatoricslib3#2-combinations-with-repetitions

1

Nic nie rozumiem z tego, co napisałeś.

Ignorując to, co napisałeś i patrząc na to:

1 2
1 2
1 2 -->> 111, 222, 121, 212,122, 112, 211, 221

To ja widzę najzwyklejszy w świecie iloczyn (czy tam produkt) kartezjański dla N zbiorów:

A = { a b }
B = { 1 2 }
C = { x D }
D = A x B x C = { { a 1 x } { a 1 D } ... { b 2 D } }
0

@Shalom dzięki o to mi chodziło

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