La description
Nous considérons un entier avec au moins 3 chiffres à triple équilibre si, lorsqu'il est divisé en trois parties, les chiffres de chaque partie se résument au même nombre. Nous avons divisé les nombres comme suit:
abcdefghi - Standard case: the number of digits is divisable through 3:
abc def ghi
abcdefgh - Number % 3 == 2: The outer groups are both assigned another digit
abc de fgh (the inner group will have one digit less than both outer groups)
abcdefghij - Number % 3 == 1: The inner group is assigned the extra digit
abc defg hij (the inner group will have one digit more than the outer groups)
Défi
Votre tâche consiste à écrire un programme qui, étant donné un nombre entier avec au moins 3 chiffres, détermine si le nombre donné est triple équilibré et génère une valeur vraie ou fausse en fonction de son résultat.
Cas de test
333 -> True
343 -> False
3123 -> True
34725 -> True
456456 -> False
123222321 -> True
Il s'agit de code-golf , donc les failles standard s'appliquent et la réponse la plus courte en octets peut gagner!
code-golf
number
arithmetic
decision-problem
racer290
la source
la source
when split in three parts,
Réponses:
Python 2 ,
938886 octets-4 octets grâce à @LeakyNun
-2 octets grâce à @ Mr.Xcoder
Essayez-le en ligne!
la source
Gelée , 23 octets
Essayez-le en ligne!
Il doit y avoir un moyen plus court qui a en quelque sorte survolé ma tête ...
la source
Rétine , 89 octets
Essayez-le en ligne! Le lien inclut des cas de test. Explication: La première étape ajoute des sauts de ligne au début et à la fin de l'entrée. La deuxième étape essaie ensuite de déplacer les chiffres à travers les nouvelles lignes par paires, mais s'il n'y a pas assez de chiffres au milieu, la troisième étape est capable de les reculer, provoquant l'arrêt de la boucle. La quatrième étape convertit ensuite chaque chiffre séparément en unaire, les additionnant ainsi, tandis que la dernière étape vérifie simplement que les sommes sont égales.
la source
Mathematica, 142 octets
la source
Gelée , 20 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
MATL , 26 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
la source
Javascript, 178 octets
la source
([...b],s=~b.length/3|0,f=(m,v)=>+m+ +v,y=b.splice(s).reduce(f))=>b.splice(-s).reduce(f)==y&y==b.reduce(f)
( faites attention lors de la copie à partir de commentaires car Stack Exchange insère des caractères invisibles).Java 8, 149 octets
Prend l'entrée comme un
int[]
.Explication:
Essayez-le ici.
Voici un aperçu des pièces indexées 0 (exclusives) pour chaque longueur:
a
nous bouclons de0
à(length + 1) / 3)
(cette valeur est maintenant stockée danss
);b
nous bouclons des
àlength / 3 * 2 +
(0
si la longueur modulo-3 est 0;1
si la longueur modulo-3 est 1 ou 2) (cette valeur est maintenant stockée danss
);c
nous bouclons des
àlength
.(les trois boucles sont exclusivement indexées 0)
la source
Röda , 82 octets
Essayez-le en ligne!
Explication:
la source
JavaScript,
129, 104 octetsLa fonction r tranche la chaîne en fonction des paramètres b et e, puis additionne les chiffres et renvoie la valeur.
Afin de couper dans les tailles correctes, nous divisons la longueur par 3 et arrondissons le résultat. L'appel de slice (0, result) nous donne le premier bloc, slice (result, -result) nous donne le second, et slice (result) nous donne le dernier. En raison de la façon dont j'appelle slice, j'ai utilisé slice (result, 4 * result) au lieu du dernier mais cela donne le même résultat.
Enfin, je compare les résultats montrent que les valeurs sont égales.
Edit: même principe, meilleur golf
la source
&&
de&
JavaScript? Les deux vérifications de seconde main (&&z
et&&y[1]==y[2]
) ne semblent pas modifier les valeurs, donc si c'est possible, cela ne devrait pas affecter le résultat de ce que je peux voir.