W przypadku tego kodu golfowego otrzymasz dane wejściowe sekwencji fib onacci, to znaczy normalnej sekwencji Fibonacciego, ale z jedną liczbą niepoprawną. Zobacz, sekwencja się faluje ! Zdobyć?:D
Twoim zadaniem jest ustalenie, który numer jest niepoprawny, i wydrukowanie indeksu (na podstawie 0) tego numeru.
Na przykład:
Input : 1 1 2 9 5 8 13
Output: 3
Input : 8 13 21 34 55 80
Output: 5
Input : 2 3 5 5 13 21
Output: 3
Dane techniczne:
- Sekwencja może zaczynać się od dowolnej liczby.
- Pierwsze dwie liczby danych wejściowych zawsze będą poprawne.
- Wygrywa najkrótszy kod (liczba znaków).
8
jest to nieprawidłowe, ponieważ nie jest równe9+5
Odpowiedzi:
GolfScript (18 znaków)
Kluczem do skrócenia czasu jest ? (odnaleźć).
źródło
~]:^,
J,
3023źródło
Golfscript,
3128262523źródło
APL (19)
Wyjaśnienie:
k←⎕
: przechowuj dane wejściowe użytkownika wk
2+/k
: zsumuj każdą parę elementów wk
(tj.1 1 2 3
->1+1 1+2 2+3
->2 3 5
)1↓1⌽k
: obróćk
w prawo o 1, a następnie upuść pierwszy element (tj.1 1 2 3
->2 3 1
)≠
: znajdź miejsce, w którym te listy nie są sobie równe1⍳⍨
: znajdź lokalizację pierwszego1
na tej liście (lokalizacja niepoprawnego numeru)1+
: dodaj 1, aby skompensować upuszczony elementźródło
K, 32
źródło
dc,
3632dc
jest kalkulatorem odwrotnym do polskiego, więc oczywiście trzeba wprowadzać liczby w odwrotnej kolejności;)źródło
JavaScript (
6968616055)(60)
(61)
(68)
(69)
źródło
Awk: 55
źródło
JavaScript, 70
źródło
Ruby, 66
Moja pierwsza próba (nieco) skomplikowanego programu Ruby:
źródło
gets.split
się$*
(ARGV
) w celu wejścia jako argumentów wiersza poleceń zamiast na standardowym strumieniu wejściowym. Przestrzeń pomiędzyp
i$*
można wtedy bezpiecznie usunąć.Python, 74
Najpierw miałem to rozwiązanie, ale Doorknob odpowiedział na pytanie o format danych wejściowych tuż przed jego opublikowaniem:
Python, 66
Zakłada wejście oddzielone znakiem nowej linii.
źródło
VB.net (77)
Zakładając, że liczby są już w IEnumerable (Of Integer).
źródło
JS, 52B
źródło
Matlab / Octave, 39 bajtów
Dzięki Stewie Griffin za uratowanie bajtu! (
-
instread of~=
)Jest to anonimowa funkcja, która wprowadza tablicę i wyprowadza liczbę.
Wypróbuj online!
źródło
Kotlin , 77 bajtów
Upiększony
Test
źródło
Python (90)
źródło
Mathematica 59
Ponieważ wymagane jest wprowadzanie znaków rozdzielanych spacjami,
StringSplit
należy je zastosować. Poniżej założono, że dane wejściowe mają postać ciągui
.źródło
Haskell, 48
źródło
Galaretka , 11 bajtów
Wypróbuj online!
źródło
QBIC , 31 bajtów
Wyjaśnienie
Nie jestem pewien, czy jest to dozwolone; sekwencja jest wprowadzana pojedynczo, a program przerywa działanie po błędzie, a nie po wprowadzeniu całej sekwencji.
źródło