Le Père Noël a besoin d'aide pour déterminer le nombre d'elfes dont il aura besoin pour l'aider à offrir des cadeaux à chaque maison.
Le charbon est considérablement plus lourd que les cadeaux, donc le père Noël aura besoin de trois elfes pour chaque vilain dans la maison. Seuls deux elfes sont nécessaires pour aider le père Noël à porter des cadeaux.
Sur la carte du père Noël, une maison est représentée par un *
, et chaque maison est divisée par un +
.
Il y aura un numéro de chaque côté de la maison - celui de gauche représentant le nombre de vilains dans la maison, et celui de droite représentant le nombre de gentilles personnes dans la maison. S'il n'y a pas de nombre d'un côté, il est interprété comme un 0.
Le Père Noël ne rend pas visite à ceux qui ne sont pas dans l'esprit de Noël (ils ne méritent même pas le charbon), donc parfois, une maison peut ne pas avoir de numéro de chaque côté. Dans ce cas, le père Noël n'a besoin de l'aide d'aucun elfe
Par exemple, l'une des cartes du père Noël peut ressembler à ceci
1*3+2*2+1*+*2
Dans la première maison il y a 1 coquine et 3 gentilles, le père Noël aura besoin de neuf elfes. Dans le second, il y a 2 coquines et 2 gentilles, le père Noël aura besoin de dix elfes. Dans la troisième maison il y a 1 vilain et 0 gentil, le père Noël aura besoin de trois elfes, et dans la dernière maison il y a 0 vilain et 2 gentil, le père Noël aura besoin de quatre elfes.
Il s'agit cependant d'une version trop simplifiée d'une des cartes du père Noël. Normalement, les cartes du père Noël ont plusieurs lignes et sont de forme carrée pour mieux correspondre à sa liste. Une carte normale pourrait ressembler à ceci (un \n
à la fin de chaque ligne)
1*2+*+*4+1*
2*4+3*+1*6+*
*+*+4*2+1*1
*4+*3+1*+2*3
3*10+2*+*5+*
Sur cette carte, le père a besoin ((1 + 0 + 0 + 1 + 2 + 3 + 1 + 0 + 0 + 0 + 4 + 1 + 0 + 0 + 1 + 2 + 3 + 2 + 0 + 0) * 3) + ((2 + 0 + 4 + 0 + 4 + 0 + 6 + 0 + 0 + 0 + 2 + 1 + 4 + 3 + 0 + 3 + 10 + 0 + 5 + 0) * 2)
= 151 elfes
Défi
Aidez le père Noël à déterminer le nombre d'elfes dont il a besoin pour livrer des marchandises dans chaque maison!
Maisons
- Une maison est représentée par un
*
- Les maisons sont divisées par
+
- Le nombre à gauche de la maison symbolise le nombre de vilains (aucun chiffre ne signifie 0)
- Le chiffre à droite symbolise le nombre de personnes sympas (aucun chiffre ne signifie 0)
- Il peut y avoir des sauts de ligne (
\n
) en entrée, qui doivent également être traités comme un fractionnement
Elfes
- Le père Noël a besoin de l'aide de trois elfes pour les vilains (le charbon est beaucoup plus lourd que les cadeaux)
- Le Père Noël a besoin de l'aide de deux elfes pour des gens sympas
- S'il n'y a pas de numéro de chaque côté, le père Noël ne visitera pas cette maison et n'a donc pas besoin d'elfes
Que faire
Imprimez le nombre d'elfes dont le père Noël a besoin pour l'aider à livrer des cadeaux aux maisons. Parce que tout ce que le Père Noël a besoin de savoir, c'est le nombre d'elfes à apporter, il vous suffit d'imprimer le nombre supplémentaire d'elfes dont il a besoin pour la liste des maisons.
Cas de test
1*1 => 5
1*2 => 7
2*1 => 8
1* => 3
*1 => 2
* => 0
1*1+1*1 => 10
1*2+2*1 => 15
1*+*1 => 5
1*1+*+1*1 => 10
*+*+*+* => 0
Règles
- L'entrée peut être soit prise comme argument dans une fonction, soit depuis STDIN ou équivalent
- La sortie peut être soit la valeur de retour d'une fonction, soit imprimée sur STDOUT ou équivalent
- L'entrée ne contient que des chiffres,
+
,*
, et retour à la ligne\n
- La sortie ne devrait être que le nombre total d'elfes dont le Père Noël a besoin d'aide pour livrer à Noël
- Des échappatoires standard s'appliquent
Notation
Le traîneau du Père Noël est plein de cadeaux lui donnant moins d'espace pour exécuter du code, donc il a besoin du code le plus court qu'il puisse obtenir (ne vous inquiétez pas si cela n'a pas de sens. Si vous remettez en question la logique du Père Noël, vous vous retrouverez sur la liste coquine ). En raison du raisonnement CORRECT du Père Noël , la soumission la plus courte en octets gagne!
Classement
Il s'agit d'un extrait de pile qui génère à la fois un classement et un aperçu des gagnants par langue.
Pour vous assurer que votre réponse s'affiche, veuillez commencer votre réponse avec un titre en utilisant le modèle Markdown suivant
## Language Name, N bytes
Où N est la taille, en octets, de votre soumission
Si vous souhaitez inclure plusieurs nombres dans votre en-tête (par exemple, en supprimant les anciens scores ou en incluant des indicateurs dans le nombre d'octets), assurez-vous simplement que le score réel est le dernier numéro de votre en-tête
## Language Name, <s>K</s> X + 2 = N bytes
max(naughty) + max(nice)
elfes pour tout le trajet? Je pensais qu'il avait un tas d'elfes volant avec lui, mais peut-être avez-vous des informations privilégiées à ce sujet et je dois regarder de plus près cette année. :)hello-world.c
. Les elfes ouvriers sont alloués avec impatience aux cibles, comme l'a dit Jojodmo (je suis sûr que je connais Jojodmo, il doit être notre administrateur système), puis ils utilisent un rappel pour indiquer quand il est temps de réinsérer dans la piscine de traîneau ou quand un enfant les a vus.Réponses:
Pyth, 21 octets
Exemple multiligne
Suite de tests sur une seule ligne
la source
JavaScript (ES6), 52 octets
Explication
Convertit l'entrée en une instruction JavaScript valide. Remplace tous
*
par.0*3+
et tous les autres symboles (non numériques) par.0*2+
. Par exemple8*9+*10
devient8.0*3+9.0*2+.0*3+10
. Enfin, il s'ajoute.0*2
à la fin pour le dernier joli décompte. Cela fonctionne parce quen.0
=n
et.0
=0
.Tester
Afficher l'extrait de code
la source
.0
idée.Flex + C,
11290 octetsLe premier caractère est un espace. Compiler avec:
Lit depuis STDIN, écrit dans STDOUT. L'entrée est terminée par EOF (Ctrl + D dans la console).
la source
Mathematica, 70 octets
Utilise
StringExtract
pour extraire les numéros individuels.la source
CJam, 23 octets
Testez-le ici.
Explication
la source
Sérieusement,
3830 octetsVidage hexadécimal:
Cette nouvelle version casse l'interpréteur en ligne, mais fonctionne bien localement. Voici un exemple d'exécution:
Explication:
Ancienne version:
Vidage hexadécimal:
Essayez-le en ligne
Explication:
Cela pourrait être plus court si je convertissais chaque ligne séparément et les additionnais toutes à la fin. J'y reviendrai plus tard.
la source
PowerShell, 52 octets
En utilisant la variation de user81655 de »
.0
trickVersion non golfée
Exemple d'utilisation
la source
Swift 2,
283211 octetsCela peut être testé sur SwiftStub, ici
Non golfé
la source
Python 3,
141114112 112 octetsPrend des entrées multi-lignes comme celle-ci
c("1*2+*+*4+1*\n2*4+3*+1*6+*\n*+*+4*2+1*1\n*4+*3+1*+2*3\n3*10+2*+*5+*")
Non golfé:
la source
Je suis super en retard, mais je voulais quand même essayer.
Rubis ,
8455 octetsJ'ai retrouvé cette question après tant d'années et réfléchissais à une nouvelle réponse avant de réaliser que j'avais déjà répondu à cette question auparavant. Oups! Quoi qu'il en soit, voici une réponse considérablement améliorée.
Essayez-le en ligne!
Ancienne réponse de 84 octets de ma première réponse il y a 2 ans:
Essayez-le en ligne!
la source
Python 3 , 96 octets
Essayez-le en ligne!
101 octets sans regex
Essayez-le en ligne!
la source