Вступ
Санта має занадто багато імен для обробки та потребує вашої допомоги! Він потребує в вас , щоб написати програму або функцію, яка виводить nice
, naughty
, very naughty
або very very naughty
. Щоб визначити, наскільки хтось приємний чи неслухняний, Санта розробив алгоритм:
Ніцца ( поділ , математика ):
Перш за все, ми отримуємо число від імені, додаючи всі літери вгору ( пробіли ігноруються ). Наприклад:
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
Якщо кількість дільниць дорівнює довжині імені, особа вважається nice
. Це означає, що ваша програма повинна виводити [name] has been nice
. Тут дільниками Росії 94
є:
Divisors of 94: 1, 2, 47, 94
Є 4
роздільники, але назва має довжину 8
( пробіли включені ). Висновок, Doorknob
не було приємно. Тож ми продовжуємо нашу подорож:
Неслухняний ( послідовність , математика ):
Санта розробив нову послідовність, різдвяний номер . Спочатку ми розглянемо наступні ялинки:
n = 1 n = 2 n = 3 n = 4
*
***
*****
*******
*********
_ * ***
| *** *****
| ***** *******
* | ******* *********
* *** | *** ***
*** ***** n*n | ***** *****
* *** | ******* *******
***** | *** *********
* | ***** ***
|_******* *****
* *******
|_____| *********
2n+1 *
5 18 47 98
Кількість зірочок визначає різдвяну цифру. Послідовність йде наступним чином:5, 18, 47, 98, 177, ...
.
Звідси можна зробити висновок, що 94
це не різдвяний номер. Це означає, що Doorknob
не просто було неслухняно.
Дуже неслухняний ( рядок ):
Для цього нам потрібно з’ясувати, чи Doorknob
є піднімається сходи стрункою . Це визначається буквами в назві з A = 1
, B = 2
,C = 3
і т.д.:
Спочатку ми подивимось на першу букву - D
. Це має значення 4
. Це наш вихідний пункт. Наступний лист - o
. Це значення 15
, яке вище, ніж попереднє значення, тому ми йдемо на сходинку вище на сходах. Наступне значення - також o
. Це те саме, тому ми нічого не робимо. Якщо наступне значення вище поточного значення, ми підемо на крок вище. Якщо наступне значення нижче поточного значення, ми підемо на ster нижче. Якщо це те саме, ми залишимося на тому ж кроці. Це візуалізується Doorknob
, Martin Buttner
і 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
Ви бачите, що це Doorknob
закінчилося вище, ніж вихідна позиція. Отже Doorknob has been very naughty
. Martin Buttner
і Alex A
не вийшов вище від початкової точки. Так вони обоє very very naughty
.
Тестові справи
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
Правила
- Вам потрібно надати програму або функцію, яка приймає введення (яка складається щонайменше з однієї літери).
- Вхід буде складатися з великих літер , малих літер та пробілів . Проміжки під час процесу ігноруються, за винятком довжини введення.
- Це код-гольф , тому подання з найменшою кількістю байтів виграє!
n^3 + 2n^2 + 2
, btw.
ZZZ...Z = 26 * 99 = 2574
означає, що вам потрібно лише перевіряти різдвяні номери до і включати n=13
. (Корисна інформація для інших гольфістів.)
Santa has been very very naughty
. Чекати, що?
Santa Claus has been very naughty
. Слід також спробувати Святого Ніка, Святого Миколая, Св. Ніка, Святого Миколая, Крис Крингл, Діда Різдва, Пере Ноеля та всіх інших його псевдонімів - можливо, один із них спрацює? Хоча чому "симпатичному" хлопцеві потрібно стільки псевдонінів, вже досить підозрюється ...