Mit N (2 <= N ) drucken Sie N Zeilen der Buchstaben-Fibonacci-Reihe wie folgt (dh N = 5). Beginnen Sie zuerst mit a
und b
:
a
b
Fügen Sie als Nächstes die beiden Zeilen hinzu.
a
b
ab
Fügen Sie die letzten beiden Zeilen hinzu.
a
b
ab
bab
Mach weiter...
a
b
ab
bab
abbab
Und wir sind fertig.
Denken Sie daran, das ist Code-Golf , also gewinnt der Code mit den wenigsten Bytes.
Antworten:
Python 2, 41 Bytes
3 Bytes dank @xnor gespart
Test auf Ideone
Folgt einfach der rekursiven Definition.
quelle
a,b="ab";exec"print a;a,b=b,a+b;"*input()
.Haskell,
293532 BytesEinfache Rekursion.
Als Referenz: Die alte Version (eine Anpassung dieser Antwort ) verkettete die Zeichenfolgen in der falschen Reihenfolge, so dass ich eine hinzufügen musste,
flip(...)
die es zu lang machte (35 Bytes).quelle
["b","a","ab","aba","abaab"]
05AB1E ,
1211 BytesDanke an Emigna für das Speichern eines Bytes!
Verwendet die CP-1252- Codierung. Probieren Sie es online!
quelle
̓
könnte genauso gut seinG
wie du nicht verwendestN
:)Jelly ,
11 bis10 BytesProbieren Sie es online!
Wie es funktioniert
quelle
”a”b;@Ṅ
Teil unten, aber ich konnte nicht herausfinden, wohin ich von dort gehen soll ... jetzt weiß ich :-)Java 7, 69 Bytes
ungolfed
quelle
a
undb
. Ich bin nicht sicher, ob die"a"
und"b"
-Parameter für die Byteanzahl gezählt werden sollen, da in der Frage ausdrücklich angegeben ist, dassa
und verwendet werden sollenb
. Nicht, dass Java jemals gewinnen würde. ;)"a"
und"b"
) anstelle von 69 sein sollte, weil die Herausforderung speziell nacha
und gefragtb
hat und die Code-Snipped / -Methode derzeit verwendet eine variable Eingabe. Ich bin nicht sicher, welche Regeln diesbezüglich gelten, aber ich persönlich bin der Meinung, dass dies gezählt werden sollte. Andernfalls könnten Sie in einigen Sprachen eine Funktion haben, die eine Parameterfunktion ausführt, und dann einfach die gesamte Challenge-Funktion im Parameter angeben, ohne dessen Bytes zu zählen. Klingt nach einer Regel mit Standardlücken.Emacs,
26, 25-ish TastenanschlägeProgramm
#nLesen als Schlüssel mit Ziffer (n) werden n :
ARETBRETF3UPUPC-SPACEC-EM-WDOWNDOWNC-Y UPC-AC-SPACEC-EM-WDOWNC-EC-YRETF4C-#(n-2)F4
Erläuterung
Mit n = 10
quelle
JavaScript (ES6),
4342 BytesEin Byte dank @Arnauld gespeichert
quelle
CJam,
1917 BytesErläuterung
quelle
p
sollte a sein;
. Sie können die Anführungszeichen um die Ausgabe loswerden, wenn Sien
anstelle von verwendenp
. Schließlich'a'b
speichert zwei Bytes über"a""b"
.V , 18 Bytes
Probieren Sie es online!
Oder die besser lesbare Version:
Erläuterung:
quelle
MATL , 14 Bytes
Probieren Sie es online!
quelle
Python 2, 55 Bytes
quelle
Retina , 33 Bytes
Probieren Sie es online!
10 (!) Bytes gespart dank @ MartinEnder !
Erläuterung
Konvertiert die Eingabe in unär, subtrahiert
2
und addiert dasa
und undb
ersetzt dann rekursiv das verbleibende1
s durch die Verkettung der beiden vorherigen Zeichenfolgen.quelle
$%`
! und diese andere Gefangennahme war nur schlechte Planung ... Erstaunlich, danke!Batch,
10293 BytesZum Glück Variablen werden für jede Zeile erweitert , bevor Zuweisungen wirksam, so dass ich beide setzen können
a
undb
mit ihren alten Werten , ohne dass eine temporäre. Bearbeiten: 9 Bytes dank @ nephi12 gespeichert.quelle
for /l %%i in (2,1,%1) etc..
@set a=a&set b=b
wie Sie es mit der letzten getan haben. obwohl technisch könnten sie alle auf der gleichen Linie sein ... aber das wäre hässlich ... hmm ...Staple meinen Golf, 63 Bytes
Meine Sprache finden Sie hier: https://github.com/cheertarts/Stack-My-Golf .
Es gibt wahrscheinlich einen kürzeren Weg, aber dieser ist der offensichtlichste.
quelle
Perl,
36-35BytesBeinhaltet +3 für
-n
Rechnen Sie mit STDIN
fibo.pl
quelle
Perl, 45 +1 = 46 Bytes
+1 Byte für -n Flag
Leichte Verbesserung gegenüber der bestehenden 49-Byte-Lösung, wurde jedoch separat entwickelt. Die Klammern für
say($a)
sind notwendig, da sie andernfalls$a,($a,$b)=($b,$a.$b)
als Argument interpretiert werden, dassay
mehr Junk ausgibt, als wir benötigen.Perl, 42 Bytes
Ein separater Ansatz von der obigen Lösung:
Ich bin noch nicht davon überzeugt, dass ich Transliteration und Ersetzung nicht in einer einzigen, kürzeren Operation kombinieren kann. Wenn ich einen finde, werde ich ihn posten.
quelle
Schnelle 3, 76 Bytes
quelle
Perl, 48 Bytes
47 Byte Code + 1 für
-n
.Einfacher Ansatz. Versuchen Sie ursprünglich
$a[@a]="@a[-2,-1]"
, ein Array-Slice zu verwenden, aber das erfordert$"=""
oder ähnliches :(. 1 Byte sparen dank @ Dada !Verwendung
quelle
@;
stattdessen@a
das letzte Semikolon weglassen (sehen Sie, was ich meine?). (Ich weiß, ein Byte ist ziemlich billig, aber ich hatte keine bessere Idee ..)perl -pe '@;=(a,b);$;[@;]=$;[-2].$;[-1]for 3..$_;say for@' <<< 5 syntax error at -e line 1, at EOF Execution of -e aborted due to compilation errors.
Aber ich hätte nicht gedacht, dass es fair wäre, eine Antwort hinzuzufügen, wenn ich es nicht könnte Bring es zum Laufen!-pe
tun-nE
? Wie auch immer, es funktioniert auf meinem, also hängt es wahrscheinlich mit Ihrer Perl-Version oder Ihrem Perl-System zusammen ... Aber glauben Sie mir, ich habe es getestet und es funktioniert! ;)-nE
(weiß nicht woher-pe
! Muss Freitag sein ...) Ich aktualisiere das, wenn ich ein Mo bekomme! Danke für das Teilen!SOML , 8 Bytes (nicht konkurrierend)
Erläuterung:
Der Grund, warum dies nicht konkurriert, ist, dass sich diese Sprache noch in der Entwicklung befindet und ich beim Schreiben ein paar neue Funktionen hinzugefügt habe.
Auch 1. Post auf PPCG!
quelle
05AB1E, 15 Bytes
quelle
C , 156 Bytes (ohne Einzug)
Zwei Puffer (u & v) speichern die letzten beiden Zeilen. Die neueste Zeile (mit zwei Zeigern verfolgt: Start = c, Ende = d) wird an die älteste angefügt (Start = a, Ende = b). Vertausche (a, b) und (c, d) und schleife. Achten Sie auf die Puffergröße, bevor Sie zu viele Zeilen anfordern. Nicht so kurz (wie von einer einfachen Sprache erwartet), aber es hat Spaß gemacht, zu programmieren.
quelle
5
aber es sollte eine Benutzereingabe seinGiven N (2 <= N), print N lines of the letter Fibonacci series like this (i.e. N = 5)
N
und nicht fixiert. Oder der Benutzer ist jemand, der Ihre Funktion / Ihr Programm verwendet.PHP,
6362 BytesRekursive Version:
quelle
return
Pyth , 17 Bytes
Ein Programm, das die Eingabe einer Ganzzahl akzeptiert und das Ergebnis ausgibt.
Probieren Sie es online!
Wie es funktioniert
quelle
Pyth -
1615 BytesProbieren Sie es hier online aus .
quelle
APL, 30 Bytes.
⎕IO
muss sein1
.quelle
Mathematica, 49 Bytes
Definiert eine Funktion,
g
die die einzelne numerische Eingabe übernimmt. gibt eine Liste von Zeichenketten zurück. Einfache rekursive Implementierung mit dem Operator zum Verbinden von Zeichenfolgen<>
.Mathematica, 56 Bytes
Unbenannte Funktion, gleiches Eingabe- / Ausgabeformat wie oben. Diese Lösung verwendet eine alternative Methode zum Generieren der Zeichenfolgen: Jede Zeichenfolge in der Liste ist das Ergebnis des gleichzeitigen Ersetzens aller Vorkommen von "a" durch "b" und aller Vorkommen von "b" durch "ab" in der vorherigen Zeichenfolge.
quelle
Groovy, 79 Bytes
quelle
PHP, 53 Bytes
quelle
$b
die Zeichenfolge eingeben.C ++ 11,
8998 Bytes+7 Bytes für alle Zeilen, nicht nur die letzte. +2 Bytes mehr für
N
die Anzahl der gedruckten Zeilen, keine 0-basierten Sachen.Verwendung:
quelle
Ruby (1.9+) 46 Bytes
quelle