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łącznien=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 ...Odpowiedzi:
Pyth 86 bajtów
Najwyraźniej byłem miły w tym roku ...
Wypróbuj online: pakiet demonstracyjny lub testowy
Wyjaśnienie:
źródło
CJam,
109108107 bajtówWypróbuj online.
Wyjaśnienie
Pełne wyjaśnienie będzie musiało poczekać do później, ale oto kod podzielony na różne sekcje:
źródło
MATL , 117 bajtów
Mój najdłuższy jak dotąd program MATL :-) :-(
Wykorzystuje bieżącą wersję języka, która jest wcześniejsza niż to wyzwanie.
Przykłady
Wyjaśnienie
źródło
Lua,
371284 bajtówJestem pewien, że jest miejsce na ulepszenia, chciałbym trochę wyciąć, jeśli jest.
Edycja: 4 miesiące później wiele się nauczyłem o lua i chciałem wrócić do tego zgłoszenia, zrobiłem dobrze: wyciąłem 87 bajtów!
Bez golfa
Stare rozwiązanie 371 bajtów
Wersja bez golfa :)
źródło
Poważnie, 138 bajtów
Hex Dump:
Wypróbuj online
Trudno jest skutecznie grać w golfa ze względu na to, jak trudna jest skomplikowana kontrola przepływu w serialu. Pomogłaby możliwość zagnieżdżania funkcji bez użycia rejestrów. (Wyobrażam sobie, że można to już nieco skrócić poprzez rozsądne użycie przechowywanych funkcji, ale spowodowałoby to taki kod spaghetti, że nie mam serca tego spróbować).
Wyjaśnienie:
źródło
Python 2, 249 bajtów
źródło