Wyzwanie
Biorąc pod uwagę liczbę całkowitą, zwróć pierwszą liczbę Fibonacciego, która zawiera dane wejściowe w sobie, wraz z indeksem tej liczby Fibonacciego (indeksy zaczynające się od 0 lub 1 - zależnie od ciebie, ale proszę wspomnij o tym w odpowiedzi). Na przykład, jeśli podano wartość 12, program powróciłby, 26: 121393
ponieważ 12 znajduje się w liczbie ( 12 1393) i ma indeks 26 liczb Fibonacciego.
Przykłady
Biorąc pod uwagę wkład:
45
Twój program powinien wypisać:
33: 3524578
Wkład:
72
Wynik:
54: 86267571272
Wkład:
0
Wynik:
0: 0
Wkład:
144
Wynik:
12: 144
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w każdym języku.
Odpowiedzi:
Galaretka , 10 bajtów
Wypróbuj online!
Jak to działa
źródło
D
też ...Python 2 , 56 bajtów
Wypróbuj online!
źródło
Perl 6 , 30 bajtów
Wypróbuj online!
first
jest funkcją, która zwraca pierwszy element sekwencji, która przechodzi test, i wygodnie przyjmuje:kv
przysłówek, który mówi mu, aby zwrócił zarówno klucz (indeks), jak i pasującą wartość.źródło
:p
przysłówka zamiast:kv
.Partia, 104 bajty
Działa z
n=0..45
powodu ograniczonego zakresu arytmetyki liczb całkowitych Batcha. Objaśnienie: Partia nie ma wbudowanego testu dopasowania, ale ma operator, który może zastąpić dosłowne ciągi innymi literałowymi ciągami, więc na przykładif "%s:l=%"=="%s%"
jest prawdą, jeśli%s%
nie jest pusty, ale nie zawieral
. Użyciecall
jest wtedy sztuczką, aby zastąpić%1
(dane wejściowe) operator zastępczy, jednakcall
nie działa na instrukcjach przepływu sterowania, więc konieczne jest tymczasowe przypisanie pośrednie.źródło
Galaretka , 15 bajtów
Wypróbuj online!
źródło
JavaScript ES6, 68 znaków
Test:
źródło
Python 3, 76 bajtów
źródło
Emojicode , 133 bajty
Wypróbuj online!
źródło
Dyalog APL, 39 bajtów
Korzystanie z rekurencji ogona. Nie próbuj 72, to zepsuje twoją maszynę, ponieważ przelicza fibonacciego po każdym połączeniu.
Wypróbuj online!
źródło
Mathematica, 119 bajtów
1-indeksowany
Wypróbuj online!
źródło
Właściwie 13 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
R, 65 bajtów
Standardowa rekurencja do generowania Fibnum, ale zamiast kończenia na podstawie
n
, kończy się, gdyb
pasuje do wyrażenia regularnegox
. To faktycznie działa zaskakująco dobrze. Założyłem, że użycie wyrażenia regularnego z cyframi wymagałoby wiele kłopotów z konwersją ich na ciągi, ale nie wydaje się to konieczne :)Musi to również przekroczyć rekurencję o 1 krok, zaznaczając
b
zamiast,a
a następnie odejmując1
odn
. Ma to na celu upewnienie się, żef(0)
działa poprawnie.Nie udaje się to w przypadku większości wartości, gdy wartość wejściowa przekracza
1001
, z powodu wartości maksymalnej. Jeśli zastąpimya
ib
dla bigintów, działa to na wyższe nakłady (bieżące testowanie jest nax = 11451
)źródło
JavaScript ES6,
797875 bajtów-1 bajt po kurie
-3 bajty autorstwa Neila
źródło
eval()
zamiast,{ return}
aby zapisać bajt, i możesz upuścić,t=
ponieważ nie używasz rekurencji:i=>eval('d=a=b=1;while(!~(a+"").indexOf(i+""){c=b;b=a+b;a=c;d++};d+": "+a')
String.prototype.indexOf
automatycznie konwertuje swój parametr na ciąg, nie trzeba tego robić jawnie. Wygląda na to, że skopiowałeś literówkę @ StepHen (masz więcej(
niż)
s).C # (.NET Core) , 99 bajtów
Wypróbuj online!
Pobiera dane wejściowe jako liczbę całkowitą, zwraca ciąg z danymi wyjściowymi.
źródło
Haskell , 84 bajty
Wypróbuj online!
źródło
PHP, 80 bajtów
Skrypt jest dość prosty, po prostu przechowuje bieżące i następne warunki sekwencji w $ a i $ b przez cały czas. Aby umożliwić zerowy semestr 0, $ a i $ b są początkowo przypisywane wartości odpowiednio dla 1-szego składnika (1) i 0-tego składnika (0).
Obie wartości są ponownie obliczane w jednym wyrażeniu, które jest dwoma przypisaniami w jednym; efektywnie:
Jeśli wartość wejściowa pasuje do początku terminu, funkcja strpos () zwróci 0 (co jest falsey i dałoby fałszywy negatyw), ale w Wonderphul World PHP, chociaż
false == 0
jest prawdą ifalse < 0
fałszem,false < -1
jest prawdą! Tak więc użycie tego porównania pozwala zaoszczędzić pięć bajtów w porównaniu do!==false
.źródło
Japt ,
1714 bajtówZaoszczędź 3 bajty dzięki @JustinMariner
Wypróbuj online!
Wyjaśnienie
źródło
_ŬøU}a@[XMgX]
. Używanie ws1 q
celu zdobycia ostatniego przedmiotu, który pozwala upuścić<space>s
PHP ,
163141 bajtówWypróbuj online!
Wykorzystuje
$b[0] = 0;
i$b[1] = 1;
do rozpoczęcia sekwencji Fibźródło
Perl 5 , 67 + 1 (-p) = 68 bajtów
Wypróbuj online!
źródło
PHP , 93 bajty
Prosta pętla przez sekwencję Fibonacciego. Sprawdzanie naszego numeru wejściowego odbywa się w
strpos(" $a[$i]","$argv[1]")
; dodatkowa spacja polega na tym, żestrpos
zwróci false-y, jeśli „igła” zostanie znaleziona na początku łańcucha. Kończymy, jeśli dane wejściowe zostaną znalezione, i wygenerujemy wymagany ciąg znaków.Wypróbuj online!
źródło
Common Lisp, 105 bajtów
Wypróbuj online!
źródło