Nous savons tous que beaucoup d'exercices n'affectent que la moitié de votre corps, vous devez donc les faire deux fois, une fois de chaque côté. Ces exercices ont deux homologues, un pour le côté gauche et un pour la droite. Cependant, il n'est pas nécessaire d'exécuter les deux homologues consécutivement, tant que les exercices pour les deux parties sont dans le même ordre. Vous pouvez aussi bien basculer d'un côté à l'autre de votre programme d'exercices, mais cela n'aurait aucun sens de commencer certains exercices d'un côté et d'autres de l'autre.
Défi
Une partie exercice est une liste d'entiers non nuls, où sa seconde moitié se compose des entiers de la première moitié niés et dans le même ordre, et les signes des entiers sur chaque moitié sont égaux. Le signe de la première moitié d'une partie d'exercice est son côté principal .
Un ensemble d' exercices comprend zéro ou plusieurs parties d'exercices avec le même côté avant concaténé ensemble.
Étant donné une liste d'entiers non nuls en entrée, déterminez s'il s'agit d'un ensemble d'exercices. Les entiers ne sont pas nécessairement uniques. La longueur de la liste n'est pas nécessairement égale.
Votre solution ne peut utiliser aucune des failles standard . Vous pouvez utiliser deux valeurs cohérentes différentes pour la sortie. C'est le code-golf , donc la solution la plus courte l'emporte.
Exemples
[-5, -1, -7, -6, -5, 5, 1, 7, 6, 5]
est un exemple de partie exercice. La première moitié est [-5, -1, -7, -6, -5]
, et la dernière moitié est [5, 1, 7, 6, 5]
, qui est chaque entier de la première moitié nié. De plus, les entiers de la première moitié sont tous du même signe. Le côté principal de cette partie d'exercice est -1
.
[3, 6, 5, -3, -6, -5, 1, 6, 4, 3, -1, -6, -4, -3]
est un exemple d'un ensemble d'exercices. Ses parties d'exercice individuelles sont [3, 6, 5, -3, -6, -5]
et [1, 6, 4, 3, -1, -6, -4, -3]
, et elles ont toutes deux un côté d'attaque 1
.
[4, -4, -5, 5]
, bien qu'il ne se compose que de parties d'exercice valides, n'est pas un ensemble d'exercices, car la première partie [4, -4]
, a le côté principal 1
, tandis que la deuxième partie [-5, 5]
, a le côté principal -1
.
Cas de test
Cas de test valides:
[]
[1, -1]
[1, -1, 1, -1]
[-6, 6, -5, -4, -3, 5, 4, 3]
[-1, -5, -8, 1, 5, 8, -7, -6, -5, -3, 7, 6, 5, 3]
[-1, -5, -8, 1, 5, 8, -1, 1]
Cas de test non valides:
[1]
[1, -2]
[1, 2, -3, -1, -2, 3]
[1, 2, 3, -3, -1, -2]
[-1, -5, -8, 1, 5, 8, 7, 6, 5, 3, -7, -6, -5, -3]
[1, 2, 3, 5, 1, 2, 3, 5]
[1, 2, -5, 4, -6, 5, 5, -6]
[1, 2, -1, 3, -2, -3]
[1, -2, 1]
[-1, -1, 1]
[1, -1, 1]
la source
Réponses:
Python 2 ,
6967 octetsEssayez-le en ligne!
la source
Gelée , 10 octets
Essayez-le en ligne!
la source
Java 8,
186183185 octets+2 octets en raison d'un correctif de bogue pour les cas de test de taille 3 (presque toutes les permutations de
1
et-1
à la fin de mon lien TIO).Peut certainement être joué au golf. Le défi semble aller droit au but, mais il est assez difficile à mettre en œuvre. Surtout le cas de test
[4,-4,-5,5]
était ennuyeux à corriger .. Mais cela fonctionne maintenant. Va jouer au golf d'ici.Essayez-le en ligne.
Explication:
la source
R , 91 octets
Entre un vecteur de nombres séparés par des espaces. Sorties
FALSE
valides etTRUE
invalides.rle
donne le codage de la longueur de course, dans ce cas de la séquence de valeurs positives et négatives.Le cas de bord vide complètement et totalement injuste;) ajoute un énorme 15 octets.
Beaucoup d'octets rasés par @Giuseppe.
Voici une version de 92 octets exprimée en fonction qui est meilleure pour les tests:
Essayez-le en ligne!
la source
JavaScript (ES6), 54 octets
Version optimisée, inspirée de la réponse Python de Dennis .
Renvoie 0 ou 1 .
Essayez-le en ligne!
Version originale, 74 octets
Essayez-le en ligne!
Comment?
Nous stockons les premières moitiés de toutes les parties d'exercice dans b [0] et les deuxièmes moitiés dans b [1] , en basculant entre b [0] et b [1] chaque fois que le signe change. Les entrées sont au carré pour se débarrasser du signe. Nous préfixons chaque entrée avec une virgule et suffixons chaque partie avec un 0 .
Il y a une logique supplémentaire pour gérer le cas de bord `` entrée vide '' sans frais (voir le commentaire vers la fin du code source).
la source
Python 2 ,
147130113112106 106 octetsEssayez-le en ligne!
Enregistré:
la source
lambda n:cmp(n,0)
peut devenir0 .__cmp__
.all(a==b for a,b in zip(l[::2],l[1::2]))
peut devenirl[:-1:2]==l[1::2]
.Retina 0.8.2 , 57 octets
Essayez-le en ligne! Prend une entrée séparée par des virgules, mais le lien inclut un en-tête qui traite les cas de test. Explication:
Insérez un marqueur avant chaque entier positif.
Remplacez les virgules entre les entiers du même signe par des traits de soulignement.
Supprimez les signes restants.
Ajoutez une virgule si l'entrée n'est pas vide.
Vérifiez que la chaîne se compose de paires d'exécutions des mêmes entiers.
la source
Python 2 , 111 octets
Essayez-le en ligne!
la source
JavaScript (Node.js) , 155 octets
Essayez-le en ligne!
L'inspiration était la réponse de @ KevinCruijssen
Merci aussi à lui d'avoir corrigé 2 cas de test à moi
la source
r=0<i
àr=i%2
, car les cas de test[1,-1,1]
et[-1,1,-1]
échouent pour le moment. Le nombre d'octets reste cependant le même pour JS.Stax , 13 octets
Exécuter et déboguer
la source
Brachylog ,
1814 octetsEssayez-le en ligne!
4 octets enregistrés grâce à @ErikTheOutgolfer.
Explication
la source
APL (Dyalog Classic) , 48 octets
Essayez-le en ligne!
la source