In einem Puzzle in einem alten Buch von mir wird ein Spiel definiert, in dem zwei Spieler Sequenzen von Münzwürfen auswählen, von denen sie glauben, dass sie zuerst erscheinen, wenn eine Münze wiederholt geworfen wird. (Eigentlich war es ein ungerader und ein gerader Würfelwurf, aber dieses kleine Detail spielt in Bezug auf die Problemäquivalenz keine Rolle.)
Es wird darauf hingewiesen, dass Spieler 1 TTT
und Spieler 2 HTT
eine 7/8-Chance haben, das Spiel zu gewinnen, da der einzige Weg TTT
davor bestehen kann, HTT
wenn die ersten drei Flips allesamt "Tails" sind.
Ihre Aufgabe ist es, ein Programm oder eine Funktion zu erstellen, die die Wahrscheinlichkeit herleiten, dass eine von zwei ausgewählten Sequenzen an erster Stelle steht. Ihr Programm verwendet zwei Eingabezeilen (oder zwei Zeichenfolgen als Argumente), die jeweils eine Sequenz mit einer Länge von 10 oder weniger darstellen:
HTT
TTT
Und die Wahrscheinlichkeit ausgeben, dass die erste Spieler gewinnt, entweder als Bruch oder als Dezimalzahl:
7/8
0.875
Der kürzeste Code, um dies in einer Sprache zu tun, gewinnt.
quelle
Antworten:
Python 3 (
139136134132126115143)Verwendet den hier beschriebenen Conway-Algorithmus . Behandelt alle Sequenzpaare, solange die erste keine abschließende Teilsequenz der zweiten ist (gemäß Anweisung).
Danke, xnor, dass du 6 Bytes weniger hast. Vielen Dank an Zgarb, dass er einen Fehler mit Untersequenzen entdeckt hat.
quelle
"HTT"
und"TTT"
,o
wird der Wert angegeben-1
und durch dividiert0
.2**i
mit<<i
, und die Ausgabewahrscheinlichkeit kann geschrieben werden1/(1/o + 1)
, in dem Sie den Kehrwert setzen könneno
direkt.HTH
undT
, obwohl der erste Spieler nicht gewinnen kann. Die andere Antwort hat das gleiche Problem.CJam,
44 3836 BytesVerwenden des gleichen Conway-Algorithmus wie hier .
Eingabe sind die zwei unterschiedlichen Sequenzen in zwei Zeilen. Der Output ist die Wahrscheinlichkeit, dass der erste über den zweiten gewinnt. Die Eingänge müssen nicht gleich lang sein
Ich verwende die Formel zum Gewinnen von Gewinnchancen (
p
) für den ersten Spieler A alsDann ist die Wahrscheinlichkeit definiert als
was nach der Vereinfachung wird
und nach einiger Vereinfachung wird
Beispiel Eingabe:
Ausgabe:
Probieren Sie es hier online aus
quelle
HTH
undT
, obwohl der erste Spieler nicht gewinnen kann. Die andere Antwort hat das gleiche Problem.Lua
211 190184Auch unter Verwendung des Conway-Algorithmus. Lua ist noch neu, so dass man sicher mehr Golf spielen kann.
Ungolfed
Erste Version
quelle