Dans un puzzle dans un vieux livre à moi, un jeu est défini dans lequel deux joueurs choisissent des séquences de lancers de pièces qui, selon eux, apparaîtront en premier lorsqu'une pièce est retournée à plusieurs reprises. (C'était en fait des lancers de dés impairs et pairs, mais ce petit détail n'a pas d'importance en termes d'équivalence de problème.)
Il est à noter que si le joueur 1 choisit TTT
et que le joueur 2 choisit HTT
, ce joueur 2 a 7/8 chances de gagner la partie, car la seule façon de TTT
venir avant HTT
est que les trois premiers flips soient tous des queues.
Votre travail consiste à créer un programme ou une fonction qui déduira la probabilité qu'une des deux séquences choisies vienne en premier. Votre programme prendra deux lignes d'entrée (ou deux chaînes comme arguments), chacune représentant une séquence de longueur 10 ou moins:
HTT
TTT
Et affichez la probabilité que le premier joueur gagne, sous forme fractionnaire ou décimale:
7/8
0.875
Le code le plus court pour le faire dans n'importe quelle langue gagne.
la source
Réponses:
Python 3 (
139136134132126115143)Utilise l'algorithme de Conway comme décrit à ici . Gère toutes les paires de séquences tant que la première n'est pas une sous-séquence de terminaison de la seconde (selon les instructions).
Merci xnor d'avoir rasé 6 octets. Merci Zgarb d'avoir repéré un bogue avec des sous-séquences.
la source
"HTT"
et"TTT"
,o
a la valeur-1
et il la divise par0
.2**i
avec<<i
, et la probabilité de sortie peut être écrite comme1/(1/o + 1)
, dans laquelle vous pouvez mettreo
directement l'inverse de .HTH
etT
, même si le premier joueur ne peut pas gagner. L'autre réponse a le même problème.CJam,
44 3836 octetsEn utilisant le même algorithme de Conway qu'ici .
L'entrée correspond aux deux séquences distinctes sur deux lignes. La sortie est la probabilité de gagner le premier sur le second. Les entrées n'ont pas besoin d'être de la même longueur
J'utilise la formule pour gagner les cotes (
p
) pour le premier joueur A commeEnsuite, la probabilité est définie comme
qui, après simplification, devient
et après une certaine simplification, devient
Exemple d'entrée:
Production:
Essayez-le en ligne ici
la source
HTH
etT
, même si le premier joueur ne peut pas gagner. L'autre réponse a le même problème.Lua
211 190184Utilisant également l'algorithme de Conway. Encore nouveau à Lua, donc cela peut être joué plus à coup sûr.
Non golfé
Première version
la source