Sekwencja n> 0 liczb całkowitych nazywana jest zworką, jeśli wartości bezwzględne różnicy między kolejnymi elementami przyjmują wszystkie wartości od 1 do n-1.
Zatem sekwencja [4,1,2,4] ma bezwzględne różnice [3,1,2], które są równoważne zestawowi [1,2,3] (1 do n-1, gdzie n jest długością oryginalnej sekwencji) dlatego jest to wesoły sweter.
Sekwencje mają długość n> 0.
Załóżmy, że n = 1 to wesoły skoczek.
Tryb łatwy: Nie martw się o standardowe wejście / standardowe wyjście. Tylko funkcja, która akceptuje argumenty i zwraca coś , co wskazuje na wesołość lub nie
Tryb trudny: Wejście na stdin (oddzielone spacją), a wyjście to „Jolly” / „Not jolly”. Kwestie kapitalizacji.
To jest kod golfowy.
EDYCJA: Sekwencje mogą zawierać ujemne liczby całkowite, a wejście na standardowe wejście jest oddzielone spacją.
$ jolly 2 -1 0 2
Jolly
$ jolly 19 22 24 25
Jolly
$ jolly 19 22 24 21
Not jolly
Odpowiedzi:
Haskell
Łatwe 4 znaki
Zwraca listę wesołych liczb całkowitych wtedy i tylko wtedy, gdy jako dane wejściowe podano listę wesołych liczb całkowitych. Jest to legalne w oparciu o „Tylko funkcję, która akceptuje jednak argumenty i zwraca coś, co wskazuje na wesołość lub nie”.
Alternatywne łatwe rozwiązanie z 61 znakami:
Pobiera listę i zwraca pustą listę, jeśli sekwencja jest wesoła.
źródło
[1,3]
nie jest wesoły, prawda? Myślę, żelength n-1
zamiast tego musisz powtórzyć .Ruby,
9293 znakówWersja trudna z wejściem na STDIN.
Jeśli zaczniesz od
-pa
(liczy się 4), możesz zapisać 5 znaków:źródło
-pa
.Java (twarda)
Zakłada, że dane wejściowe są przekazywane przez standardowe wejście. (nie poprzez argumenty wiersza poleceń jak w przykładzie)
Gra w golfa - 325
Bez golfa
źródło
Scala, tryb łatwy, 123 znaki
Aby uruchomić lub przetestować na ideone.com:
źródło
Golfscript, tryb łatwy,
2118 znakówAkceptuje argumenty jako tablicę liczb całkowitych na stosie, bez żadnych innych elementów na stosie; pozostawia 1 na stosie, jeśli jest wesoły, a 0 w przeciwnym razie. Aby wziąć wejście na stdin jako oddzieloną spacjami listę liczb całkowitych, poprzedź
i wypisać „Jolly” / „Not jolly” (zakładając, że przekształcamy to w program) po zakończeniu
źródło
[4 1 2 4]
Nie4 1 2 4
).J (łatwy), 18
J (trudny), 68
źródło
Brachylog , 11 bajtów (łatwy)
Wypróbuj online!
s₂ᶠ-ᵐ
- Kolejne różniceȧᵐ
- Wartości bezwzględneo
- Sortuj~⟦₁
- Czy wynikiem jest zakres od 1 do czegoś?źródło
J, 30
26tryb łatwy, 8176tryb trudnyedycja: obsługa list krótszych niż 3, poprawianie odczytu standardowego
Pierwsza linia zajmuje tryb łatwy, druga dodaje tryb trudny.
J czyta ogólnie od prawej do lewej:
2-/\
: na każde dwa kolejne numery na liście weź różnicę|
: całkowita wartość/:~
: sortuj rosnąco>:@i.@#
: 1 do n , dla listy n liczb=
: porównaj posortowane różnice z sekwencją (używając „widelca” J)*/
: pomnóż wszystkie elementy logiczne; jeśli wszystkie porównania były równe 1, ich iloczyn wynosi 1, więc jest wesołyźródło
1 3
.Rubin,
97102106(twardy)Może również, ponieważ wszyscy inni to:
Dane wejściowe pobrane na standardowe wejście.
źródło
(1..d.size).to_a
przez[*1..d.size]
. Przełączanie operandów jest teraz możliwe, zapisuje kolejny (łącznie -5 znaków).re
łatwe (
10383 znaków)zwraca sumę 1..i. długości na Jolly inną liczbę, jeśli nie (tutaj trochę zasad)
twardy (142 znaki)
dane wejściowe są rozdzielane białymi znakami i kończą się na EOF
źródło
Groovy
Łatwe: 78
Trudny: 151
źródło
PowerShell, twardy,
117126Historia:
$null
na nieistniejącą zmiennąźródło
Scala
Szybkie dźgnięcie - prawdopodobnie możliwe są ulepszenia.
Łatwe: 77
Trudne: 124
źródło
Q, 64 (trudny), 30 (łatwy)
ciężko
łatwo
źródło
J (łatwy), 19 znaków
Stosowanie:
Różni się podobnie do odpowiedzi DCharness , i dodałbym to tylko jako komentarz, ale z uwagi na fakt, że nie odwiedził go od 23 lutego.
2-/\
bierze różnicę między kolejnymi parami liczb,|
pobiera wartość bezwzględną każdej liczby,/:~
sortuje w kolejności rosnącej,<:
zmniejsza każdą liczbę o 1,(=i.@#)
hak J który generuje sekwencje liczb od 0 do długości listy Różnice - 1 (i.@#
) i porównuje ją z tej listy=
.*/
wielokrotności lista1
s i0
s generowane przez poprzedniego czasownika.źródło
x-:y
zamiast*/x=y
uratować postać.Scala easy: 138153,
170(był błędny, poprawiony później)bez golfa:
Chodzi o to, że budujemy drugą pochodną:
Scala hard 172
182, 205(był błędny / poprawiony):mniej więcej tak samo jak powyżej.
źródło
4 1 2 5
zwracają wartość true. Nadal jednak nie udało mi się obejść tego lewego zagięcia ...readLine
pobiera dane z konsoli, a nie ze standardowego ... (ale możesz użyćargs
zamiast tego)j("1")
rzucaUnsupportedOperationException: empty.max
PHP, łatwa, 129
Dla danej tablicy
$s
liczb całkowitych:Wersja bez golfa:
źródło
Galaretka ,
76 bajtów (łatwa)Wypróbuj online!
Pobiera dane wejściowe jako liczby oddzielone przecinkami w pierwszym argumencie. Zwraca 1, jeśli sekwencja jest wesoła, a 0, jeśli nie!
7-bajtowe rozwiązanie:
Wypróbuj online!
Pobiera dane wejściowe jako liczby oddzielone przecinkami w pierwszym argumencie. Nic nie zwraca, jeśli lista jest wesołą sekwencją zworek i coś w tym rodzaju jeśli nie jest.
Dodanie tej linii sprawia, że działa ona z twardą specyfikacją:
Galaretka ,
2722 bajtów (twarda, mile widziane opinie!)Wypróbuj online!
27-bajtowe (twarde) rozwiązanie:
Wypróbuj online!
Włącza liczby oddzielone spacją
stdin
i „Jolly” lub „Not jolly”.Wyjaśnienie:
Wszelkie opinie bardzo mile widziane!
źródło
LR
jestJ
. Jeśli napiszesz coś takiegoIAṢ⁼J$
, uzyskasz ładny wynik 1/0 i możesz użyć tego do indeksowania w“Not jolly“Jolly”
:ɠḲVIAṢ⁼J$ị“¢⁼D“¡KṀȥƘạ»
⁼
atomie, przydatna do porównania tylko części list.Haskell ,
5957 bajtówTryb łatwy, zwraca radość jako wartość logiczną. Dzięki @Laikoni za dwa bajty.
Wypróbuj online!
źródło
Japt ,
3230 bajtów Hard-2 bajty od @Shaggy
Wypróbuj online!
źródło
Python 3, 117 (trudny)
Wypróbuj online!
źródło
JavaScript: 105 (tryb łatwy)
Gra w golfa:
Bez golfa:
źródło
Perl, 89 (trudny)
86 znaków kodu + 3 do uruchomienia z
-p
opcjąźródło
JavaScript (trudny): 138
źródło
źródło
R, łatwa, 110
Stosowanie:
źródło
Python, 72 (łatwy), 114 (trudny)
Łatwo:
Trudne :
źródło
Python, 255 znaków
źródło
C, 119 (trudny), 97 (łatwy)
Łatwe rozwiązanie odczytuje dane wejściowe z argumentów i zwraca 0 jako kod wyjścia, jeśli dane wejściowe to wesoła sekwencja zworek:
źródło
APL (
504947, twardy)Łatwe (24):
Funkcja przyjmuje tablicę i zwraca 0 lub 1.
źródło