Натхненний наступним коміксом 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, виконайте
(95 + [byte value])
або, іншими словами,(126-(31-[byte value]))
байт перед перетворенням в ASCII ... Якщо значення байту все ще менше 32, повторіть крок 5 - Якщо значення байта перевищує 126, то виконайте
([byte value] - 95)
або, іншими словами,(32+([byte value]-127))
байт перед перетворенням в ASCII ... Якщо значення все ж перевищує 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
. Досі не друкується. Або я неправильно розумію?