- 21, Oct 2024
- #1
Вдохновлен следующим комиксом XKCD:
В песне Мисси Эллиот «Work It» часть припева звучит следующим образом:
4tccd
147-95 211-95 99 99 195-95 => 52 116 99 99 100
Принимая это во внимание, я предлагаю следующую задачу по гольфу:
Создайте код, который выполняет в следующем порядке:
- Принимает 8-битный ввод ASCII из STDIN; например
147 211 99 99 195
(Hex 6E, or Bin 01101110) - Смещает 8 бит каждого байта вниз на 1 бит (я думаю, это называется
10010011 11010011 01100011 01100011 11000011
becomes11001001 11001011 11000110 11000110 11000011
побитовый сдвиг вниз), например - («положи мой
00110110 00110100 00111001 00111001 00111100
becomes01101101 01101001 01110011 01110011 01111001
вещь вниз»); - Инвертирует биты каждого байта, например
workit missy
becomes(32+([byte value]-127))
("подбросить - это");
([byte value] - 95)
, or in other words,(126-(31-[byte value]))
Меняет местами биты для каждого байта, например - («перевернуть это»);
(95 + [byte value])
, or in other words,00010011
Если значение байта меньше 32, выполните - , на байте раньше
преобразование обратно в ASCII... Если значение байта по-прежнему меньше 32, повторите шаг 5.
Если значение байта больше 126, выполните
11001000
("missy" being the input, "workit" is the function)
, на байте раньше
преобразование обратно в ASCII... ЕСЛИ значение по-прежнему больше 126, повторите шаг 6.
11001000
Отобразите вновь преобразованную строку как ASCII.
00110111
Пример этого кода в действии:
00110111
(Ввод: стоит ли оно того?)
01101110
Теперь за кадром...
n
(дайте мне поработать... в двоичном формате)
I put my thing down, flip it and reverse it
(Положи мою вещь... Побитно)
Is it worth it, let me work it
(...Переверните...)
- (... И перевернуть!)
- (преобразовано обратно в десятичное число)
- (Выполните необходимые математические вычисления)
(Преобразуйте обратно в ASCII и отобразите результат)
Правила