Wyzwanie
Biorąc pod uwagę listę, ustal, czy pogrupowanie listy w serie rosnących i malejących elementów da listę o jednakowych rozmiarach.
Innymi słowy, „punkty zwrotne” listy są rozmieszczone równomiernie.
Przykład
Oto przykład: 0, 3, 7, 5, 2, 3, 6
0, 3, 7
wzrasta, 7, 5, 2
maleje i 2, 3, 6
wzrasta. Dlatego jest to prawdą.
Inny przykład: 1, 4, 6, 8, 5, 3, 5, 7, 9
1, 4, 6, 8
wzrasta, 8, 5, 3
maleje i 3, 5, 7, 9
wzrasta. Dlatego jest to fałsz.
Zasady i specyfikacje
- Żadne sąsiednie elementy nie będą sobie równe
- Można założyć, że wszystkie liczby mieszczą się w rozsądnym zakresie liczb w Twoim języku
- Możesz założyć, że wszystkie liczby są liczbami całkowitymi, jeśli pomoże ci to w golfie
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź
- Wprowadź jako listę w dowolnej uzasadnionej reprezentacji i wyślij jako dowolną wartość prawdy / fałszu. Dwie wartości muszą być spójne.
Przypadki testowe
Input -> Output
1, 3, 5, 8, 6, 4, 2, 3, 5, 7, 6, 4, 2, 5, 7, 9, 6, 4, 2 -> True
1, 3, 5, 7, 6, 4, 5, 7, 9, 8, 6, 4, 2, 3, 5 -> False
2, 3, 6, 4, 2, 3, 7, 5, 3, 4, 6 -> True
3, 6, 4, 8, 5, 7, 3, 5, 2 -> True
8 -> True
1, 3, 5, 7 -> True
4, 5, 7, 6, 8, 9 -> False
6, 4, 2, 3, 5, 4, 2 -> True
8, 5, 3, 2, 4, 6, 5, 3, 2, 5, 7 -> False
Uwaga : Nie możesz zakładać, że wszystkie cyfry są jednocyfrowe (chyba że tylko twój język jest w stanie obsłużyć); przypadki testowe odzwierciedlają to tylko dlatego, że łatwiej jest mi wpisać przypadki w ten sposób: P Oto kilka przypadków testowych z liczbami spoza tego zakresu:
1, 5, 10, 19, 15, 13, 8, 13, 18, 23, 19, 18, 14 -> True
15, 14, 17, 16, 19, 18 -> True
12, 16, 19, 15, 18, 19 -> False
code-golf
array-manipulation
decision-problem
HyperNeutrino
źródło
źródło
1, 2, 3, 2
prawidłowe dane wejściowe, a jeśli tak uważane za prawdziwe czy fałszywe? W tym przykładzie następna wartość wynosząca 1 sprawi, że będzie to prawda, ale 3 sprawi, że będzie to fałsz.Odpowiedzi:
MATL ,
109 bajtówWypróbuj online!
Oszczędność jednego bajtu dzięki Luisowi Mendo!
Wyjaśnienie:
Załóżmy, że dane wejściowe to
[0, 3, 7, 5, 2, 3, 6]
:źródło
Galaretka , 6 bajtów
Wypróbuj online!
Zapisano 1 bajt dzięki Adnan !
Jak to działa
Podczas gry w golfa, odkryłem trochę chłodny, dłuższe alternatywy:
IṠŒgL€E
,IṠŒrṪ€E
(używa run-length zakodować zamiast).źródło
IṠŒgḂE
powinien uratować bajtA
(wartość bezwzględna) może zastąpićḂ
lub czy istnieje jakiś sposób, którego nie rozumiemḂ
?Oktawa ,
5450 bajtówWypróbuj online!
Wyjaśnienie
źródło
Wolfram Language (Mathematica) , 38 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Equal@@(1^Split@Sign@Differences@#)&
jest o 2 bajty krótszy iEqual@@Im@Split@Sign@Differences@#&
jest o 1 bajt krótszy od tego.Arg
zamiastSign
zapisywania kolejnego bajtu.05AB1E ,
87 bajtówWypróbuj online!
-1 dzięki Adnan.
źródło
¥0.SγaË
powinien uratować bajta
nie mogę znaleźć w dokumentacji.is_letter(a)
???C (gcc) ,
143140138136135132 bajtówr
do przechowywania logicznej wartości zwracanej przez funkcję zamiast kończenia za pomocąreturn
.int A[]
w golfa doint*A
(za pomocą wskaźnika zamiast tablicy).f(int*A,int a)
w golfaf(A,a)int*A;
.if(d!=...
w golfaif(d-...
.;j++...j+1
w golfa;...++j
.Wypróbuj online!
Definiuje funkcję,
f
która patrzy na każdy element na liście, ale ostatni i określa stosunek tego elementu do następnego elementu na liście. Liczba kolejnych równych porównań jest zapisywana za pierwszym razem, gdy relacja się zmienia, dowolne przebiegi po początkowym przebiegu, które różnią się długością od zapamiętanej długości, dają wynik fałszowania. Na koniec sprawdzana jest relacja drugiego do ostatniego elementu, tak aby pasowała do reszty listy.źródło
f(A,a)int*A;
zamiastf(int*A,int a)
.Pyth , 11 bajtów
Wypróbuj tutaj.
źródło
Python 2 ,
10710510397969491 bajtówWypróbuj online!
Python 3 ,
10210097 bajtówWypróbuj online!
źródło
{...}
zamiast tego możesz użyćset(...)
do zapisania 3 bajtówŁuska , 7 bajtów
Wypróbuj online!
Jak to działa
Kilka uroczych alternatyw:
źródło
JavaScript (ES6), 81 bajtów
To wydaje się za długie. Ja chyba czegoś brakuje tutaj ... Powraca albo
true
alboundefined
.Poszukuje okresu 0 <p <a. Długości tak, że wszystkie zmiany kierunku następują co p elementów.
Przypadki testowe
Pokaż fragment kodu
źródło
Python 2 , 96 bajtów
Wypróbuj online! Wyjście przez kod wyjścia: crash (1) jest falsey, czyste wyjście (0) jest prawdą.
Python 2 , 106 bajtów
Wypróbuj online!
źródło
(...)[:l]<d
może być odwrotnie(...)[:l]==d
.Haskell ,
797877 bajtówWypróbuj online!
Biorąc pod uwagę listę
s
,zipWith(<)s$tail s
sprawdza, czy każdy element jest mniejszy niż jego następca, np .s=[2,3,6,4,2,3,7,5,3]
Daje plon[True,True,False,False,True,True,False,False]
. Następniegroup
uruchamia te same elementy razem:[[True,True],[False,False],[True,True],[False,False]]
. Aby sprawdzić, czy wszystkie te listy mają taką samą długość, zastąpić ich elementów z1
( zobacz tę końcówkę ) plonowanie[[1,1],[1,1],[1,1],[1,1]]
i sprawdzić, czy wszystkie elementy ogonat
tej listy równa głowęh
:all(==h)t
.Takie podejście nie działa dla pojedynczych list, ale ponieważ są zawsze prawdziwe, możemy je obsługiwać w ich przypadku:
g[_]=1<3
.źródło
R , 57 bajtów
Wypróbuj online!
źródło
Japt , 15 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
R, 36 bajtów
diff
oblicza kolejne różnice, a następniesign
zmniejsza je do ± 1.rle
następnie koduje ich długość. Wszystkie elementy tegorle
powinny być takie same, tzn. Wektor ma odchylenie standardowe zero.!
następnie tworzy poprawne wyjście logiczne.źródło
Haskell (Lambdabot), 59 bajtów
Na podstawie odpowiedzi @ Laikoni
źródło
g_=1<3
.Java (OpenJDK 8) ,
437302256188 bajtówWypróbuj online!
źródło
Clojure, 70 bajtów
Zwraca
1
jako prawda inil
(AKA null) jako fałsz.źródło
Java (OpenJDK 8) , 135 bajtów
Wypróbuj online!
Objaśnienia
źródło
Python 2 ,
11099 bajtów-11 bajtów dzięki @Lynn
Wypróbuj online!
źródło
exec"d=map(cmp,d[:-1],d[1:]);"*2
Rubinowy , 57 bajtów
Wypróbuj online!
źródło