Contribution:
Une liste / un vecteur non vide où chaque élément contient une valeur / un caractère, indiquant si vous comptez vers le haut ou vers le bas . Je vais utiliser 1
et -1
, mais vous pouvez choisir ce que vous voulez. Vous ne pouvez utiliser que deux valeurs, vous ne pouvez pas utiliser 1,2,3...
et -1,-2,-3...
, respectivement pour monter et descendre.
Défi:
Vous utiliserez les numéros de la série géométrique 1, 2, 4, 8, 16, 32 ... . Chaque fois que vous commencez à compter vers le haut ou vers le bas, vous comptez par incréments de 1 , puis 2 , puis 4 et ainsi de suite. Si vous changez et commencez à compter dans l'autre sens, vous soustrayez 1 , puis 2 , puis 4 et ainsi de suite. La sortie doit être le nombre auquel vous arrivez à la fin.
Exemples:
Dans l'exemple ci-dessous, la première ligne est l'entrée, la deuxième ligne est les nombres que vous comptez en haut / en bas, la troisième ligne est la somme cumulée et la dernière ligne est la sortie.
Exemple 1:
1 1 1 1 1 1 1 1 1 1
1 2 4 8 16 32 64 128 256 512
1 3 7 15 31 63 127 255 511 1023
1023
Exemple 2:
1 1 1 1 1 1 -1 -1 -1 -1 1 1 1
1 2 4 8 16 32 -1 -2 -4 -8 1 2 4
1 3 7 15 31 63 62 60 56 48 49 51 55
55
Comme vous pouvez le voir, le premier 1
ou -1
"réinitialise" la valeur que nous comptons, et des séquences consécutives de 1
ou -1
signifie doubler la valeur.
Exemple 3:
-1 -1 1 1 -1 -1 -1
-1 -2 1 2 -1 -2 -4
-1 -3 -2 0 -1 -3 -7
-7
Quelques cas de test supplémentaires pour tenir compte de certains cas de coin potentiels.
L'entrée est sur la première ligne. La sortie est sur la seconde.
1
1
-------
-1
-1
-------
-1 1 -1 1 -1 1 -1 1 -1 1 -1 1
0
Il s'agit de code-golf, donc la soumission la plus courte dans chaque langue gagne.
®ì2Ãx
pourxì2
sauver deux octets.Cubix , 65 octets
Essayez-le en ligne!
Regardez-le courir
Voici une brève explication:
la source
JavaScript (ES6), 38 octets
la source
R , 32 octets
Essayez-le en ligne!
C'est la même méthode que quelques autres ici.
Avec l’entrée de
-1 -1 1 1 -1 -1 -1
2, 2, 3
et valeurs-1, 1, -1
3, 3, 7
-3, 3, -7
-7
la source
Python 3 ,
5756 octets-1 octet grâce à @notjagan
Essayez-le en ligne!
la source
s>()
m'a pris une seconde. C'est vraiment intelligent.Gelée , 4 octets
Essayez-le en ligne!
la source
C ++ 14, 58 octets
Prend l'entrée via l'
v
argument (std::vector
, ou tout conteneur itérable), renvoie à l's
argument (par référence). Chaque élément dev
doit être soit1
ou-1
.Exemples d'utilisation et de cas de test.
la source
Brachylog , 13 octets
Essayez-le en ligne!
Brachylog utilise à la
_
place de-
.Explication:
la source
Python,
7672 octetsEssayez-le en ligne!
la source
Pyth , 12 octets
Essayez-le en ligne!
la source
PHP, 51 octets
Courez avec
-n
ou essayez-le en ligne .la source
CJam (13 octets)
Suite de tests en ligne . Il s'agit d'un bloc anonyme (fonction) qui prend un tableau d'ints sur la pile et laisse un int sur la pile. Le dernier test montre qu'il gère correctement un tableau vide, donnant 0.
L'approche est un codage de longueur de cycle simple suivi d'un décodage manuel de la longueur de chaque exécution et conversion de base. En utilisant le intégré pour le décodage de longueur, j'obtiens un octet de plus avec
{e`1/:e~2fb1b}
ou{e`{ae~2b}%1b}
.la source
05AB1E , 6 octets
Essayez-le en ligne!
la source
γε¬sƶÄ<o*}OO
Haskell,
5453 octetsEssayez-le en ligne!
Une récursivité simple qui double l'accumulateur
k
ou le réinitialise à1
/-1
et ajoute les valeurs de chaque étape.la source
Mathematica, 60 octets
la source
Mathematica, 25 octets
la source
Java, 91 octets
la source
Pyth, 11 octets
Essayez-le en ligne
Comment ça fonctionne
la source