Hier ist ein Programmierpuzzle für Sie:
Wenn Sie beispielsweise eine Liste mit Paaren von Zeichenfolgen und entsprechenden Zahlen angeben, [[A,37],[B,27],[C,21],[D,11],[E,10],[F,9],[G,3],[H,2]]
geben Sie eine weitere Liste aus, die nur die Zeichenfolgen enthält:
Die Gesamtanzahl aller Zeichenfolgen sollte genau der entsprechenden Anzahl in den Eingabedaten entsprechen.
In der Sequenz sollte keine Zeichenfolge nebeneinander wiederholt werden, und jede Zeichenfolge sollte in der Ausgabeliste angezeigt werden.
Die Auswahl der nächsten Zeichenfolge sollte nach dem Zufallsprinzip erfolgen, sofern nicht mehr als zwei Regeln verletzt werden. Jede Lösung sollte mit einer Wahrscheinlichkeit ungleich Null ausgewählt werden.
Wenn keine Kombination möglich ist, sollte die Ausgabe gerade sein
0
.
Die Eingabeliste kann in beliebiger Reihenfolge (sortiert oder unsortiert) angegeben werden, und die Zeichenfolgen in der Liste können beliebig lang sein.
Sample Output für den obigen Sample Input 1
[A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,G,H,G,H,G]
Eingabebeispiel 2:
[[A,6],[B,1],[C,1]]
Ausgang für zweiten Eingang:
0
da keine liste nach regeln möglich.
Beispieleingang 3:
[[AC,3],[BD,2]]
gültige Ausgabe: [AC,BD,AC,BD,AC]
ungültige Ausgabe: [AC,BD,AC,AC,BD]
Wenn weitere Klarstellungen erforderlich sind, zögern Sie bitte nicht, mich in den Kommentaren darauf hinzuweisen, und ich werde unverzüglich entsprechend handeln.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes für jede Sprache!