Introdução
Papai Noel tem muitos nomes para processar e precisa de sua ajuda! Ele precisa de você para escrever um programa ou uma função, que gera nice
, naughty
, very naughty
ou very very naughty
. Para determinar como alguém é legal ou malcriado, o Papai Noel desenvolveu um algoritmo:
Nice ( divisão , matemática ):
Primeiro, obtemos um número do nome adicionando todas as letras ( espaços ignorados ). Por exemplo:
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 o número de divisores for igual ao comprimento do nome, a pessoa será considerada nice
. Isso significa que seu programa deve ser exibido [name] has been nice
. Aqui, os divisores de94
são:
Divisors of 94: 1, 2, 47, 94
Existem 4
divisores, mas o nome tem comprimento 8
( espaços incluídos ). Conclusão, Doorknob
não tem sido bom. Então, continuamos nossa jornada:
Impertinente ( sequência , matemática ):
Papai Noel desenvolveu uma nova sequência, o número de natal . Primeiro, veremos as seguintes árvores de natal:
n = 1 n = 2 n = 3 n = 4
*
***
*****
*******
*********
_ * ***
| *** *****
| ***** *******
* | ******* *********
* *** | *** ***
*** ***** n*n | ***** *****
* *** | ******* *******
***** | *** *********
* | ***** ***
|_******* *****
* *******
|_____| *********
2n+1 *
5 18 47 98
A quantidade de asteriscos determina o número de natal. A sequência é a seguinte:5, 18, 47, 98, 177, ...
.
A partir daqui, podemos concluir que 94
não é um número de natal. Isso significa que Doorknob
não foi apenas desobediente.
Muito travesso ( corda ):
Para isso, precisamos descobrir se Doorknob
é uma corda de escada de elevação . Isto é determinado pelas letras no nome com A = 1
, B = 2
, C = 3
, etc .:
Primeiro, vamos olhar para a primeira letra, a D
. Isso tem valor 4
. Este é o nosso ponto de partida. A próxima letra é o
. Isso tem o valor 15
, que é maior que o nosso valor anterior, portanto, vamos dar um passo mais alto na escada. O próximo valor também é um o
. É o mesmo, então não estamos fazendo nada. Se o próximo valor for maior que o valor atual, iremos um passo mais alto. Se o próximo valor for menor que o valor atual, iremos um valor inferior. Se for o mesmo, permaneceremos no mesmo passo. Este visualizado por 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
Você pode ver que Doorknob
terminou mais alto que a posição inicial. Então Doorknob has been very naughty
. Martin Buttner
eAlex A
não superou o ponto de partida. Então eles são os dois very very naughty
.
Casos de teste
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
Regras
- Você precisa fornecer um programa ou função que receba entrada (que consiste em pelo menos uma letra).
- A entrada será composta por letras maiúsculas , minúsculas e espaços . Os espaços são ignorados durante o processo, exceto pelo comprimento da entrada.
- Isso é código-golfe , então a submissão com a menor quantidade de bytes ganha!
n^3 + 2n^2 + 2
, btw.
ZZZ...Z = 26 * 99 = 2574
, o que significa que você só precisa verificar os números de Natal até e inclusive n=13
. (Informações úteis para outros jogadores de golfe.)
Santa has been very very naughty
. Espere o que?
Santa Claus has been very naughty
. Também deve tentar São Nick, São Nicolau, São Nick, São Nicolau, Kris Kringle, Pai Natal, Pere Noel e todos os outros pseudônimos - talvez um deles funcione? Embora por um "bom" cara deve precisar de tantos aliases já é muito suspeito ...