У мене з другом є ця гра, в яку ми граємо словами. Це веселе проведення часу і воно передбачає "скасування" букв словом, поки не залишиться нічого. Мені справді набридло йому бути набагато швидшим за мене, тому ваша робота - це реалізувати це, і дозвольте мені остаточно його перемогти. Очевидно, оскільки я маю зробити так, щоб програма була якомога легшою, щоб її приховати, вона повинна бути невеликою.
Як працює ця гра?
Гра - досить простий алгоритм. Він зменшує алфавітний рядок, поки його більше не можна зменшити, тим самим зробивши його своєрідним хешем. Справжню гру, яку ми робимо, люди дуже важко реалізувати, але її можна спростити за допомогою наступного алгоритму:
Ви починаєте, склавши алфавіт навпіл і вишикувавши такі шматки, як:
a b c d e f g h i j k l m
z y x w v u t s r p q o n
Потім, починаючи з середини, ви присвоюєте додатні цілі числа верхній половині, а від’ємні - нижній:
a b c d e f g h i j k l m
13 12 11 10 9 8 7 6 5 4 3 2 1
z y x w v u t s r p q o n
-13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
Потім ви берете свій рядок (ми будемо використовувати hello world
) і ігноруючи будь-які неабетичні символи, перекладіть його:
h e l l o w o r l d
6 9 2 2 -2 -10 -2 -5 2 10
Потім ви підсумовуєте літерні значення. Ті, що викладені на попередній діаграмі (наприклад, d
і w
, l
і o
), скасують, а інші додадуть.
sum(6 9 2 2 -2 -10 -2 -5 2 10 )=12
12 - це число для b
, тому хеш hello world
єb
Для слова , які повністю врівноважує (наприклад love
), то вивести «0 символ»: -
. Зауважте, що вхідні дані -
все ще не враховуються. Має значення лише у виході.
Якщо величина чисельності більша за 13, тоді ви починаєте подвоюватися на a
"s" і z
"s" Ви в основному берете стільки a
"s" або z
"fit" в число, і берете все, що залишилося в останній букві, як так:
code golf: 43.
Підходить 3 a
-х і має 4:
aaa 4: j
result: aaaj
Підказка: Ця частина в основному виключається divmod
за винятком того, що вона закручується до нуля, а не -infinity
(наприклад, -43 стане 3 z
-м і, а -4
це p
так zzzp
).
Примітка: тире не підходить, якщо a
«або z
» ідеально вписується, лише якщо це точно 0
.
Роз'яснення:
- Хеш випадок в чутливий
- Стандартні лазівки заборонені
- Введення / виведення може бути у будь-якому форматі, який не надто чужий, stdin, stdout, аргумент командного рядка, функція тощо
- Це кодовий гольф, тому найкоротший розмір виграє в байтах .
Приклади:
hello world --> b
love --> -
this is an example --> aak
hello *&*(&(*&%& world --> b
good bye --> ae
root users --> zzs
love
порожній ...