Il mio insegnante Precalc ha uno dei suoi problemi preferiti che ha inventato (o più probabilmente rubato ispirato da xkcd ) che coinvolge una fila di norinatoi. "Scacco matto" è una situazione in cui ogni orinatoio è già occupato O ha un orinatoio occupato accanto a loro. Ad esempio, se una persona è una X, allora
X-X--X
è considerato scacco matto. Si noti che una persona non può occupare un orinatoio accanto a un orinatoio già occupato.
Compito
Il tuo programma prenderà un numero attraverso stdin, arg della riga di comando o un argomento di funzione. Il programma quindi stamperà o restituirà il numero di modi in cui può verificarsi lo scacco matto con il numero immesso di orinatoi.
Esempi
0 -> 1(il caso nullo conta come scacco)
1 -> 1( X)
2 -> 2( X-o -X)
3 -> 2( X-Xo -X-)
4 -> 3( X-X-, -X-Xo X--X)
5 -> 4( X-X-X, X--X-, -X-X-, o -X--X)
6 -> 5( X-X-X-, X--X-X, X-X--X, -X--X-o -X-X-X)
7 -> 7( X-X-X-X, X--X-X-, -X-X--X, -X--X-X, X-X--X-, X--X--Xo -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-)
...
punteggio
Vince il programma più piccolo in byte.
''. Questo è lo stesso di fattoriale e permutazioni, 0! = 1, perché esiste esattamente 1 modo per disporre 0 elementi.