Como o título pode sugerir, esse problema é semi-inspirado no educado bot bêbado míope de @NP
Nosso pobre bot é colocado em uma grade cartesiana na origem e, a cada minuto, move 1 unidade em uma das quatro direções (Cima, Baixo, Esquerda, Direita).
Após n minutos, todas as minas latentes na grade são ativadas, matando qualquer bot pobre que possa se encontrar sobre elas. As minas estão localizadas em todas as coordenadas inteiras que satisfazem a equação | y | = | x |.
Desafio
Você receberá n , o número de minutos antes da explosão das minas, como entrada e como saída, você deve encontrar a probabilidade de que o bot esteja morto .
Entrada : um número natural que representa n .
Saída : deixe que a probabilidade de o bot estar morto seja p / q, onde p e q são números inteiros relativamente primos (q não pode ser 0, mas p pode). Saída p.
Regras
- Seu algoritmo não deve ser executado em tempo exponencial ou superior. Idealmente, ele deve ser executado em tempo polinomial ou menos.
- Seu algoritmo deve ser capaz de lidar com entradas
n
<20 (pode ser ajustado se for muito difícil) em um tempo razoável. - Este é um desafio do código-golfe .
- A iteração de todas as possibilidades para um dado n definitivamente não será aceita como resposta.
Casos de teste
1
->0
2
->3
4
->39
6
->135
8
->7735
10
->28287
Exemplo de cálculo para n = 6
Temos quatro movimentos possíveis: U, D, R e L. O número total de caminhos que podem ser seguidos é 4 ^ 6 ou 4096. Há 4 casos possíveis que chegam ao longo da linha y = x: x, y = ± 1; x, y = ± 2; x, y = ± 3; ou x = y = 0. Contaremos o número de maneiras de terminar em (1,1), (2,2) e (3,3), multiplicá-las por 4 para dar conta dos outros quadrantes e adicionar isso para o número de maneiras de terminar em (0,0).
Caso 1: O bot termina em (3, 3). Para que o bot acabe aqui, ele deve ter tido três movimentos certos e três movimentos para cima. Em outras palavras, o número total de maneiras de chegar aqui são as maneiras de reorganizar as letras na sequência RRRUUU, que é 6, escolha 3 = 20.
Caso 2: O bot termina em (2,2). Para que o bot acabasse aqui, ele poderia ter 2 jogadas para cima, 3 para a direita e 1 para a esquerda; ou 2 movimentos à direita, 3 movimentos para cima e 1 movimento para baixo. Assim, o número total de maneiras de chegar aqui é a soma das maneiras de reorganizar as letras nas seqüências RRRLUU e UUUDRR, ambas as quais são (6 escolha 1) * (5 escolha 2) = 60, para um total de 120 possibilidades .
Caso 3: O bot termina em (1,1). Para que o bot acabasse aqui, ele poderia ter: 1 movimento à direita, 3 movimentos para cima e 2 movimentos para baixo. Nesse caso, o número de maneiras de reorganizar as letras na sequência RUUUDD é (6, escolha 1) * (5, escolha 2) = 60.
1 movimento para cima, 3 movimentos para a direita e 2 movimentos para a esquerda. Nesse caso, o número de maneiras de reorganizar as letras na sequência URRRLL é (6, escolha 1) * (5, escolha 2) = 60.
2 movimentos à direita, 1 movimento à esquerda, 2 movimentos para cima e 1 movimento para baixo. Nesse caso, o número de maneiras de reorganizar as letras na sequência UUDRRL é (6, escolha 1) * (5, escolha 1) * (4, escolha 2) = 180.
Assim, o número total de maneiras de terminar em (1,1) é 300.
Caso 4: O bot termina em (0,0). Para que o bot acabasse aqui, ele poderia ter:
3 movimentos à direita e 3 movimentos à esquerda. Nesse caso, o número de maneiras de reorganizar as letras na sequência RRRLLL é (6, escolha 3) = 20.
3 movimentos para cima e 3 movimentos para baixo. Nesse caso, o número de maneiras de reorganizar as letras na sequência UUUDDD é (6, escolha 3) = 20.
1 movimento para a direita, 1 movimento para a esquerda, 2 movimentos para cima e 2 movimentos para baixo. Nesse caso, o número de maneiras de reorganizar as letras na sequência RLUUDD é (6, escolha 1) * (5, escolha 1) * (4, escolha 2) = 180.
1 movimento para cima, 1 movimento para baixo, 2 movimentos para a direita e 2 movimentos para a esquerda. Nesse caso, o número de maneiras de reorganizar as letras na sequência RRLLUD é (6, escolha 1) * (5, escolha 1) * (4, escolha 2) = 180.
Assim, o número total de maneiras de terminar em (0,0) é 400.
Adicionando esses casos, obtemos o número total de maneiras de terminar em | y | = | x | é 4 (20 + 120 + 300) + 400 = 2160. Assim, nossa probabilidade é 2160/4096. Quando essa fração é totalmente reduzida, é 135/256, então nossa resposta é 135 .