Verwandte: Hallo Welt !!! Fibonacci-Verteilung
Erstellen Sie ein Programm, das True zurückgibt, wenn eine bestimmte Eingabe die folgenden Spezifikationen erfüllt, andernfalls False:
- Die Anzahl der numerischen Zeichen (0-9) in der Eingabe entspricht einer Fibonacci-Zahl.
- Die Anzahl der nicht numerischen Zeichen! (0-9) in der Eingabe entspricht der Fibonacci-Zahl unmittelbar vor der Anzahl der numerischen Zeichen.
Zusätzliche Regeln:
- Ihr Programm muss die richtige Fibonacci-Sequenz gemäß OEIS verwenden - das heißt, die Fibonacci-Sequenz muss mit beginnen
0, 1, 1, 2, ...
- Wenn die Anzahl der numerischen oder nicht numerischen Werte 1 beträgt, muss Folgendes auftreten:
- Numerik 1: Eine nicht numerische Zählung von 0 oder 1 sollte als wahr behandelt werden - alle anderen als falsch.
- Nicht-Numerik 1: Die Zahl 1 oder 2 sollte als Wahr behandelt werden - alle anderen als Falsch.
- Die Eingabe kann nach Belieben erfolgen, das Programm muss jedoch in der Lage sein, beliebigen Text zu verarbeiten.
- Richtig / Falsch unterscheidet nicht zwischen Groß- und Kleinschreibung und kann durch 1/0 oder T / F ersetzt werden.
- Sie dürfen nur bis zu zwei Fibonacci-Zahlen fest codieren.
- Die Ausgabe kann nur True / False oder 1/0 oder T / F sein. Zusätzlicher Text oder sichtbare Fehler sind nicht akzeptabel.
Antworten:
Golfscript, 36
Erläuterung:
:?
speichert die Eingabe in?
.1 2{.@+.?,<}do
berechnet die letzten beiden Fibonacci-Zahlen, bis die Eingabelänge erreicht ist. Der Block lautet: "Dupliziere die Oberseite, drehe den dritten Wert nach oben, füge sie hinzu, dupliziere die Oberseite, erhalte die Eingabe, erhalte ihre Länge, vergleiche".?,=
vergleicht die zuletzt berechnete Fibonacci-Zahl mit der Eingabelänge.@
bringt die Eingabe nach oben{.48<\58<^},
filtert nur Ziffern heraus. Der Block lautet "liegt der ASCII-Wert unter 48 XOR unter 58?",@=
vergleicht die gefilterte Stringlänge mit der unteren Fibonacci-Zahl (Anzahl der Ziffern)*
führt die beiden Vergleiche zusammen, um einen einzelnen booleschen Wert bereitzustellen.Live-Demo: http://golfscript.apphb.com/?c=OyIvMDU5OiIKOj8xIDJ7LkArLj8sPH1kbz8sPUB7LjQ4PFw1ODxefSwsQD0q
quelle
Javascript,
92 8886 ZeichenIch hoffe, es macht Ihnen nichts aus, dass ich die ersten drei Fibonacci-Zahlen hart codiert habe.
quelle
a
brauchte keine Initialisierung. Warum fange ich bei 1,2,3 an - das Poster der ersten Herausforderung wurde nicht1
als unmittelbar vorhergehend akzeptiert1
.Python -
128125Ich hoffe wirklich, dass es kein Problem gibt, die ersten Fibonacci-Zahlen fest zu codieren
quelle
Perl, 92
Verwendungszweck:
quelle
Python 3
(105 Zeichen)
Der Name der Skriptdatei wird über die Befehlszeile an das Programm übergeben
(87 Zeichen)
Das Skript muss in eine Datei mit dem Namen 's' geschrieben werden.
quelle
Java -
147145Ich würde sagen, das ist nicht schlecht für Java.
Edit : Danke an Chris Hayes für den Vorschlag
0>1
für falsch und0<1
für wahr.quelle
1==0
Zeichen speichern, können Sie diese0<1
anstelle vontrue
und0>1
für verwendenfalse
.APL, 34 Zeichen / Bytes *
Erwartet die Eingabezeichenfolge bei der Standardeingabe und druckt je nach Bedarf entweder 0 oder 1.
⎕IO
muss auf 0 gesetzt werden (der Standard ist implementierungsabhängig.)Ungolfed
Beispiele
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ *: APL kann in einem eigenen ( alten) Einzelbyte -Zeichensatz geschrieben werden, der APL-Symbole den oberen 128-Byte-Werten zuordnet
. Für die Bewertung kann daher ein Programm mit N Zeichen , das nur ASCII-Zeichen und APL-Symbole verwendet, als N Byte lang angesehen werden.
quelle
Ruby, 85
Nimmt Eingaben entweder am
STDIN
oder als Dateinamenargument vor.Die Ausgabe ist entweder
"true"
oder"false"
.quelle