Wie kann ich "Go First" Würfel für N Würfel erzeugen?

9

Hintergrund

Wie hier beschrieben Ссылка , ist "Go First" Dice ein Satz von vier Würfeln, jeder mit einer einzigartigen Nummerierung, so dass:

  • Jeder Wurf mit zwei oder mehr Würfeln führt niemals zu einem Gleichstand.
  • Jeder Würfel, der gegen einen anderen Würfel im Satz gerollt wird, hat die gleiche Chance, gegen diesen Würfel "zu gewinnen / verlieren".

Hier ist die Nummerierung für die vier genannten Würfel:

%Vor%

(über)

Frage

Ich stinke in Mathe. Ich bin ratlos. Angesichts der oben genannten Informationen, Ich würde gerne in der Lage sein, Listen von ganzen Zahlen ("Würfel") mit einer Anzahl von Würfeln zu generieren. So dass Beispiel Ausgabe könnte so aussehen (formatiert, Python-Konsole) :

%Vor%

Die Anzahl der Seiten hier wird nur als Beispiel gewählt, weil sie mit dem anderen angegebenen Beispiel übereinstimmt. Die "Fairness" jedes Würfels ist wirklich das, wonach ich suche.

Ich versichere Ihnen, das ist keine Hausaufgabe. Dies ist einfach ein entschlossener Geek, genervt von einem scheinbar trivialen Puzzle, das mich einfach nicht allein lassen wird ... und aus irgendeinem Grund kann ich es nicht richtig hinkriegen.

Ich bin mir sicher, dass es eine relativ triviale Mathematik und einen Basisalgorithmus gibt, und ich suche genau danach. Nach welcher Terminologie sollte ich suchen, wenn dies für Sie offensichtlich ist? Weil es für mich nicht ist.

Idealerweise wäre die Lösung in Python, aber ich kann auch PHP, Javascript, etwas Ruby lesen.

    
anonymous coward 07.09.2012, 21:44
quelle

2 Antworten

5

Dies ist ein (rechnerisch) schwieriges Problem. Es ist nicht genug, wie es zunächst aussehen mag, dass der erwartete Wert jedes Würfels derselbe ist (obwohl es merkwürdigerweise in dem Beispiel ist, das du gabst). Es ist notwendig, dass jeder Würfel bei 50% aller Instanzen des Skalarprodukts jedes Würfelelements "gewinnt".

Die Tatsache, dass der Artikel darauf hinweist, dass ein Mathematiker das Beispiel erzeugt hat, das Sie "per Hand" gegeben haben, macht es mir ein wenig angenehmer, den folgenden Brute-Force-Ansatz vorzuschlagen:

%Vor%

Die Komplexität hier ist n ^ n, so dass dies allein Ihr Problem nur für sehr wenige nplayers und nsides löst. Durch Auskommentieren der kommentierten Zeilen können Sie jedoch eine Darstellung der Fairness der Würfel entlang der Iterationen des Punktprodukts prüfen, die viele Muster zu haben scheinen. Dies legt nahe, dass mehrere Heuristiken verwendet werden können, um diese Suche zu beschleunigen finde eine allgemeine Lösung.

BEARBEITEN

hat den Code für die verbesserte grafische Darstellung geändert. Hier sind ein paar Bilder, falls jemand besonders geschickt darin ist, Muster zu erkennen.

nplayers = 2, nside = 2, max_number = 8 nplayers = 2, nside = 4, max_number = 8 nplayers = 4, nside = 2, max_number = 8

Einige erste Beobachtungen:

  1. es ist symmetrisch
  2. die "saubersten" Graphen scheinen erzeugt zu werden wenn     max_number% (nplayers * nsides) == 0
goncalopp 08.09.2012, 21:53
quelle
0

Für die Aufzeichnung hat diese Antwort auf codegolf einen einfachen Algorithmus, der zumindest für eine beliebige Anzahl von Seiten auf den Würfeln zu funktionieren scheint: Ссылка

%Vor%     
anonymous coward 09.09.2012 01:29
quelle

Tags und Links