Мова компілятора, яка не має вимовляння абревіатури, скорочено INTERCAL , є дуже унікальною мовою програмування. Серед невідтворюваних якостей - його бінарні оператори.
Два двійкові оператори INTERCAL переплітаються (також відомі як змішування ) і вибирають . Interleave представлений зміною (¢), а select представлений виворотом (~).
Interleave працює, беручи два числа в діапазоні 0-65535 і чергуючи їх біти. Наприклад:
234 ¢ 4321
234 = 0000011101010
4321 = 1000011100001
Result: 01000000001111110010001001
Output: 16841865
Виберіть твори, взявши два числа в діапазоні 0-65535, взявши біти в першому операнді, які знаходяться в тому ж положенні, що і 1s, у другому операнді, і право упаковуючи ці біти.
2345 ~ 7245
2345 = 0100100101001
7245 = 1110001001101
Taken : 010 0 10 1
Result: 0100101
Output: 37
У цьому виклику вам буде надано бінарний вираз за допомогою операції перемежування або вибору. Ви повинні обчислити результат, використовуючи найменші можливі байти.
Вираз буде подано у вигляді розділеного пробілом рядка, що складається з цілого числа в 0-65535, пробілу ¢або ~пробілу та цілого числа в 0-65535.
Введення та вихід можуть здійснюватися через будь-яку стандартну систему (STDIN, функція, командний рядок тощо). Стандартні лазівки заборонені.
Приклади:
5 ¢ 6
54
5 ~ 6
2
51234 ¢ 60003
4106492941
51234 ~ 60003
422
Це кодовий гольф - найменше виграш байтів. Удачі.
EDIT: Оскільки деякі мови не підтримують символ зміни (¢) INTERCAL, ви можете використовувати натомість символ великих грошей ($) у розмірі 5-байтного штрафу.
$.
FIVE ONE TWO THREE FOUR? І чи не слід виводити римськими цифрами?