Эта задача довольно проста и использует три разных символа оператора. Ваша задача, учитывая простую последовательность букв, выполните следующую задачу , чтобы закодировать его с помощью <
, >
, *
. Вы можете использовать заглавные или строчные буквы, вам не нужно обрабатывать оба.
Шифр Объяснение
Шифр прост, вы используете операции увеличения и уменьшения, чтобы перейти от буквы 1 к конечной букве, с *
вашей функцией «отправки». Оператор для «увеличения» будет >
и «уменьшения» будет <
.
Пример использования слова adbc
:
- Начните с первой буквы слова, выведите эту букву.
a
- Затем используйте
>
и<
(например, brainfuck), чтобы «перейти» от текущей буквы к следующей.a>
приведет к «поднятию»a
на 1 к буквеb
.a<
может привести к тому,z
что вы уменьшаете букву (она переносится, вы всегда должны выбирать направление, в результате которого происходит НАИМЕНЕЕ число операций). - После вывода правильной минимизированной комбинации
<
и>
выведите a,*
чтобы обозначить, что мы достигли следующей буквы.
Шаги для кодирования adbc
будут:
a # a
a>>>* # ad
a>>>*<<* # adb
a>>>*<<*>* # adbc
Примеры
Шаги для кодирования aza
будут:
a # a
a<* # az
a<*>* # aza
Больше примеров:
"abcdef" = "a>*>*>*>*>*"
"zyaf" = "z<*>>*>>>>>*"
"zzzzzz" = "z*****"
"z" = "z"
"zm" = "z<<<<<<<<<<<<<*" or "z>>>>>>>>>>>>>*" (equidistant)
"zl" = "z>>>>>>>>>>>>*"
"alphabet" = "a>>>>>>>>>>>*>>>>*<<<<<<<<*<<<<<<<*>*>>>*<<<<<<<<<<<*"
"banana" = "b<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*" OR "b<*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*"
"abcdefghijklmnopqrstuvwxyz" = "a>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*"
"abcdefz" = "a>*>*>*>*>*<<<<<<*"
правила
- Мы кодируем, а не декодируем, так что не путайте это.
- Вы можете предположить, что сообщение будет содержать буквы
[A-Z]
или[a-z]
, по вашему выбору. - Вы можете использовать любой не буквенный / цифровой / зарезервированный символ для обозначения
*
(EG$
). - У вас должно быть окончание
*
, оно не подразумевается в повторах. - Вы можете предполагать, что пустых строк нет, но возможен один символ.
- Если он находится на одинаковом расстоянии до следующей буквы, вы можете выбрать направление.
- Это код-гольф , выигрывает наименьшее количество байт.
Пожалуйста, объясните свой ответ, это помогает другим учиться таким образом.
zl
следует использовать >
.
alphabet
на мой взгляд , a>>>>>>>>>>>*>>>>*<<<<<<<<*<<<<<<<*>*>>>*<<<<<<<<<<<*
и zl
должно быть z>>>>>>>>>>>>*
и banana
должно второе решение существуетb<*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*
zm
. @jorg хорошие уловы, исправил все это, было ручным трудом.
abcdefghijklmnopqrstuvwxyz
а не его собственный ввод?