En un rompecabezas de un viejo libro mío, se define un juego en el que dos jugadores eligen secuencias de lanzamientos de monedas que creen que aparecerán primero cuando una moneda se lanza repetidamente. (En realidad, era una tirada de dados par e impar, pero este pequeño detalle no importa en términos de equivalencia problemática).
Se observa que si el jugador 1 elige TTT
y el jugador 2 elige HTT
, ese jugador 2 tiene una probabilidad de 7/8 de ganar el juego, ya que la única forma de TTT
hacerlo HTT
es si los primeros tres lanzamientos son todos colas.
Su trabajo es crear un programa o función que deduzca la probabilidad de que una de las dos secuencias elegidas sea lo primero. Su programa tomará dos líneas de entrada (o dos cadenas como argumentos), cada una representando una secuencia de longitud 10 o menos:
HTT
TTT
Y genere la probabilidad de que gane el primer jugador, ya sea en forma fraccionaria o decimal:
7/8
0.875
El código más corto para hacer esto en cualquier idioma gana.
fuente
Respuestas:
Python 3 (
139136134132126115143)Utiliza el algoritmo de Conway como se describe aquí . Maneja todos los pares de secuencias siempre que el primero no sea una subsecuencia de terminación del segundo (según las instrucciones).
Gracias xnor por reducir 6 bytes. Gracias Zgarb por detectar un error con subsecuencias.
fuente
"HTT"
y"TTT"
,o
tiene el valor-1
y lo divide por0
.2**i
con<<i
, y la probabilidad de salida se puede escribir como1/(1/o + 1)
, en la que se puede poner el recíproco deo
forma directa.HTH
yT
, a pesar de que el primer jugador no puede ganar. La otra respuesta tiene el mismo problema.CJam,
44 3836 bytesUsando el mismo algoritmo de Conway que aquí .
La entrada son las dos secuencias distintas en dos líneas. La salida es la probabilidad de ganar primero sobre el segundo. Las entradas no necesitan ser de la misma longitud
Estoy usando la fórmula para ganar probabilidades (
p
) para el primer jugador A comoEntonces la probabilidad se define como
que, después de simplificar se convierte
y después de alguna simplificación, se convierte
Entrada de ejemplo:
Salida:
Pruébalo en línea aquí
fuente
HTH
yT
, a pesar de que el primer jugador no puede ganar. La otra respuesta tiene el mismo problema.Lua
211 190184También usando el algoritmo de Conway. Todavía nuevo en Lua, por lo que esto se puede jugar más seguro.
Sin golf
Primera versión
fuente