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 naughtyou 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 94sont:
Divisors of 94: 1, 2, 47, 94
Il existe des 4diviseurs, mais le nom a une longueur 8( espaces compris ). Conclusion, ça Doorknobn'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 94n'est pas un numéro de Noël. Cela signifie que cela Doorknobn'a pas seulement été méchant.
Très vilain ( string ):
Pour cela, nous devons savoir s'il Doorknobs'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 Buttneret 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 Doorknobs'est terminé plus haut que la position de départ. Donc Doorknob has been very naughty. Martin Buttneret Alex An'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 ...