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 compris n=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 ...