Prenez une chaîne en entrée, effectuez l'addition / la soustraction de tous les chiffres de la chaîne et sortez la somme de ces opérations comme résultat.
Règles
- Les chiffres de la chaîne sont lus de gauche à droite
- Si un chiffre (n) est impair, effectuez l'addition avec le chiffre suivant (n + n1)
- Si un chiffre (n) est pair, effectuez la soustraction avec le chiffre suivant (n - n1)
- Si vous avez atteint le dernier chiffre de la chaîne, effectuez l'opération avec le premier chiffre de la chaîne
- La sortie sera la somme de toutes les valeurs résultantes
- S'il n'y a qu'un seul chiffre dans la chaîne, effectuez l'opération avec lui-même (n + n ou nn)
- S'il n'y a pas de chiffres dans la chaîne, la sortie est 0
Exemple
Input: r5e6o9mm!/3708dvc
Process: (5+6) + (6-9) + (9+3) + (3+7) + (7+0) + (0-8) + (8-5)
Output: 32
Remarques
- La fonction ou le programme complet est accepté
- La longueur d'entrée maximale dépend de la limite de votre langue pour une entrée de chaîne
- Aucune restriction sur la saisie de caractères, mais seuls les chiffres de demi-largeur comptent pour la sortie
- Le moins d'octets gagne
""
,"0"
,"1"
Réponses:
Gelée ,
17 1512 octetsEssayez-le en ligne!
Essayez des cas de test.
Le programme ne conserve que les chiffres qui suivent un chiffre impair puis calcule le double de la somme.
la source
K (oK) ,
47434031 octetsSolution:
Essayez-le en ligne!
Explication:
Supprimez tout de la chaîne qui n'est pas un nombre (tout en convertissant également), modulo 2, multipliez par 2, multipliez avec x tourné de 1 et résumez.
Solution naïve:
Supprimez tout de la chaîne qui n'est pas un nombre (tout en convertissant également), prenez une fenêtre coulissante à 2 éléments, déterminez s'ils sont impairs ou pairs, appliquez ajouter / soustraire selon le cas, puis résumez.
Essayez-le en ligne!
Remarques:
la source
x:48!x@&x in,/$!10
->x^:(x-:48)^!10
':
la "fenêtre coulissante" - intéressante.Python 2 , 86 octets
Essayez-le en ligne!
la source
Perl 6 , 41 octets
Essayez-le en ligne!
Utilise la même logique que la réponse Jelly de dylnan . Cela additionne uniquement les chiffres qui suivent un nombre impair, puis multiplie par 2.
la source
Powershell,
807876 octets-2 octets merci Neil avec la solution Retina
-2 octets merci AdmBorkBork
Script de test:
Explication
Tout d'abord: il devrait ajouter 2 * n si le chiffre précédent est impair et 0 si un chiffre précédent est pair.
Extra, 99 octets
Inspiré par @Neil. Regex correspond aux chiffres avec «le chiffre précédent est impair» uniquement.
Matches
est une variable automatique .la source
|?{$_}
pour-ne''
un autre en passant$d="$args"-split'\D*'-ne''
à des parens comme($d="$args"-split'\D*'-ne'')+$d[0]
.MATL ,
1817 octetsEssayez-le en ligne!
(-1 octet grâce à Luis Mendo / Giuseppe / les deux!)
Explication:
L'idée de base est que les nombres qui suivent des nombres pairs peuvent être ignorés, tandis que ceux qui suivent des nombres impairs sont doublés - et le résultat final est la somme de ces valeurs doublées.
Je ne pensais pas
f
qu'après le contrôle de paritéo
serait nécessaire, mais pour une raison quelconque MATL ne voit pas le tableau de 0 et de 1 qui résultent duo
comme un tableau logique, les prend plutôt comme des indices numériques et des index dans les positions1
etend
.la source
!U
place de48-
. La transposition ne semble pas faire de mal ici.o
pour l'double
entrée est justemod(...,2)
, donc la sortie l'estdouble
. BelleNaN
astuce d'entrée! Si cela est censé résoudre la sortie étrangère dans STDOUT, Dennis a eu une idée et corrigera probablement cela bientôt!U
au lieu de48-
o
donne-t-il alors une sortie de tableau logique - ou non? (Je dois avouer que je n'ai jamais vraiment examiné le système de type numérique de MATLAB.) Et oui, je pensais queNaN
cela ferait une belle sentinelle car il est peu probable que ce soit une entrée réelle n'importe où, mais bon de savoir qu'il ne sera pas nécessaire longtemps !K (ngn / k) , 33 octets
Essayez-le en ligne!
{
}
est une fonction avec argumentx
!10
est la liste0 1 ... 9
$
convertir en chaînes,/
enchaînerx^
signifiex
sans ce qui est à droitex^x^
signifiex
intersecté avec ce qui est à droite, c'est-à-dire ne garder que les chiffres dex
-48+
soustraire48
, qui est le code ASCII de"0"
x:
affecter àx
2!
mod 22*
multiplié par 21_x,*x
est une goutte de:x
suivie de la première dex
; c'estx
-à- dire tourné vers la gauche d'un pas+/
sommela source
Japt (v2.0a0),
2519 octets-6 octets grâce à Shaggy .
Essayez-le ici .
Cela fonctionne sans chiffres cette fois! L'entrée est une liste de caractères.
la source
x
fonction, cependant. Envoyez-moi un ping dans le chat si vous avez des questions.05AB1E ,
129 octetsEnregistre 1 octet par rapport à la méthode naïve en utilisant l' astuce de parité de dylnan
Sauvegardé 3 octets grâce à M. Xcoder
Essayez-le en ligne!
Explication
la source
þÀIþ€ÉÏSO·
,þÀDÁ€ÉÏSO·
,þÀ¹þ€ÉÏSO·
ouþÀsþ€ÉÏSO·
passer tous les tests pour -2 octets?þDÁ€ÉÏSO·
pour -3 :)Rétine , 37 octets
Essayez-le en ligne! Explication:
Ajoutez un double du premier chiffre.
Correspond à tout ce dont le premier chiffre précédent est impair.
Convertissez tous les matchs en unaire et doublez-les. (Les non-chiffres sont traités comme zéro.)
Prenez la somme. S'il n'y avait pas de correspondance, cela produit zéro comme requis.
Le mieux que j'ai pu faire dans Retina 0.8.2 était de 44 octets:
Essayez-le en ligne! Explication:
Supprimer les non-chiffres.
Ajoutez une copie du premier chiffre.
Supprimez les chiffres qui ne suivent pas un chiffre impair.
Convertissez en unaire.
Doublez-les.
Prenez la somme.
la source
Gelée , 15 octets
Essayez-le en ligne!
la source
1ịṭƊ
JavaScript (ES6), 56 octets
Prend l'entrée comme un tableau de caractères.
Essayez-le en ligne!
Commenté
la source
JavaScript (Node.js) ,
85848382 octets-1 octets grâce aux ovs
Essayez-le en ligne!
Prend l'entrée de chaîne, recherche les chiffres sous forme de tableau de caractères ou renvoie un tableau vide s'il n'en trouve pas, puis utilise la contrainte de type pour s'assurer que les valeurs sont ajoutées / soustraites correctement. La recherche directe pré-incrémente l'index et utilise une vérification nulle pour la brièveté, puis la dernière partie vérifie si le nombre est impair ou même pour forcer ensuite l'addition ou la soustraction (+ et - est -, etc.)
la source
n-0
peut être+n
R , 58 octets
Essayez-le en ligne!
la source
array
sortie.xxx
, il est donc de 68 octets en utilisant le changement d'indexationa
pour générery
.strtoi
place deas.double
, mais oui, ça devrait aller.Perl 5 , 48 octets
Essayez-le en ligne!
J'aime à quel point cela semble cryptique, mais c'est une boucle assez simple autour de tous les nombres de la chaîne.
la source
Julia 0,6 ,
7769 octetsEssayez-le en ligne!
la source
C Sharp 180 octets
Ce n'est pas un très bon golf, lol.
Non golfé:
la source
Stax , 14 octets
Exécuter et déboguer
Déballé, non golfé et commenté, il ressemble à ceci.
Exécutez celui-ci
la source
JavaScript (ES6), 52 octets
Attend une entrée sous forme de tableau de caractères. Mise en garde: en raison de l'utilisation du décalage binaire, la sortie a une limite supérieure de
2^31-1
Essayez-le en ligne!
Explication
Double essentiellement la somme des chiffres suivant les valeurs impaires.
la source