Wprowadzenie
Święty Mikołaj ma zbyt wiele nazw do przetworzenia i potrzebuje twojej pomocy! On potrzebuje napisać program lub funkcję, która wyprowadza nice
, naughty
, very naughty
lub very very naughty
. Aby określić, jak ktoś jest miły lub niegrzeczny, Mikołaj opracował algorytm:
Nicea ( podział , matematyka ):
Przede wszystkim otrzymujemy liczbę od nazwy, dodając wszystkie litery w górę ( spacje są ignorowane ). Na przykład:
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
Jeśli liczba dzielników jest równa długości nazwiska, osoba jest brana pod uwagę nice
. Oznacza to, że Twój program powinien generować dane wyjściowe [name] has been nice
. Oto dzielniki 94
:
Divisors of 94: 1, 2, 47, 94
Istnieją 4
dzielniki, ale nazwa ma długość 8
(ze spacjami ). Wniosek, Doorknob
nie był miły. Kontynuujemy naszą podróż:
Niegrzeczny ( sekwencja , matematyka ):
Święty Mikołaj opracował nową sekwencję, numer świąteczny . Najpierw przyjrzymy się następującym choinkom:
n = 1 n = 2 n = 3 n = 4
*
***
*****
*******
*********
_ * ***
| *** *****
| ***** *******
* | ******* *********
* *** | *** ***
*** ***** n*n | ***** *****
* *** | ******* *******
***** | *** *********
* | ***** ***
|_******* *****
* *******
|_____| *********
2n+1 *
5 18 47 98
Ilość gwiazdek określa numer świąteczny. Sekwencja idzie w następujący sposób: 5, 18, 47, 98, 177, ...
.
Stąd możemy stwierdzić, że 94
nie jest to numer świąteczny. Oznacza to, że Doorknob
nie tylko było niegrzeczne.
Bardzo niegrzeczny ( string ):
W tym celu musimy dowiedzieć się, czy Doorknob
jest to ciąg drabiny podnoszącej . To zależy od liter w nazwie z A = 1
, B = 2
, C = 3
itp .:
Najpierw przyjrzymy się pierwszym piśmie D
. To ma wartość 4
. To jest nasz punkt wyjścia. Następny list to o
. Ma wartość 15
wyższą niż nasza poprzednia, więc idziemy o krok wyżej na drabinie. Następna wartość to również o
. To jest to samo, więc nic nie robimy. Jeśli następna wartość jest wyższa niż wartość bieżąca, pójdziemy o krok wyżej. Jeśli następna wartość jest niższa niż bieżąca wartość, pójdziemy znacznie niżej. Jeśli będzie tak samo, pozostaniemy na tym samym kroku. Ten wizualizowane za Doorknob
, Martin Buttner
i 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
Widać, że Doorknob
zakończyło się wyżej niż pozycja początkowa. Tak Doorknob has been very naughty
. Martin Buttner
i Alex A
nie przekroczył punktu początkowego. Więc są oboje very very naughty
.
Przypadki testowe
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
Zasady
- Musisz podać program lub funkcję, która pobiera dane wejściowe (które składają się z co najmniej jednej litery).
- Dane wejściowe będą składały się z wielkich liter , małych liter i spacji . Spacje są ignorowane podczas procesu, z wyjątkiem długości danych wejściowych.
- To jest golf golfowy , więc wygrywanie z najmniejszą ilością bajtów wygrywa!
n^3 + 2n^2 + 2
, btw.
ZZZ...Z = 26 * 99 = 2574
, co oznacza, że wystarczy sprawdzić numery świąteczne aż do włącznie n=13
. (Przydatne informacje dla innych golfistów.)
Santa has been very very naughty
. Czekaj, co?
Santa Claus has been very naughty
. Czy warto też wypróbować Świętego Nicka, Świętego Mikołaja, Świętego Mikołaja, Świętego Mikołaja, Krisa Kringle, Ojca Bożego Narodzenia, Pere Noela i wszystkich innych pseudonimów - może jeden z nich zadziała? Chociaż to, dlaczego „miły” facet potrzebuje tak wielu pseudonimów, jest już dość podejrzane ...