Défi
Étant donné une liste, déterminez si le regroupement de la liste en séries d'éléments croissants et décroissants se traduira par une liste de listes de taille égale.
En d'autres termes, les «points tournants» de la liste sont régulièrement espacés.
Exemple
Voici un exemple: 0, 3, 7, 5, 2, 3, 6
0, 3, 7
augmente, 7, 5, 2
diminue et 2, 3, 6
augmente. C'est donc vrai.
Un autre exemple: 1, 4, 6, 8, 5, 3, 5, 7, 9
1, 4, 6, 8
augmente, 8, 5, 3
diminue et 3, 5, 7, 9
augmente. C'est donc de la fausse.
Règles et spécifications
- Aucun élément adjacent ne sera égal
- Tous les numéros peuvent être supposés être dans la plage de numéros raisonnable de votre langue
- Vous pouvez supposer que tous les nombres sont des nombres entiers, si cela vous aide à jouer votre soumission
- C'est le golf de code , donc la réponse la plus courte l'emporte
- Entrée sous forme de liste dans toute représentation raisonnable et sortie sous forme de toute valeur véridique / fausse. Les deux valeurs doivent être cohérentes.
Cas de test
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
Remarque : Vous ne pouvez pas supposer que tous les numéros sont à un seul chiffre (sauf si c'est tout ce que votre langue est capable de gérer); les cas de test reflètent cela simplement parce qu'il m'est plus facile de taper les cas de cette façon: P Voici quelques cas de test avec des nombres en dehors de cette plage:
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
la source
1, 2, 3, 2
une entrée valide, et si cela est considéré comme vrai ou faux? Dans cet exemple, la valeur suivante étant un 1 le rendrait vrai, mais un 3 le rendrait faux.Réponses:
MATL ,
109 octetsEssayez-le en ligne!
Un octet enregistré grâce à Luis Mendo!
Explication:
Supposons que l'entrée soit
[0, 3, 7, 5, 2, 3, 6]
::la source
Gelée , 6 octets
Essayez-le en ligne!
1 octet enregistré grâce à Adnan !
Comment ça fonctionne
Alors que le golf, j'ai découvert un peu cool, des solutions de rechange plus:
IṠŒgL€E
,IṠŒrṪ€E
(utilisations de longueur de encode à la place).la source
IṠŒgḂE
devrait sauver un octetA
(valeur absolue) se substituerḂ
ou y a-t-il une astuce que je ne comprends pasḂ
?Octave ,
5450 octetsEssayez-le en ligne!
Explication
la source
Wolfram Language (Mathematica) , 38 octets
Essayez-le en ligne!
Explication
la source
Equal@@(1^Split@Sign@Differences@#)&
est 2 octets plus court, etEqual@@Im@Split@Sign@Differences@#&
est 1 octet de plus court que cela.Arg
au lieu d'Sign
enregistrer un autre octet.05AB1E ,
87 octetsEssayez-le en ligne!
-1 merci à Adnan.
la source
¥0.SγaË
devrait sauver un octeta
je ne peux pas le trouver dans les documents.is_letter(a)
???C (gcc) ,
143140138136135 135132 octetsr
pour stocker le retour booléen de la fonction au lieu de terminer l'utilisation dereturn
.int A[]
au golfint*A
(en utilisant un pointeur au lieu d'un tableau).f(int*A,int a)
au golf àf(A,a)int*A;
.if(d!=...
au golf àif(d-...
.;j++...j+1
au golf;...++j
.Essayez-le en ligne!
Définit une fonction
f
qui examine chaque élément de la liste sauf le dernier et détermine la relation de cet élément avec l'élément suivant de la liste. Le nombre de comparaisons égales consécutives est stocké la première fois que la relation bascule, tout cycle après le cycle initial qui diffère en longueur à la longueur stockée entraîne une sortie fausse. À la fin, la relation de l'avant-dernier élément au dernier élément est examinée afin qu'elle corresponde au reste de la liste.la source
f(A,a)int*A;
place def(int*A,int a)
.Pyth , 11 octets
Essayez-le ici.
la source
Python 2 ,
10710510397969491 octetsEssayez-le en ligne!
Python 3 ,
10210097 octetsEssayez-le en ligne!
la source
{...}
placeset(...)
pour économiser 3 octetsHusk , 7 octets
Essayez-le en ligne!
Comment ça marche
Quelques alternatives mignonnes:
la source
JavaScript (ES6), 81 octets
Cela semble trop long. Il me manque probablement quelque chose ici ... Retourne soit
true
ouundefined
.Recherche une période 0 <p <a.longueur telle que tous les changements de direction se produisent tous les p éléments.
Cas de test
Afficher l'extrait de code
la source
Python 2 , 96 octets
Essayez-le en ligne! Sortie via le code de sortie: crash (1) est falsey, clean exit (0) est véridique.
Python 2 , 106 octets
Essayez-le en ligne!
la source
(...)[:l]<d
peut être l'inverse de(...)[:l]==d
.Haskell ,
797877 octetsEssayez-le en ligne!
Étant donné une liste
s
,zipWith(<)s$tail s
teste pour chaque élément s'il est plus petit que son successeur, par exemple less=[2,3,6,4,2,3,7,5,3]
rendements[True,True,False,False,True,True,False,False]
. Ensuite ,group
court des mêmes éléments ensemble:[[True,True],[False,False],[True,True],[False,False]]
. Pour vérifier si toutes ces listes ont la même longueur, remplacer leurs éléments avec1
( voir cette astuce ) pour donner[[1,1],[1,1],[1,1],[1,1]]
et vérifier si tous les éléments de la queuet
de cette liste égale la têteh
:all(==h)t
.Cette approche ne fonctionne pas pour les listes singleton, mais parce que ce sont toujours vrai, nous pouvons les gérer dans leur propre cas:
g[_]=1<3
.la source
R , 57 octets
Essayez-le en ligne!
la source
Japt , 15 octets
Essayez-le en ligne!
Explication
la source
R, 36 octets
diff
calcule les différences successives, puis lessign
écrase à ± 1.rle
puis run-length les encode. Tous les élémentsrle
doivent être identiques, c'est-à-dire que le vecteur a un écart type nul.!
produit ensuite la sortie logique correcte.la source
Haskell (Lambdabot), 59 octets
D'après la réponse de @ Laikoni
la source
g_=1<3
.Java (OpenJDK 8) ,
437302256188 octetsEssayez-le en ligne!
la source
Clojure, 70 octets
Renvoie
1
la vérité etnil
(AKA null) la fausse.la source
Java (OpenJDK 8) , 135 octets
Essayez-le en ligne!
Explications
la source
Python 2 ,
11099 octets-11 octets grâce à @Lynn
Essayez-le en ligne!
la source
exec"d=map(cmp,d[:-1],d[1:]);"*2
Rubis , 57 octets
Essayez-le en ligne!
la source