У меня и моего друга есть эта игра, в которую мы играем словами. Это забавное времяпрепровождение, и оно включает в себя «отмену» букв в слове, пока ничего не останется. Я действительно устал от того, что он намного быстрее меня, поэтому твоя задача - реализовать это и позволить мне наконец победить его. Очевидно, что поскольку я должен сделать программу максимально простой для скрытия, она должна быть как можно меньше.
Как работает эта игра?
В игре довольно простой алгоритм. Он сокращает алфавитную строку до тех пор, пока ее нельзя будет уменьшить, что делает его своего рода хэшем. Реальную игру, которую мы, люди, делаем, очень сложно реализовать, но ее можно упростить до следующего алгоритма:
Вы начинаете с того, что складываете алфавит пополам и выстраиваете две части так:
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
ISb
Для слова , которые полностью уравновешивает (например love
), то вывести «0 символ»: -
. Обратите внимание, что при вводе -
все равно будет игнорироваться. Это имеет значение только на выходе.
Если величина числа больше 13, то вы начинаете удваивать числа a
«и z
». Вы в основном берете столько же a
или z
«вписывается» в число и берете все, что осталось в последней букве, например:
code golf: 43.
Подходит 3 a
и 4 осталось:
aaa 4: j
result: aaaj
Подсказка: эта часть в основном divmod
за исключением того, что она округляется до нуля, а не -infinity
(например, -43 станет 3 z
-х, а a -4
- это p
так zzzp
).
Примечание: черточка не появляется, если она a
или z
вписывается идеально, только если это точно 0
.
Разъяснения:
- Хэш регистр в чувствительном
- Стандартные лазейки не допускаются
- Ввод / вывод может быть в любом не слишком странном формате: стандартный ввод, стандартный вывод, аргумент командной строки, функция и т. Д.
- Это код-гольф, поэтому выигрывает самый короткий размер в байтах .
Примеры:
hello world --> b
love --> -
this is an example --> aak
hello *&*(&(*&%& world --> b
good bye --> ae
root users --> zzs
love
пусто ...