Meu professor do Precalc tem um dos seus problemas favoritos que ele inventou (ou mais provavelmente roubou inspirado no xkcd ) que envolve uma fileira de n
mictórios. "Xeque-mate" é uma situação em que todo mictório já está ocupado OU possui um mictório próximo a eles. Por exemplo, se uma pessoa é uma X
, então
X-X--X
é considerado xeque-mate. Observe que uma pessoa não pode ocupar um urinol próximo a um urinol já ocupado.
Tarefa
Seu programa analisará um número stdin
, argumentos de linha de comando ou um argumento de função. Seu programa imprimirá ou retornará o número de maneiras pelas quais o xeque-mate pode ocorrer com o número digitado de mictórios.
Exemplos
0 -> 1
(as contagens de casos nula como checkmate)
1 -> 1
( X
)
2 -> 2
( X-
ou -X
)
3 -> 2
( X-X
ou -X-
)
4 -> 3
( X-X-
, -X-X
, ou X--X
)
5 -> 4
( X-X-X
, X--X-
, -X-X-
, ou -X--X
)
6 -> 5
( X-X-X-
, X--X-X
, X-X--X
, -X--X-
ou -X-X-X
)
7 -> 7
( X-X-X-X
, X--X-X-
, -X-X--X
, -X--X-X
, X-X--X-
, X--X--X
ou -X-X-X-
)
8 -> 9
( -X--X--X
, -X--X-X-
, -X-X--X-
, -X-X-X-X
, X--X--X-
, X--X-X-X
, X-X--X-X
, X-X-X--X
, X-X-X-X-
)
...
Pontuação
O menor programa em bytes vence.
''
. É o mesmo que com fatorial e permutações, 0! = 1, porque existe exatamente uma maneira de organizar 0 itens.