Biorąc pod uwagę N (2 <= N ), wypisz N wierszy z serii liter Fibonacciego w ten sposób (tj. N = 5) Najpierw zacznij od a
i b
:
a
b
Następnie dodaj dwie linie.
a
b
ab
Dodawaj dwa ostatnie wiersze.
a
b
ab
bab
Tak trzymaj...
a
b
ab
bab
abbab
I skończyliśmy.
Pamiętaj, to jest golf golfowy , więc wygrywa kod z najmniejszą liczbą bajtów.
Odpowiedzi:
Python 2, 41 bajtów
Zaoszczędź 3 bajty dzięki @xnor
Testuj na Ideone
Po prostu podąża za rekurencyjną definicją.
źródło
a,b="ab";exec"print a;a,b=b,a+b;"*input()
.Haskell,
293532 bajtówProsta rekurencja.
Dla porównania: stara wersja (adaptacja tej odpowiedzi ) połączyła łańcuchy w niewłaściwej kolejności, więc musiałem dodać wartość,
flip(...)
która spowodowała, że była za długa (35 bajtów).źródło
["b","a","ab","aba","abaab"]
05AB1E ,
1211 bajtówDzięki Emignie za uratowanie bajtu!
Wykorzystuje kodowanie CP-1252 . Wypróbuj online!
źródło
̓
równie dobrze może być,G
jak nie używaszN
:)Galaretka ,
1110 bajtówWypróbuj online!
Jak to działa
źródło
”a”b;@Ṅ
część, ale nie mogłem dowiedzieć się, dokąd się udać ... teraz wiem :-)Java 7, 69 bajtów
bez golfa
źródło
a
ib
. Nie jestem jednak pewien, czy parametry"a"
i"b"
należy liczyć do liczby bajtów, ponieważ pytanie wyraźnie określa, że należy użyća
ib
. Nie znaczy to, że Java i tak wygra. ;)"a"
i"b"
) zamiast 69, ponieważ wyzwanie konkretnie wymagane dlaa
ib
, i metoda wycinana / zmienne wejście. Nie jestem pewien, jakie są zasady dotyczące czegoś takiego, ale osobiście uważam, że należy to policzyć. W przeciwnym razie możesz w niektórych językach mieć funkcję, która wykonuje funkcję parametru, a następnie po prostu podać całą funkcję wyzwania w parametrze, nie licząc jego bajtów. Brzmi jak reguła z typową luką.Emacs,
26, 25-ishProgram
#nnależy czytać jako klucz z cyframi (cyframi) n :
ARETBRETF3UPUPC-SPACEC-EM-WDOWNDOWNC-Y UPC-AC-SPACEC-EM-WDOWNC-EC-YRETF4C-#(n-2)F4
Wyjaśnienie
Przy n = 10
źródło
JavaScript (ES6),
4342 bajtyZapisano bajt dzięki @Arnauld
źródło
CJam,
1917 bajtówwyjaśnienie
źródło
p
powinna być;
. Możesz pozbyć się cytatów wokół wyniku, jeśli użyjeszn
zamiastp
. Na koniec'a'b
oszczędza dwa bajty"a""b"
.V , 18 bajtów
Wypróbuj online!
Lub bardziej czytelna wersja:
Wyjaśnienie:
źródło
MATL , 14 bajtów
Wypróbuj online!
źródło
Python 2, 55 bajtów
źródło
Siatkówka , 33 bajty
Wypróbuj online!
Zaoszczędź 10 (!) Bajtów dzięki @ MartinEnder !
Wyjaśnienie
Konwertuje dane wejściowe na jednoargumentowe, odejmuje
2
i dodajea
ib
, a następnie rekurencyjnie zastępuje pozostałe1
s łączeniem dwóch poprzednich ciągów.źródło
$%`
! a inne przechwytywanie było po prostu złym planowaniem ... Niesamowite, dziękuję!Partia,
10293 bajtyNa szczęście zmienne są rozwijane dla każdej linii, zanim przypisania zaczną obowiązywać, więc mogę ustawić obie
a
ib
używać ich starych wartości bez potrzeby tymczasowego. Edycja: Zapisano 9 bajtów dzięki @ nephi12.źródło
for /l %%i in (2,1,%1) etc..
@set a=a&set b=b
co w poprzednim. chociaż technicznie wszyscy mogliby być na tej samej linii ... ale to byłoby brzydkie ... hmm ...Stack my Golf, 63 bajty
Pobierz mój język tutaj: https://github.com/cheertarts/Stack-My-Golf .
Prawdopodobnie jest krótsza droga, ale jest to najbardziej oczywista.
źródło
Perl,
3635 bajtówObejmuje +3 za
-n
Policz na STDIN
fibo.pl
źródło
Perl, 45 +1 = 46 bajtów
+1 bajt dla flagi -n
Niewielka poprawa w stosunku do istniejącego 49-bajtowego rozwiązania, ale opracowana osobno. Nawiasy dla
say($a)
są konieczne, ponieważ w przeciwnym razie interpretuje to$a,($a,$b)=($b,$a.$b)
jako argument,say
którego wynikiem jest więcej śmieci niż potrzebujemy.Perl, 42 bajty
Oddzielne podejście od powyższego rozwiązania:
Nie jestem jeszcze przekonany, że nie mogę połączyć transliteracji i zamiany w jedną krótszą operację. Jeśli go znajdę, opublikuję go.
źródło
Swift 3, 76 bajtów
źródło
Perl, 48 bajtów
47 bajtów kod + 1 dla
-n
.Proste podejście. Spróbuj użyć fragmentu tablicy pierwotnie,
$a[@a]="@a[-2,-1]"
ale to wymaga$"=""
lub jest podobne :(. Oszczędź 1 bajt dzięki @ Dada !Stosowanie
źródło
@;
zamiast,@a
więc możesz pominąć ostatni średnik (rozumiesz, co mam na myśli?). (Wiem, jeden bajt jest dość tani, ale nie miałem lepszego pomysłu ..)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.
ale nie sądziłem, że byłoby sprawiedliwie dodać jako odpowiedź, gdybym nie mógł uruchom to!-pe
zamiast-nE
? W każdym razie działa na moim, więc prawdopodobnie jest to związane z twoją wersją lub systemem Perla ... Ale zaufaj mi, przetestowałem to i działa! ;)-nE
(nie wiem skąd się-pe
wziął! Musi być piątek ...) Zaktualizuję to, gdy dostanę mo! Dzięki za udostępnienie!SOML , 8 bajtów (niekonkurencyjny)
wyjaśnienie:
Powodem, dla którego nie jest konkurencyjny, jest to, że ten język jest wciąż w fazie rozwoju i podczas pisania tego dodałem kilka nowych funkcji.
Również pierwszy post na PPCG!
źródło
05AB1E, 15 bajtów
źródło
C , 156 bajtów (bez wcięcia)
Dwa bufory (u & v) przechowują ostatnie dwa wiersze. Najnowsza linia (śledzona za pomocą dwóch wskaźników: start = c, end = d) jest dołączana do najstarszej (start = a, end = b). Zamień (a, b) i (c, d) i zapętl. Zwróć uwagę na rozmiar bufora przed zażądaniem zbyt dużej liczby linii. Nie tak krótki (jak można się spodziewać po języku niskiego poziomu), ale dobrze się bawił.
źródło
5
ale powinien to być wkład użytkownikaGiven N (2 <= N), print N lines of the letter Fibonacci series like this (i.e. N = 5)
N
a nie naprawiony. Lub użytkownik może być kimś, kto używa twojej funkcji / programu.PHP,
6362 bajtyWersja rekurencyjna:
źródło
return
Pyth , 17 bajtów
Program, który pobiera liczbę całkowitą i wypisuje wynik.
Wypróbuj online!
Jak to działa
źródło
Pyth -
1615 bajtówWypróbuj online tutaj .
źródło
APL, 30 bajtów.
⎕IO
musi być1
.źródło
Mathematica, 49 bajtów
Definiuje funkcję
g
przyjmującą pojedyncze dane liczbowe; zwraca listę ciągów znaków. Prosta implementacja rekurencyjna za pomocą operatora łączenia ciągów<>
.Mathematica, 56 bajtów
Funkcja bez nazwy, taki sam format wejścia / wyjścia jak powyżej. To rozwiązanie wykorzystuje alternatywny sposób generowania ciągów: każdy ciąg na liście jest wynikiem jednoczesnego zastąpienia, w poprzednim ciągu, wszystkich wystąpień „a” na „b” i wszystkich wystąpień „b” na „ab”.
źródło
Groovy, 79 bajtów
źródło
PHP, 53 bajty
źródło
$b
ciąg.C ++ 11,
8998 bajtów+7 bajtów dla wszystkich linii, nie tylko ostatniej. +2 bajty więcej za
N
liczbę wydrukowanych linii, a nie niektóre rzeczy oparte na 0.Stosowanie:
źródło
Rubinowy (1.9+) 46 bajtów
źródło