Вдохновлен следующим комиксом XKCD:
В «Работа над» Мисси Эллиот, часть припева выглядит следующим образом:
Is it worth it, let me work it
I put my thing down, flip it and reverse it
Имея это в виду, я предлагаю следующий вызов кода гольф:
Создайте код, который по порядку:
- Принимает 8-битный вход ASCII от STDIN; например
n
(Hex 6E или Bin 01101110) - Сдвигает каждый байт на 8 бит на 1 бит (я полагаю, это называется битовый сдвиг вниз), например,
01101110
становится00110111
(«опусти мою вещь»); - Инвертирует биты каждого байта, например,
00110111
становится11001000
(«переверни»); - Инвертирует биты для каждого байта, например
11001000
становится00010011
(«перевернуть его»); - Если значение байта меньше 32, то перед преобразованием обратно в ASCII выполните
(95 + [byte value])
или, другими словами,(126-(31-[byte value]))
на байте ... Если значение байта все еще меньше 32, повторите шаг 5 - Если значение байта больше 126, то перед преобразованием обратно в ASCII выполните
([byte value] - 95)
или, другими словами,(32+([byte value]-127))
в байте ... Если значение все еще больше 126, повторите шаг 6. - Показать недавно преобразованную строку как ASCII.
Пример этого кода в действии:
(Вклад, стоит ли это того?)
workit missy
(«missy» - вход, «workit» - функция)
Теперь за кулисами ...
(позвольте мне работать это ... в двоичный файл)
01101101 01101001 01110011 01110011 01111001
(Положи мою вещь ... Побито)
00110110 00110100 00111001 00111001 00111100
(...Переверните его...)
11001001 11001011 11000110 11000110 11000011
(... И поменять это!)
10010011 11010011 01100011 01100011 11000011
(Преобразовано обратно в десятичную)
147 211 99 99 195
(Выполнить необходимую математику)
147-95 211-95 99 99 195-95 => 52 116 99 99 100
(Конвертировать обратно в ASCII и отобразить вывод)
4tccd
правила
- Самый короткий код выигрывает ... просто так ...
- Ввод может быть через функцию, по подсказке или как угодно, если вы можете заставить правило 1 «работать» для вас ...;)
- Я не за обратимостью, пока вы можете заставить код делать то, что я просил, я буду счастлив ...
Удачи!
0 1 1 0 1 1 0 1
и 0 1 1 0 1 0 0 1
дляmi
P
превращается в значение байта 235
и вычитание 95
оставляет вас с 140
. Все еще непечатно. Или я неправильно понял?