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.