Вступ
Санта має занадто багато імен для обробки та потребує вашої допомоги! Він потребує в вас , щоб написати програму або функцію, яка виводить 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. Слід також спробувати Святого Ніка, Святого Миколая, Св. Ніка, Святого Миколая, Крис Крингл, Діда Різдва, Пере Ноеля та всіх інших його псевдонімів - можливо, один із них спрацює? Хоча чому "симпатичному" хлопцеві потрібно стільки псевдонінів, вже досить підозрюється ...