introduction
Le Père Noël a trop de noms à traiter et a besoin de votre aide! Il a besoin d'écrire un programme ou d' une fonction, qui délivre en sortie nice
, naughty
, very naughty
ou very very naughty
. Pour déterminer à quel point quelqu'un est gentil ou méchant, le Père Noël avait développé un algorithme:
Nice ( division , mathématiques ):
Tout d'abord, nous obtenons un nombre du nom en additionnant toutes les lettres ( espaces ignorés ). Par exemple:
Doorknob =
D = 4
o = 15
o = 15
r = 18
k = 11
n = 14
o = 15
b = 2
4 + 15 + 15 + 18 + 11 + 14 + 15 + 2 = 94
Si le nombre de diviseurs est égal à la longueur du nom, la personne est considérée nice
. Cela signifie que votre programme devrait sortir [name] has been nice
. Ici, les diviseurs de 94
sont:
Divisors of 94: 1, 2, 47, 94
Il existe des 4
diviseurs, mais le nom a une longueur 8
( espaces compris ). Conclusion, ça Doorknob
n'a pas été sympa. Nous continuons donc notre voyage:
Coquine ( séquence , mathématiques ):
Le Père Noël a développé une nouvelle séquence, le numéro de Noël . Tout d'abord, nous examinerons les arbres de Noël suivants:
n = 1 n = 2 n = 3 n = 4
*
***
*****
*******
*********
_ * ***
| *** *****
| ***** *******
* | ******* *********
* *** | *** ***
*** ***** n*n | ***** *****
* *** | ******* *******
***** | *** *********
* | ***** ***
|_******* *****
* *******
|_____| *********
2n+1 *
5 18 47 98
Le nombre d'astérisques détermine le nombre de Noël. La séquence se déroule comme suit: 5, 18, 47, 98, 177, ...
.
De là, nous pouvons conclure que ce 94
n'est pas un numéro de Noël. Cela signifie que cela Doorknob
n'a pas seulement été méchant.
Très vilain ( string ):
Pour cela, nous devons savoir s'il Doorknob
s'agit d'une chaîne d'échelle élévatrice . Ceci est déterminé par les lettres du nom avec A = 1
, B = 2
, C = 3
, etc .:
Nous allons d'abord regarder la première lettre, la D
. Cela a de la valeur 4
. Ceci est notre point de départ. La prochaine lettre est o
. Cela a la valeur 15
, qui est supérieure à notre valeur précédente, nous allons donc un peu plus haut sur l'échelle. La valeur suivante est également un o
. C'est la même chose, donc nous ne faisons rien. Si la valeur suivante est supérieure à la valeur actuelle, nous irons plus haut. Si la valeur suivante est inférieure à la valeur actuelle, nous irons plus bas. Si c'est pareil, nous resterons sur la même marche. Ceci visualisé pour Doorknob
, Martin Buttner
et Alex A
:
O
/ \
R N B
/ \ /
O-O K T N U L X
/ / \ / \ / \ / \ / \
D M R I B T-T A E A
\ / \
A N R
\ /
E
Vous pouvez voir que cela Doorknob
s'est terminé plus haut que la position de départ. Donc Doorknob has been very naughty
. Martin Buttner
et Alex A
n'a pas dépassé le point de départ. Ils sont donc tous les deux very very naughty
.
Cas de test
Input: Doorknob
Output: Doorknob has been very naughty
Input: Martin Buttner
Output: Martin Buttner has been very very naughty
Input: Jakube
Output: Jakube has been nice
Input: B
Output: B has been very very naughty
Règles
- Vous devez fournir un programme ou une fonction qui prend en entrée (qui se compose d'au moins une lettre).
- L'entrée se compose de lettres majuscules , lettres minuscules et les espaces . Les espaces sont ignorés pendant le processus, à l'exception de la longueur de l'entrée.
- C'est du code-golf , donc la soumission avec le moins d'octets gagne!
n^3 + 2n^2 + 2
, btw.ZZZ...Z = 26 * 99 = 2574
, ce qui signifie que vous n'avez qu'à vérifier les numéros de Noël jusqu'à et y comprisn=13
. (Informations utiles pour les autres golfeurs.)Santa has been very very naughty
. Attends quoi?Santa Claus has been very naughty
. Devrait également essayer Saint Nick, Saint Nicholas, St. Nick, St. Nicholas, Kris Kringle, Father Christmas, Pere Noel et tous ses autres pseudonymes - peut-être que l'un d'eux fonctionnera? Mais pourquoi un "gentil" gars aurait besoin de tant d'alias est déjà assez suspect ...Réponses:
Pyth 86 octets
Apparemment, j'ai été sympa cette année ...
Essayez-le en ligne: démonstration ou suite de tests
Explication:
la source
CJAM,
109108107 octetsEssayez-le en ligne.
Explication
Une explication complète devra attendre plus tard, mais voici le code décomposé en différentes sections:
la source
MATL , 117 octets
Mon plus long programme MATL jusqu'à présent :-) :-(
Utilise la version actuelle de la langue, antérieure à ce défi.
Exemples
Explication
la source
Lua,
371284 octetsJe suis sûr qu'il y a place à amélioration, j'aimerais en supprimer quelques-uns.
Edit: 4 mois plus tard, j'ai beaucoup appris sur lua et je voulais revenir sur cette soumission, j'ai bien fait: coupé 87 octets!
Ungolfed
Ancienne solution de 371 octets
Version non golfée :)
la source
Sérieusement, 138 octets
Vidage hexadécimal:
Essayez-le en ligne
Il est difficile de jouer efficacement au golf en raison de la difficulté du contrôle de débit complexe. La possibilité d'imbriquer des fonctions sans utiliser de registres serait utile. (J'imagine que cela pourrait déjà être quelque peu raccourci grâce à une utilisation judicieuse des fonctions stockées, mais il en résulterait un tel code de spaghetti que je n'ai pas le cœur de tenter.)
Explication:
la source
Python 2, 249 octets
la source