Mein Precalc-Lehrer hat eines seiner Lieblingsprobleme, das er sich ausgedacht hat (oder wahrscheinlich von xkcd inspiriert gestohlen hat ) und an dem eine Reihe von Urinalen beteiligt ist. "Schachmatt" ist eine Situation, in der jedes Urinal bereits besetzt ist ODER sich ein besetztes Urinal daneben befindet. Wenn zum Beispiel eine Person eine ist , dannn
X
X-X--X
wird als Schachmatt angesehen. Beachten Sie, dass eine Person ein Urinal nicht neben einem bereits besetzten Urinal belegen kann.
Aufgabe
Ihr Programm nimmt eine Zahl stdin
, Befehlszeilenargumente oder ein Funktionsargument durch. Ihr Programm druckt dann die Anzahl der Möglichkeiten aus oder gibt sie zurück, die Schachmatt mit der eingegebenen Anzahl von Urinalen auftreten können.
Beispiele
0 -> 1
(Die Null Fall zählt als Schachmatt)
1 -> 1
( X
)
2 -> 2
( X-
oder -X
)
3 -> 2
( X-X
oder -X-
)
4 -> 3
( X-X-
, -X-X
oder X--X
)
5 -> 4
( X-X-X
, X--X-
, -X-X-
, oder -X--X
)
6 -> 5
( X-X-X-
, X--X-X
, X-X--X
, -X--X-
oder -X-X-X
)
7 -> 7
( X-X-X-X
, X--X-X-
, -X-X--X
, -X--X-X
, X-X--X-
, X--X--X
oder -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-
)
...
Wertung
Das kleinste Programm in Bytes gewinnt.
''
. Dies ist das gleiche wie bei Fakultäten und Permutationen, 0! = 1, weil es genau 1 Möglichkeit gibt, 0 Elemente anzuordnen.