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.Antworten:
Oase , 5 Bytes
Code
Erweiterte Version
Erläuterung
Probieren Sie es online!
quelle
info.txt
info.txt
ist nützlich, es enthält eine Dokumentation für alle Oasis-BefehleJava 7,
65-42BytesDie Sequenz fügt nur vorherige Elemente hinzu, um neue zu erhalten. Hutspitze zu Orlp und Rod für diese kürzere Methode;)
Alt:
Nach dem fünften Element steigt die Lücke in der Folge um das Element fünf vor.
quelle
f
Funktion aus dem anderen Snippet verwendet, anstatt sie zu wiederholen. Dumm mich zu reparieren ...u>0?u:1;
) werden1;
?u>0?u:1;)
indem1;
Sie den ersten Vergleich auf ändern. Beiu>1
u = 2 ist die Ausgabe g (0) + g (-1). Dies ist 2Python 2,
42403935 BytesGenerieren der tatsächlichen Mengen:
quelle
Rubin,
5834 BytesStark inspiriert von Geobits 'ursprünglicher Java-Antwort.
Siehe es auf repl.it: https://repl.it/Dedh/1
Erster Versuch
Siehe es auf repl.it: https://repl.it/Dedh
quelle
Python, 33 Bytes
Verwendet die verschobenen Basisfälle
f(-1) = f(0) = f(1) = 1
. WennTrue
für 1 verwendet werden könnte, bräuchten wir keine 3 Bytes für die+()
.quelle
J,
312723 BytesDank Meilen 4 Bytes gespart!
Eine Erklärung folgt in Kürze.
Alte Lösung
Dies ist eine Agenda. Die LHS ist ein Gerundium aus zwei Verben:
>.1&^
und-&3+&$:-&2
. Der erste wird verwendet, wenn die Bedingung (2&<
) fehlschlägt. Das heißt, der Fork>.1&^
wird über dem Argument aktiviert. Beobachten:Hier werden
>.
maximal zwei Werte angenommen. Somit ergibt es 1, 1 und 2 als anfängliche Terme.Das zweite Verb im Gerundium ist eine Gabelung:
Die linken und rechten Zinken werden auf das Verb angewendet, wobei jeweils 3 und 2 subtrahiert werden. dann wird das mittlere Verb mit den gleichen linken und rechten Argumenten aufgerufen.
$:
ruft das Verb für jedes Argument auf und+
addiert diese beiden. Es ist im Grunde gleichbedeutend mit($: arg - 3) + ($: arg - 2)
Testfälle
quelle
MATL ,
2523 BytesProbieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Zwei Windungen! Yay!
Auf diese Weise wird ein Array (z. B. A) erstellt, in dem jede mögliche Konfiguration eine Zeile ist.
1
in diesem Array steht für eine besetzte Position. Zum Beispiel ist für die Eingabe4
das Array ADer Code faltet dann Array A mit
[1 1 1]
. Dies ergibt ein Array B. Besetzte Positionen und Nachbarn von besetzten Positionen in A ergeben ein Ergebnis ungleich Null in Array B:Die erste Bedingung für eine Konfiguration als Schachmatt ist, dass B in dieser Zeile keine Nullen enthält. Dies bedeutet, dass es in dieser Reihe von A keine leeren Positionen gab oder dass es einige gab, aber Nachbarn von besetzten Positionen.
Wir brauchen eine zweite Bedingung. Beispielsweise erfüllt die letzte Zeile die obige Bedingung, ist jedoch nicht Teil der Lösung, da die Konfiguration anfangs nicht gültig war. Eine gültige Konfiguration kann keine zwei benachbarten besetzten Positionen haben, dh keine zwei zusammenhängenden
1
in A. Entsprechend können zwei zusammenhängende Werte in B nicht überschritten werden1
. Wir können dies also erkennen, indem wir B mit[1 1]
dem resultierenden Array C zusammenfalten und überprüfen,Kein Wert in dieser Zeile überschreitet
3
. Das Endergebnis ist die Anzahl der Konfigurationen, die die beiden Bedingungen erfüllen.quelle
PHP,
10511393 Bytes+3 für
n=1
; +9 für$argv
, -1-3 golfed-20: habe gemerkt, dass ich nicht die kombinationen habe, sondern nur deren anzahl
renn mit
-r
Schleife von 2 ** n-1 nach 0:
11
,000
,00
am Anfang oder am Ende, oder ein einzigen0
Druckergebnis
gleiche Größe, etwas einfacher Regex
11
,00
am Anfang oder am Ende, oder000
PHP, 82 Bytes
Arnauld antwortete portiert und golfen:
druckt nichts für n = 0
quelle
n=0
:?:1
vor dem Finale einfügen;
Jelly , 11 Bytes
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
JavaScript (ES6) / Rekursiv,
30 bis27 ByteBearbeiten: 3 Bytes dank Shaun H gespeichert
JavaScript (ES6) / Nicht rekursiv
9077 BytesBearbeiten: 13 Bytes dank Conor O'Brien und Titus gespeichert
quelle
((i|r|l)&(k-1))
kann((i|r|l)&k-1)
, oder sogar((i|r|l)&~-k)
i<<1
->i*2
oderi+i
!(i&(x=i>>1|i+i))&&((i|x)&(k-1))==k-1
; und wenn Sie einfügen können,k--
irgendwo, können Sie ersetzenk-1
mitk
zu speichern Pars.&(k-1)
braucht sowieso keine Eltern; aber Sie können&~k
stattdessen verwenden.f=n=>n<3?n||1:f(n-2)+f(n-3)
Mathematica, 35 Bytes
Definiert eine Funktion
a
. Nimmt eine Ganzzahl als Eingabe und gibt eine Ganzzahl als Ausgabe zurück. Einfache rekursive Lösung.quelle
AnyDice , 51 Bytes
Hier sollte es mehr AnyDice-Antworten geben.
Meine Lösung definiert eine rekursive Funktion, die berechnet
a(n)=a(n-2)+a(n-3)
. Es kehrt zurücka(0)=a(1)=1
unda(2)=2
verwendet einige ganzzahlige Divisionsmagie.Probieren Sie es online aus
Hinweis: Die Ausgabe kann seltsam aussehen, da sie normalerweise zur Ausgabe von Würfelwahrscheinlichkeiten verwendet wird. Schauen Sie sich einfach die Zahl links neben dem Balkendiagramm an.
quelle
Perl,
3534 BytesBeinhaltet +1 für
-p
Geben Sie auf STDIN Eingang
checkmate.pl
:Eine neu entwickelte Geheimformel. Ripple Update 3-Statusvariablen, ohne dass parallele Zuweisungen erforderlich sind.
Es ist ebenso kurz (aber viel langsamer und benötigt viel mehr Speicher), um das ursprüngliche Problem zu lösen:
aber das funktioniert nicht für
0
quelle
JavaScript (ES6), 62 Byte
Dies ist das erste Mal, dass ich zwei Dummy-Variablennamen benötige. Eine rekursive Version wäre wahrscheinlich kürzer, aber ich mag es wirklich
reduce
...quelle
Jelly , 19 Bytes
Die rekursive Lösung ist
wahrscheinlichkürzer ...Sehen Sie es bei TryItOnline
oder in der Serie für
n = [0, 99]
, auch bei TryItOnlineWie?
Gibt die
n+3
Nummer des th Padovans durch Zählen von Kombinationen zurückquelle
> <> , 25 + 2 = 27 Bytes
Muss der Eingang beim Programmstart auf dem Stack vorhanden sein, also +2 Byte für das
-v
Flag. Probieren Sie es online!Die erste Zeile initialisiert den Stapel auf
1 1 2 n
, wobein
die eingegebene Nummer ist. Die zweite Zeile, die rückwärts läuft, überprüft, obn
größer als 1 ist. Wenn dies dern
Fall ist, wird sie dekrementiert, und das nächste Element in der Sequenz wird wie folgt generiert:Die letzte Zeile gibt die Nummer am unteren Rand des Stapels aus, bei der es sich um das erforderliche Element in der Sequenz handelt.
quelle
CJam , 20 Bytes
Probieren Sie es online!
Erläuterung
Dies verwendet die Wiederholungsbeziehung, die auf der OEIS-Seite angezeigt wird .
quelle
05AB1E , 12 Bytes
Erläuterung
Probieren Sie es online!
quelle
FRACTRAN,
10493 BytesEingabe ist
11**n*29
und Ausgabe ist29**checkmate(n)
.Dies ist hauptsächlich zum Spaß, zumal ich gerade von Python, JS und Java überfordert bin . Die gleiche Anzahl von Bytes wie bei PHP: D Golfvorschläge sind willkommen.
Ungolfing
quelle
Eigentlich 25 Bytes
Dies scheint für eine einfache
f(n) = f(n-2) + f(n-3)
Wiederholungsbeziehung ein wenig lang zu sein . Golfvorschläge sind willkommen. Probieren Sie es online!Ungolfing
quelle
Eigentlich 18 Bytes
Dies ist eine Portierung von Dennis 'längerer Gelee-Antwort. Golfvorschläge sind willkommen. Probieren Sie es online!
Ungolfing
quelle
Stax , 7 Bytes
Führen Sie es aus und debuggen Sie es
Verwendet die Wiederholungsrelation.
C(n) = C(n-2) + C(n-3)
quelle
C (gcc) , 33 Bytes
Probieren Sie es online!
quelle
Haskell , 27 Bytes
Probieren Sie es online!
quelle