Wprowadzenie
Dobble / Spot Jest to gra karciana, w której ludzie muszą w krótkim czasie wykryć ten sam symbol na karcie, wskazać ją i przejść do następnej pary. Każda karta ma wiele symboli (8 w normalnej wersji), ale dokładnie jeden jest wspólny dla każdej pary kart.
Przykład z fizycznej kopii gry:
Wyzwanie
Napisz program, który podając zestaw symboli (pojedyncze znaki ascii) i liczbę symboli na pojedynczej karcie wytworzy wyjściowe karty z symbolami dla każdej karty. Istnieje oczywiście wiele równoważnych kombinacji, twój program musi tylko napisać dowolną kombinację, która daje największą liczbę kart dla danego wejścia.
To jest golf golfowy, więc lepiej skróć kod, lepiej.
Byłoby również świetnie, gdyby obliczenia zakończyły się przed śmiercią wszechświata przed upałem w najbardziej skomplikowanym przypadku.
Wejście
Dwa argumenty funkcji / stdin (twój wybór)
Pierwszym z nich jest zbiór symboli, coś w rodzaju „ABCDE” lub [„A”, „B”, „C”, „D”, „E”] - wybór formatu, ciąg znaków, zestaw, lista, strumień lub cokolwiek jest idiomatyczne dla wybranego języka. Znaki będą podane z zestawu [A-Za-z0-9], bez duplikatów (więc maksymalny rozmiar zestawu symboli wejściowych wynosi 62). Nie będą koniecznie uporządkowane w ( więc możesz dostać „yX4i9A” również dla przypadku z 6 symbolami).
Drugim argumentem jest liczba całkowita, wskazująca liczbę symboli na pojedynczej karcie. Będzie to <= rozmiar zestawu symboli.
Wynik
Wydrukuj wiele wierszy oddzielonych znakami nowej linii, z których każdy zawiera symbole pojedynczej karty.
Przykłady
ABC
2
>>>>
AB
BC
AC
Lub
ABCDEFG
3
>>>>
ABC
BDE
CEF
BFG
AEG
CDG
ADF
Lub
ABCDE
4
>>>>
ABCD
Poradnik
- Liczba wyprodukowanych kart nie może być większa niż liczba odrębnych symboli, aw wielu kombinacjach będzie znacznie mniejsza
- Możesz przeczytać trochę matematyki, jeśli potrzebujesz pomocy z matematyczną stroną problemu
To jest moje pierwsze wyzwanie golfowe, więc proszę wybacz możliwe problemy z formatowaniem / stylem - postaram się poprawić błędy, jeśli podasz je w komentarzach.
('abcdefghijklmnopqrstu', 5)
-> ['abcde', 'afghi', 'ajklm', 'anopq', 'arstu', 'bfjnr', 'bgkpt', 'bhlou', 'bimqs', 'cfkqu', 'cgjos', 'chmpr', 'cilnt', 'dfmot', 'dglqr', 'dhkns', 'dijpu', 'eflps', 'egmnu', 'ehjqt', 'eikor']
lub inne rozwiązanie robocze na 21 kart. (Zauważ, że jest to rzutowa skończona płaszczyzna rzędu 4).