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 naughtyo 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 94sono:
Divisors of 94: 1, 2, 47, 94
Ci sono 4divisori, ma il nome ha lunghezza 8( spazi inclusi ). Conclusione, Doorknobnon è 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 94non è un numero natalizio. Ciò significa che Doorknobnon è solo stato cattivo.
Molto cattivo ( stringa ):
Per questo, dobbiamo scoprire se si Doorknobtratta 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 Buttnere 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 è Doorknobfinita più in alto della posizione iniziale. Così Doorknob has been very naughty. Martin Buttnere Alex Anon 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 ...