Como el título puede sugerir, este problema está semi-inspirado por el educado Bot borracho miope de @NP
Nuestro pobre robot se coloca en una cuadrícula cartesiana en el origen, y después de cada minuto, se mueve 1 unidad en una de las cuatro direcciones (arriba, abajo, izquierda, derecha).
Después de n minutos, se activan todas las minas latentes en la cuadrícula, matando a cualquier robot pobre que pueda encontrarse sobre ellas. Las minas se encuentran en todas las coordenadas enteras que satisfacen la ecuación | y | = | x |.
Desafío
Se le proporcionará n , el número de minutos antes de la explosión de las minas, como entrada y como salida, debe encontrar la probabilidad de que el bot esté muerto .
Entrada : un número natural que representa n .
Salida : Supongamos que la probabilidad de que el bot esté muerto sea p / q, donde pyq son números enteros relativamente primos (q no puede ser 0, pero p sí). Salida p.
Reglas
- Su algoritmo no debe ejecutarse en tiempo exponencial o superior. Idealmente debería ejecutarse en tiempo polinómico o menos.
- Su algoritmo debe poder manejar entradas de
n
<20 (puede ajustarse si es demasiado difícil) en un tiempo razonable. - Este es un desafío de código de golf .
- Iterar sobre todas las posibilidades para un n dado definitivamente no será aceptado como respuesta.
Casos de prueba
1
->0
2
->3
4
->39
6
->135
8
->7735
10
->28287
Ejemplo de cálculo para n = 6
Tenemos 4 movimientos posibles: U, D, R y L. El número total de caminos que se pueden tomar es 4 ^ 6 o 4096. Hay 4 casos posibles que aterrizan a lo largo de la línea y = x: x, y = ± 1; x, y = ± 2; x, y = ± 3; o x = y = 0. Contaremos el número de formas de terminar en (1,1), (2,2) y (3,3), multiplicarlos por 4 para tener en cuenta los otros cuadrantes y sumar esto a la cantidad de formas de terminar en (0,0).
Caso 1: el bot termina en (3, 3). Para que el bot termine aquí, debe haber tenido 3 movimientos correctos y 3 movimientos hacia arriba. En otras palabras, el número total de formas de llegar aquí es la forma de reorganizar las letras en la secuencia RRRUUU, que es 6, elija 3 = 20.
Caso 2: El bot termina en (2,2). Para que el bot termine aquí, podría haber tenido 2 movimientos hacia arriba, 3 movimientos hacia la derecha y 1 movimiento hacia la izquierda; o 2 movimientos a la derecha, 3 movimientos hacia arriba y 1 movimiento hacia abajo. Por lo tanto, el número total de formas de llegar aquí es la suma de las formas de reorganizar las letras en las secuencias RRRLUU y UUUDRR, las cuales son (6 elegir 1) * (5 elegir 2) = 60, para un total de 120 posibilidades .
Caso 3: El bot termina en (1,1). Para que el bot termine aquí, podría haber tenido: 1 movimiento hacia la derecha, 3 movimientos hacia arriba y 2 movimientos hacia abajo. En este caso, el número de formas de reorganizar las letras en la secuencia RUUUDD es (6 elegir 1) * (5 elegir 2) = 60.
1 movimiento hacia arriba, 3 movimientos hacia la derecha y 2 movimientos hacia la izquierda. En este caso, el número de formas de reorganizar las letras en la secuencia URRRLL es (6 elegir 1) * (5 elegir 2) = 60.
2 movimientos hacia la derecha, 1 movimiento hacia la izquierda, 2 movimientos hacia arriba y 1 movimiento hacia abajo. En este caso, el número de formas de reorganizar las letras en la secuencia UUDRRL es (6 elegir 1) * (5 elegir 1) * (4 elegir 2) = 180.
Por lo tanto, el número total de formas de terminar en (1,1) es 300.
Caso 4: El bot termina en (0,0). Para que el bot termine aquí, podría haber tenido:
3 movimientos a la derecha y 3 movimientos a la izquierda. En este caso, el número de formas de reorganizar las letras en la secuencia RRRLLL es (6 elegir 3) = 20.
3 movimientos hacia arriba y 3 movimientos hacia abajo. En este caso, el número de formas de reorganizar las letras en la secuencia UUUDDD es (6 elegir 3) = 20.
1 movimiento hacia la derecha, 1 movimiento hacia la izquierda, 2 movimientos hacia arriba y 2 movimientos hacia abajo. En este caso, el número de formas de reorganizar las letras en la secuencia RLUUDD es (6 elige 1) * (5 elige 1) * (4 elige 2) = 180.
1 movimiento hacia arriba, 1 movimiento hacia abajo, 2 movimientos hacia la derecha y 2 movimientos hacia la izquierda. En este caso, el número de formas de reorganizar las letras en la secuencia RRLLUD es (6 elegir 1) * (5 elegir 1) * (4 elegir 2) = 180.
Por lo tanto, el número total de formas de terminar en (0,0) es 400.
Al sumar estos casos, obtenemos que el número total de formas de terminar en | y | = | x | es 4 (20 + 120 + 300) + 400 = 2160. Por lo tanto, nuestra probabilidad es 2160/4096. Cuando esta fracción se reduce completamente, es 135/256, por lo que nuestra respuesta es 135 .