Einführung
Dobble / SpotIt ist ein Kartenspiel, bei dem Menschen in kürzester Zeit dasselbe Symbol auf einem Kartenpaar erkennen, darauf hinweisen und zum nächsten Paar wechseln müssen. Jede Karte hat mehrere Symbole (8 in der normalen Version), aber genau eines ist für jedes Kartenpaar gleich.
Beispiel aus physischer Kopie des Spiels:
Herausforderung
Schreiben Sie ein Programm, das aus einer Reihe von Symbolen (einzelne ASCII-Zeichen) und einer Anzahl von Symbolen auf einer einzelnen Karte eine Liste von Ausgabekarten mit Symbolen für jede Karte erstellt. Es gibt offensichtlich viele äquivalente Kombinationen. Ihr Programm muss nur eine der Kombinationen schreiben, die die größte Menge an Karten für eine bestimmte Eingabe ergeben.
Es ist ein Code-Golf, also kürzer, besser.
Es wäre auch großartig, wenn die Berechnung für den kompliziertesten Fall vor dem Hitzetod des Universums abgeschlossen wäre.
Eingang
Zwei Argumente für function / stdin (Ihre Wahl)
Als erstes handelt es sich dabei um eine Sammlung von Symbolen, wie z. B. "ABCDE" oder ["A", "B", "C", "D", "E"] - das Format Ihrer Wahl, sei es eine Zeichenfolge, eine Menge, eine Liste oder ein Stream , oder was auch immer für die Sprache der Wahl idiomatisch ist. Die Zeichen werden aus dem Satz von [A-Za-z0-9] ohne Duplikate vergeben (daher beträgt die maximale Größe des Eingabesymbolsatzes 62). Sie werden nicht notwendigerweise in ( so können Sie "yX4i9A" auch für 6-Symbol-Fall erhalten).
Das zweite Argument ist eine Ganzzahl, die die Anzahl der Symbole auf einer einzelnen Karte angibt. Es wird <= als die Größe des Symbolsatzes sein.
Ausgabe
Drucken Sie mehrere durch Zeilenumbrüche getrennte Zeilen, von denen jede Symbole für eine einzelne Karte enthält.
Beispiele
ABC
2
>>>>
AB
BC
AC
Oder
ABCDEFG
3
>>>>
ABC
BDE
CEF
BFG
AEG
CDG
ADF
Oder
ABCDE
4
>>>>
ABCD
Hinweise
- Die Anzahl der produzierten Karten kann nicht größer als die Anzahl der unterschiedlichen Symbole sein und wird in vielen Kombinationen erheblich kleiner sein
- Möglicherweise möchten Sie einige mathematische Hintergrundinformationen lesen, wenn Sie Hilfe bei der mathematischen Seite des Problems benötigen
Dies ist meine erste Code-Golf-Herausforderung. Bitte verzeihen Sie eventuelle Probleme mit der Formatierung / dem Stil. Ich werde versuchen, Fehler zu korrigieren, wenn Sie sie in Kommentaren angeben.
('abcdefghijklmnopqrstu', 5)
-> ['abcde', 'afghi', 'ajklm', 'anopq', 'arstu', 'bfjnr', 'bgkpt', 'bhlou', 'bimqs', 'cfkqu', 'cgjos', 'chmpr', 'cilnt', 'dfmot', 'dglqr', 'dhkns', 'dijpu', 'eflps', 'egmnu', 'ehjqt', 'eikor']
oder eine andere 21-Karten-Arbeitslösung. (Beachten Sie, dass dies die projektive endliche Ebene der Ordnung 4 ist).