Diese Herausforderung wurde von der britischen Informatikolympiade übernommen .
Würfelspiel
Zwei Spieler spielen ein Würfelspiel, bei dem sie jeweils ein Würfelpaar werfen und die höchste Summe gewinnt. Die Würfelpaare haben die gleiche Anzahl von Seiten, müssen jedoch nicht auf jeder Seite die gleichen Werte haben. Daher ist das Spiel fair, wenn für beide Würfelpaare alle möglichen Summen mit gleicher Wahrscheinlichkeit gemacht werden können.
Zum Beispiel, wenn Spieler 1 die folgenden Würfel hat:
{1,2,3,4,5,6} {1,2,3,4,5,6}
Dann können sie folgende Summen produzieren:
1 2 3 4 5 6
+------------------
1| 2 3 4 5 6 7
2| 3 4 5 6 7 8
3| 4 5 6 7 8 9
4| 5 6 7 8 9 10
5| 6 7 8 9 10 11
6| 7 8 9 10 11 12
Wenn Spieler 2 hat:
{1,2,2,3,3,4} {1,3,4,5,6,8}
Sie können produzieren:
1 2 2 3 3 4
+------------------
1| 2 3 3 4 4 5
3| 4 5 5 6 6 7
4| 5 6 6 7 7 8
5| 6 7 7 8 8 9
6| 7 8 8 9 9 10
8| 9 10 10 11 11 12
Dieses Spiel ist fair, da das Minimum für beide 2 ist, das Maximum 12 ist und jede Summe gleich oft auftritt, z. B. können 7 mit jedem Paar auf 6 Arten gemacht werden.
Herausforderung
Schreiben Sie ein Programm / eine Funktion, die zwei Würfel als Eingabe und optional eine Ganzzahl verwendet, die die Anzahl der Seiten darstellt, die jeder Würfel enthält, und druckt / gibt ein anderes Würfelpaar zurück, das verwendet werden kann, um ein faires Spiel mit den beiden Eingabewürfeln zu spielen, oder Jeder Falsey-Wert, wenn es keine andere Lösung als die Eingabe gibt.
Spezifikationen
Die Anzahl der Seiten auf beiden Würfeln muss gleich sein und der Anzahl der Seiten auf dem eingegebenen Würfelpaar entsprechen. Diese Zahl ist immer eine ganze Zahl größer oder gleich 1.
Die beiden zurückgegebenen Würfel können identisch sein, das Paar darf jedoch nicht mit dem Eingabepaar identisch sein.
Unterschiedliche Ordnungspaare sind nicht unterschiedlich. {1,2,3} {4,5,6} ist dasselbe wie {4,5,6} {1,2,3}.
Ihr Programm muss nicht schnell ein Ergebnis liefern, solange es schließlich die richtige Ausgabe liefert.
Die Werte auf dem eingegebenen Würfelpaar sind immer ganze Zahlen zwischen 1 und einschließlich 9, aber die zurückgegebenen Werte können beliebige ganze Zahlen ≥ 1 sein.
Wenn es mehr als eine mögliche Lösung gibt, muss nur eine zurückgegeben werden.
Eingabe / Ausgabe kann in jedem vernünftigen Format erfolgen.
Testfälle
6
1 2 2 3 3 4
8 6 5 4 3 1
1 2 3 4 5 6
1 2 3 4 5 6
4
1 1 1 1
1 4 5 8
1 1 4 4
1 1 5 5
3
1 3 5
2 4 6
False
8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
Any of the following:
1 2 2 3 3 4 4 5 | 1 2 2 3 5 6 6 7 | 1 2 3 3 4 4 5 6
1 3 5 5 7 7 9 11 | 1 3 3 5 5 7 7 9 | 1 2 5 5 6 6 9 10
9? Ich sehe nur die Entscheidung über die Seiten >=1, aber gibt es ein Maximum? Wenn es höher als 9 sein kann, würde es Ihnen etwas ausmachen, einen Testfall dafür hinzuzufügen?