Wyzwanie
Napisz program, który pobiera tablicę 4 liczb całkowitych ( która reprezentuje sekwencję liczb wygenerowaną przez określony algorytm ) i zwraca następną liczbę całkowitą, która będzie następować.
Będziemy używać tylko prostych algorytmów dodawania, odejmowania, mnożenia i dzielenia ze zmienną stałą (tj. Niezmienną).
Do podziału użyjemy floor
wartości całkowitych: 133/4 = 33
i33/4 = 8
Możesz założyć, że zawsze będzie jedna poprawna wartość zwracana
Przypadki testowe
[14,24,34,44]
powinien zwrócić 54 (algorytm dodawania)
[105,45,-15,-75]
powinien zwrócić -135 (algorytm odejmowania)
[5,25,125,625]
powinien zwrócić 3125 (algorytm multiplikatywny)
[256,64,16,4]
powinien zwrócić 1 (algorytm podziału)
Główne zasady
- To jest golf golfowy , więc najkrótsza odpowiedź w bajtach wygrywa.
- Standardowe luki są zabronione
-81/4
jest albo21 r 3
czy-20 r -1
.Odpowiedzi:
05AB1E ,
181618 bajtówWyjaśnienie
Wypróbuj online!
źródło
[-325, -82, -21, -6]
JavaScript (ES6),
444244 bajty (stały)Zapisano 2 bajty, zgodnie z radą IsmaelMiguel.
Naprawiono wersję dla
[2,1,0,0]
i[1,0,0,0]
jak sugeruje edc65Wersja 30 bajtów
Dla przypomnienia, moją pierwszą próbą było
3230 bajtów, ale brakowało obsługi floor () dla podziału. Nie działa również w szczególnych przypadkach, takich jak[2,1,0,0]
i[1,0,0,0]
.Próbny
źródło
[a,b]=>
dla parametrów funkcji. Nawiasy są wymagane.b*2==c+a
algorytmu dodawania / odejmowania <=>Brachylog ,
373327 bajtówWypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
Zaoszczędź 10 bajtów dzięki @LeakyNun .
Wyjaśnienie
Jak wskazał LeakyNun, nie potrzebujemy wielkości odejmowania, ponieważ
I
może to być dowolna liczba całkowita.źródło
Haskell, 65 bajtów
źródło
Python 2, 40 bajtów
To dosłownie odpowiedź JS przeniesiona do Pythona (dzięki @LeakyNun!). Moje poprzednie podejście było absurdalnie długie, ale oto:
Python 2,
169166 bajtówDrugi i trzeci poziom to odpowiednio surowa karta i surowa karta plus spacja, która bardzo źle gra z Markdown, więc karty zostały zastąpione 2 spacjami.
Dość proste; wypróbowuje każdą stałą i operator, który według niej może być stałą, to jeśli kombinacja stała / operator działa dla każdego elementu na liście (przy użyciu
try
/except
pary aby uniknąćZeroDivisionError
s), wypisuje wynik dla ostatniego elementu na liście.Jestem pewien, że jest tutaj lepsza metoda, to naiwna metoda.
źródło
[1,0,0,0]
które powinny dać wynik0
TSQL, 55 bajtów
Ten skrypt próbuje dodawać i odejmować w ramach tej samej kontroli, a następnie próbuje się pomnożyć, jeśli to się nie powiedzie, musi to być podział.
Skrzypce
źródło
C #, 63 bajty
Sprawdza, czy różnica między pierwszym i drugim elementem jest taka sama, jak różnica między drugim i trzecim elementem. Jeśli tak, dodaje / odejmuje, w przeciwnym razie dokonuje mnożenia / dzielenia.
źródło
JavaScript, 73 bajty
Testy :
Działa dla nich wszystkich.
źródło
GameMaker Language, 70 bajtów
źródło
R,
6874Tablica: 68 bajtów
4 wejścia: 45 bajtów
Roztwór Bonus
log
,exp
,var
, 71 bajtówaktualizacja: dzielenie liczb całkowitych
źródło
b-a
aby zaoszczędzić bajt (i zauważam, że twoje przykładowe wywołania dodają spacje).261,65,16,4
Zwraca (0.9961686
zamiast1
oczywiście (w pytaniu powinno być w tym przypadku test).Jawa,
125123 bajtyGra w golfa:
Nie golfowany:
Ten kod z pewnością ma pewne problemy, ponieważ nie obsługuje dzielenia przez zero i takie rzeczy. Oczywiście to również nie zadziała, jeśli w tablicy wejściowej znajduje się więcej (lub mniej) 4 liczb całkowitych
a
. Co czyni go bardziej głupim, ale dobrze się bawiłem :)Wypróbuj: https://ideone.com/nELH5I
źródło
TI-Basic, 37 bajtów
Działa na dowolnym kalkulatorze TI-83/84
źródło
Python 2,
75 66 6561 bajtówZnacznie dłużej niż mój poprzedni 38-bajtowy wpis, który nie spełniał poprawnie serii podziałów (tak jak większość innych nie).
Przypadki testowe i więcej przypadków na krawędzi są na ideone
Uwaga: podział całkowitą o ujemnej jest tu zdefiniowane jako posiadające resztę o tym samym znaku, co dzielnik, więc
-81/4
będzie-21
w dalszej części3
, a-81/-4
będzie20
z resztą-1
.źródło
-81/-4 != -21
Galaretka , 14 bajtów
Wypróbuj online!
źródło
Pyth, 18 bajtów
Akceptuje dane wejściowe jako listę wartości oddzieloną znakiem nowej linii.
Wypróbuj online!
Wyjaśnienie:
źródło