introduzione
Babbo Natale ha troppi nomi da elaborare e ha bisogno del tuo aiuto! Ha bisogno di scrivere un programma o di una funzione, che emette nice
, naughty
, very naughty
o very very naughty
. Per determinare quanto è gentile o cattivo qualcuno, Babbo Natale ha sviluppato un algoritmo:
Nizza ( divisione , matematica ):
Prima di tutto, otteniamo un numero dal nome sommando tutte le lettere ( spazi ignorati ). Per esempio:
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
Se il numero di divisori è uguale alla lunghezza del nome, viene considerata la persona nice
. Ciò significa che l'output del tuo programma [name] has been nice
. Qui, i divisori di 94
sono:
Divisors of 94: 1, 2, 47, 94
Ci sono 4
divisori, ma il nome ha lunghezza 8
( spazi inclusi ). Conclusione, Doorknob
non è stato bello. Quindi continuiamo il nostro viaggio:
Cattivo ( sequenza , matematica ):
Babbo Natale ha sviluppato una nuova sequenza, il numero di Natale . Innanzitutto, esamineremo i seguenti alberi di Natale:
n = 1 n = 2 n = 3 n = 4
*
***
*****
*******
*********
_ * ***
| *** *****
| ***** *******
* | ******* *********
* *** | *** ***
*** ***** n*n | ***** *****
* *** | ******* *******
***** | *** *********
* | ***** ***
|_******* *****
* *******
|_____| *********
2n+1 *
5 18 47 98
La quantità di asterischi determina il numero di Natale. La sequenza va come segue: 5, 18, 47, 98, 177, ...
.
Da qui, possiamo concludere che 94
non è un numero natalizio. Ciò significa che Doorknob
non è solo stato cattivo.
Molto cattivo ( stringa ):
Per questo, dobbiamo scoprire se si Doorknob
tratta di una stringa di scala crescente . Questo è determinato dalle lettere nel nome con A = 1
, B = 2
, C = 3
, ecc .:
Per prima cosa esamineremo la prima lettera, il D
. Questo ha valore 4
. Questo è il nostro punto di partenza La lettera successiva è o
. Questo ha il valore 15
, che è superiore al nostro valore precedente, quindi stiamo andando un gradino più in alto nella scala. Il valore successivo è anche un o
. Questo è lo stesso, quindi non stiamo facendo nulla. Se il valore successivo è superiore al valore corrente, faremo un passo in più. Se il valore successivo è inferiore al valore corrente, andremo a un valore inferiore. Se è lo stesso, rimarremo sullo stesso gradino. Questo visualizzato per Doorknob
, Martin Buttner
e 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
Puoi vedere che è Doorknob
finita più in alto della posizione iniziale. Così Doorknob has been very naughty
. Martin Buttner
e Alex A
non ha superato il punto di partenza. Quindi sono entrambi very very naughty
.
Casi 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
Regole
- È necessario fornire un programma o una funzione che accetta input (che consiste in almeno una lettera).
- L'input consisterà in lettere maiuscole , lettere minuscole e spazi . Gli spazi vengono ignorati durante il processo, ad eccezione della lunghezza dell'input.
- Questo è code-golf , quindi vince l'invio con il minor numero di byte!
n^3 + 2n^2 + 2
, a proposito.
ZZZ...Z = 26 * 99 = 2574
, il che significa che devi solo controllare i numeri di Natale fino a e compreso n=13
. (Informazioni utili per altri golfisti.)
Santa has been very very naughty
. Aspetta cosa?
Santa Claus has been very naughty
. Dovresti anche provare Saint Nick, Saint Nicholas, St. Nick, St. Nicholas, Kris Kringle, Babbo Natale, Pere Noel e tutti gli altri suoi alias - forse uno di loro funzionerà? Anche se un ragazzo "simpatico" dovrebbe aver bisogno di così tanti alias è già abbastanza sospetto ...