Znaczenia tablicą jest tablica dodatnimi liczbami całkowitymi, gdzie bezwzględnych różnic między kolejnymi elementami są wszystkie mniejsze niż lub równe 1 .
Na przykład poniższa tablica jest nieistotna:
[1, 2, 3, 4, 3, 4, 5, 5, 5, 4]
Ponieważ odpowiadające (bezwzględne) różnice to:
[1, 1, 1, 1, 1, 1, 0, 0, 1]
Które są mniejsze lub równe 1 .
Twoim zadaniem jest ustalenie, czy dana tablica liczb całkowitych jest nieistotna.
- Możesz założyć, że tablica zawsze zawiera co najmniej dwa elementy.
- Obowiązują standardowe reguły wejścia i wyjścia . Możesz pobierać dane wejściowe (i wyjściowe) w dowolnym rozsądnym formacie.
- Domyślne luki są zabronione.
- Wartości prawdy / fałszu muszą być wyraźne i spójne.
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Przypadki testowe
Wejście -> Wyjście [1, 2, 3, 4, 3, 4, 5, 5, 5, 4] -> prawda [1, 2, 3, 4, 5, 6, 7, 8, 9, 8] -> prawda [3, 3, 3, 3, 3, 3, 3] -> prawda [3, 4, 4, 4, 3, 3, 3, 4, 4, 4] -> prawda [1, 2, 3, 4] -> prawda [5, 4, 3, 2] -> prawda [1, 3, 5, 7, 9, 7, 5, 3, 1] -> fałsz [1, 1, 1, 2, 3, 4, 5, 6, 19] -> fałsz [3, 4, 5, 6, 7, 8, 7, 5] -> fałsz [1, 2, 4, 10, 18, 10, 100] -> fałsz [10, 20, 30, 30, 30] -> fałsz
Użyłem wartości true
i false
.
code-golf
number
array-manipulation
decision-problem
Martin Ender
źródło
źródło
Odpowiedzi:
Galaretka , 3 bajty
Wypróbuj online!
W jaki sposób?
Idealne wyzwanie dla galaretki.
źródło
P
nie zadziałałoby, bo gdyby wszystkie różnice byłyby1
wyprowadzone1
, ale gdyby jedna z nich była0
wyprowadzona0
? A jeśli jedna różnica byłaby,5
ale jedna0
byłaby nadal skuteczna0
?JavaScript (ES7),
3329 bajtówZaoszczędź 4 bajty dzięki @JohanKarlsson
W jaki sposób?
Po wymuszeniu na
Number
tablice co najmniej dwóch elementów są oceniane naNaN
. Ponowne użycie wejścia a jako zmiennej przechowującej poprzednią wartość powoduje , że pierwsza iteracja niektórych () zawsze powoduje ([v0, v1, ...] - a [0]) ** 2 = NaN , bez względu na wartość [0] . Tak więc pierwszy test jest zawsze fałszywy, a rzeczywiste porównania rozpoczynają się od drugiej iteracji, tak jak powinny.Przypadki testowe
Pokaż fragment kodu
źródło
a=>!a.some(v=>(a-(a=v))**2>1)
Python 3 , 40 bajtów
Wypróbuj online!
źródło
Mathematica, 24 bajty
źródło
#==Clip@#&@*Differences
jest o jeden bajt krótszy.Python 2 , 35 bajtów
Występuje z kodem statusu 1 dla nieistotnych tablic, z kodem stanu 0 w przeciwnym razie.
Wypróbuj online!
źródło
Łuska , 4 bajty
Wypróbuj online!
Wyjaśnienie:
źródło
Oktawa , 21 bajtów
Anonimowa funkcja, która wprowadza wektor numeryczny i wypisuje dane,
1
jeśli są nieistotne lub0
inne.Wypróbuj online!
źródło
Haskell ,
3433 bajtyWypróbuj online! -1 bajt dzięki @ user1472751
Rozwiązanie bez punktów to
jedendwa razytylko jeden bajt ( dzięki -1 bajtowi @Dennis ) krótszy niż podejście rekurencyjne:Wypróbuj online!
źródło
Pyth , 6 bajtów
Sprawdź wszystkie przypadki testowe.
Pyth , 8 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
I#
zamiastM
.Proton , 41 bajtów
Wypróbuj online!
-16 bajtów dzięki Mr. Xcoder
-2 bajty
-6 bajtów dzięki Mr. Xcoder
źródło
<2 for
można pominąć.Japt , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
C # (.NET Core) ,
514544 + 18 bajtów-1 bajt dzięki Jeppe Stig Nielsen
Liczba bajtów obejmuje również:
Wypróbuj online!
Wyjaśnienie:
źródło
a=>a.Zip(a.Skip(1),(x,y)=>x-y).All(x=>x*x<4)
pozwala uniknąć negacji!
.Perl 6 , 25 bajtów
Wypróbuj online!
To powinno być dość czytelne. Jedyną mniej oczywistą rzeczą jest to, że operator zip
Z
przestanie zipować, gdy wyczerpana zostanie krótsza lista (usuwamy pierwszy element listy po prawej stronie) i że pusty indeks dolny.[]
, tak zwany plasterek Zen, daje całą listę..skip
zwraca listę bez pierwszego elementu.źródło
.rotate
tutaj nie jest to potrzebne.-2<
zamiast-1≤
i<2
zamiast≤1
zapisywać kolejne cztery bajty.2>...>-2
aby uniknąć<
błędnej interpretacji .R ,
3026 bajtówWypróbuj online!
źródło
function(a)all(diff(a)^2<2)
oszczędza 3 bajty.all(diff(scan())^2<2)
scan
, ale nadal oszczędza bajt!05AB1E , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
[5,2]
przykład nie zadziała .Ohm v2 , 4 bajty
Wypróbuj online!
W jaki sposób?
źródło
PowerShell , 62 bajty
Wypróbuj online!
PowerShell nie posiada
.map
lub.some
lub podobne polecenie, więc tutaj mamy indywidualnie sprawdzanie każdego deltę.Bierzemy dane wejściowe
$a
i ustawiamy$l
równe pierwszemu elementowi. Następnie przechodzimy przez pętlę$a
i wyjmujemy każdy element, w którym|?{...}
różnica$_-$l
jest-in
zakresem1,0,-1
. Następnie ustawiamy$l
równy bieżącemu elementowi. Mamy teraz kolekcję elementów, w których delta między ich poprzednim sąsiadem wynosi 1. Bierzemy.count
to i sprawdzamy, czy jest ona-eq
równa.count
całej tablicy. Jeśli tak, to każda delta ma wartość 1 lub mniej, więc jest to niewielka tablica. Ten wynik logiczny jest pozostawiany w potoku, a dane wyjściowe są niejawne.źródło
$l=($a=$args)[0]
$l
w Twojej sugestii jest ustawiona cała tablica wejściowa.$args
jest sama cała tablica. Przykład$args
. Jeśli wywołałeś skrypt lub funkcję z szeregiem argumentów oddzielonych spacjami, pojawiłby się on jako osobne elementy w$args
, a dla TIO właśnie to naśladuje. Osobiście korzystałem z niego w ten sposób wiele razy wcześniej, ale każdemu z nich :)Python 3 , 45 bajtów
Wypróbuj online! lub Wypróbuj zestaw testowy.
Podziękowania dla Jonathana Frecha za -2 bajty.
źródło
abs(x-y)<2
->-2<x-y<2
.Java (OpenJDK 8) , 78 bajtów
Wypróbuj online!
źródło
MATL ,
65 bajtów-1 bajt dzięki Giuseppe
Wypróbuj online! lub Zweryfikuj wszystkie przypadki testowe
źródło
d|2<
zamiast tego, ponieważ tablica z zerową wartością jest falsey w MATL.d|2<A
coś bliższego oryginalnej odpowiedzi.anyfix , 9 bajtów
Wypróbuj online!
Jest to głównie port rozwiązania 05AB1E, z wyjątkiem strasznego, ponieważ anyfix nie ma autowektoryzacji i innych fajnych rzeczy
źródło
C,
6156 bajtówDzięki @scottinet za uratowanie pięciu bajtów!
Wypróbuj online!
C (gcc), 47 bajtów
Wypróbuj online!
źródło
r
zamiast go zwracając. :-)Clojure, 35 bajtów
Jak to jest miłe?
źródło
TI-Basic,
67 bajtówlub 5 bajtów, jeśli błędy liczą się jako poprawna wartość zwracana (zwraca,
ERR:ARGUMENT
jeśli nieistotna, w przeciwnym razieERR:DOMAIN
)źródło
abs(ΔList(Ans
, inaczej spadnie o więcej niż 1 (na przykład w {5,3,1} lub w przypadku testowym {3,4,5,6,7,8,7,5}) wykryty.JavaScript (ES6),
3736 bajtówEdycja: Zapisano 1 bajt kradnąc sztuczkę @ Arnauld.
źródło
a=>u=>!a.some(e=>(e-=(u=e))>1|e<-1)
Pyth, 7 bajtów
Pakiet testowy
Zwraca true / false.
Wyjaśnienie:
źródło
Mathematica, 34 bajty
Wyjaśnienie
źródło
Java (OpenJDK 8) , 60 bajtów
Wypróbuj online!
źródło
r
w pętli, aby obliczyć(p-n)
tylko raz,>>1
można/2
lub usunąć, jeśli użyjesz|
zamiast+
:a->{int r=1,p=a[0];for(int i:a)r|=(r=p-(p=i))*r;return r<2;}
(60 bajtów).Swift 4, 52 bajty
Zestaw testowy:
źródło
APL, 13 bajtów
Pierwsza odpowiedź APL \ o /
Uwaga: Jestem botem należącym do Hyper Neutrino. Jestem głównie do testowania czatów.
Wyjaśnienie
źródło
∧/2>(|2-/⊢)