Откровенная плагиат из рип-офф . Иди голосуй!
Ваша задача, если вы хотите принять это, - написать программу / функцию, которая выводит / возвращает свой целочисленный ввод / аргумент. Сложность в том, что если я переверну ваш исходный код, то результат должен быть исходным целым числом с отрицанием.
Примеры
Допустим, ваш исходный код есть ABC
и его ввод 4
. Если я пишу CBA
вместо этого и запускаю, вывод должен быть -4
.
Допустим, ваш исходный код есть ABC
и его ввод -2
. Если я пишу CBA
вместо этого и запускаю, вывод должен быть 2
.
Ввод 0
может дать 0
или -0
, однако, если вы поддерживаете подписанный ноль, -0
должен дать 0
.
Ответы:
PowerShell ,
1814 байтПопробуйте онлайн! ! Enilno TY YRT
Первый из тривиальных ответов о злоупотреблении комментариями
источник
J , 3 байта
Попробуйте онлайн!
-&0
это «аргумент минус 0»0&-
это "0 минус аргумент"источник
][-
и т.д.JavaScript, 11 байт
Попробуйте онлайн! | Перевернутый
источник
машинный код x86, 3 байта
Вышеуказанные байты кода определяют функцию, которая не работает: она просто возвращает управление вызывающей стороне. За этой функцией следуют два байта мусора, которые не будут выполнены, поскольку они приходят после возврата - они находятся в «ничейной стране». В мнемонике ассемблера:
Хорошо, теперь какой-то тролль приходит и меняет порядок байтов в обратном порядке:
Эти байты теперь определяют функцию, которая принимает целочисленный аргумент в
EAX
регистре, отрицает его и возвращает управление вызывающей стороне. В мнемонике ассемблера:Итак ... это было просто. :-)
Обратите внимание, что мы можем сделать инструкцию «отрицание» тем, что хотим, поскольку она никогда не выполняется в «прямой» ориентации и выполняется только в «обратной» ориентации. Следовательно, мы можем следовать той же схеме, чтобы делать произвольно более сложные вещи. Например, здесь мы берем целочисленный аргумент в другом регистре (скажем,
EDI
чтобы следовать соглашению о вызовах System V, обычно используемом в системах * nix), отрицать его и возвращать в обычномEAX
регистре:↓ ↓
источник
Желе , 2 байта
Попробуйте онлайн! и его обратное .
источник
ḷN
, не нужно логики ИЛИ. : DNa
слова даютaN
эстетический эффект :)Haskell , 8 байт
Функция анонимной идентичности, превращающаяся в вычитание из
0
обратного.Попробуйте онлайн!
Перевернутый:
Попробуйте онлайн!
источник
Пробел , 48 байт
Буквы
S
(пробел),T
(табуляция) иN
(новая строка) добавляются только как подсветка.Незначительная модификация моего ответа в Whitespace для обращения исходного кода, вы отрицаете вывод! вызов .
Попробуйте онлайн или попробуйте онлайн в обратном порядке (только с необработанными пробелами, вкладками и новыми строками).
Объяснение:
Использование программы выхода, встроенной в короткий палиндром
NNN
.Обычная программа будет:
Обратная программа будет:
Небольшое дополнительное объяснение нажатия номера:
S
: включить манипуляцию стекаS
: толкнуть число в стекS
илиT
: положительный / отрицательный соответственноS
/T
сопровождаемые трейлингомN
: число в двоичном виде, гдеS=0
иT=1
Т.е.
SSTTSTSN
толкает-10
. Для0
нас не нужно явноеS=0
, так простоSSSN
илиSSTN
достаточно.источник
Perl 6 / Raku, 3 байта
Попробуйте онлайн!
Создает любой кодовый блок. Читайте обычно его стандартный эквивалент блока
-> \x {x - 0}
, но в обратном порядке он становится-> \x {0 - x}
.источник
C (лязг) , 23 байта
Попробуйте онлайн!
источник
Brain-Flak , 7 байтов
Попробуйте онлайн!
Перевернутый:
Попробуйте онлайн!
Примечание: работает только в интерпретаторах, поддерживающих комментарии (например, работает в Rain-Flak, но не в BrainHack)
Если мы также поменяем открывающие / закрывающие скобки вместо того, чтобы просто поменять местами байты, мы можем сделать это в 8 байтах, не используя комментарии:
Попробуйте онлайн!
Попробуйте наоборот!
источник
#
запускает комментарий, поэтому круглые скобки в исходной версии игнорируются.Лабиринт / Гексагония , 6 байтов
Лабиринт:
Попробуйте онлайн! и его обратное .
Hexagony:
Попробуйте онлайн! и его обратное .
Как?
источник
Python 3 , 22 байта
Попробуйте онлайн!
Лямбда, которая реализует функцию тождества (или отрицание)
источник
MarioLANG , 22 байта
Попробуйте онлайн!
Он просто вводит и выводит число, прежде чем он падает до EOF
наоборот:
Попробуйте онлайн!
Он зацикливается до тех пор, пока входное значение не станет равным 0, а выходное значение будет равно -input, и он скажет число.
источник
р , 23 байта
Я решил попробовать без комментариев.
Вперед
Попробуйте онлайн!
Обратный
Попробуйте онлайн!
В прямой версии
+
действует бинарный оператор, и-
является унарным оператором.С другой стороны, оно
+
становится одинарным, а-
двоичным. Таким образом, функция сканирования принимает аргументы:file=""
это означаетwhat=0
, что стандартный ввод, и , которые также являются значениями по умолчанию. Таким образом, когда+
унарный символ является первым, аргумент находится справа, а когда он является двоичным, первый аргумент находится слева.часть кода не делает ничего действительно полезного, так что в некотором смысле мой код на самом деле не намного более корректен, чем использование трюка с комментариями.
источник
+
переопределение для использования как унарного, так и бинарного. Мне потребовалась минута, чтобы понять, как это было проанализировано ... Ни одно другое имя оператора не сделало бы эту работу.Haskell, 12 байт
Попробуйте онлайн! Обратный:
Попробуйте онлайн!
Не такой короткий, как ответ Орджана Йохансена , но без комментариев.
источник
Perl 5 (
-p
),76 байт-1 благодаря @primo
TIO
Комментарий не меняет ввод
Отрицание ввода
TIO
источник
$_*=$#
TIO . Обратите внимание, что#
должен быть самый последний байт программы, иначе он будет интерпретироваться как переменная$#
, а не как последний индекс массива с именем <empty>.$#
дает либо ошибку (если # не последний символ), либо ничего-p
или-n
. Я подозреваю, что шаблон имеет к этому какое-то отношение ...-p/-n
добавляет;
после кода. Что означает, что$#
на самом деле$#;
: размер массива@;
. Если размер@;
изменяется, результат больше не корректен ( TIO ). Во всяком случае, это супер умно, молодец! :)perl -MO=Deparse -p <(echo -n '$_*=$#')
, потому что, кажется,perl -MO=Deparse -pe '$_*=$#'
добавляет новуюGaia , 2 байта
Попробуйте онлайн!
Перевернутый:
источник
Backhand ,
65 байтПопробуйте онлайн! Попробуй вдвое!
Сделано немного сложнее из-за природы указателя в Backhand.
Я не думаю, что возможно получить что-то более короткое,ха-ха, оказывается, я был неправ. Это не дублирует никаких инструкций и повторно использует команды ввода, вывода и завершения между двумя программами. В настоящее время я думаю, что это оптимально, так как вам нужно всеIO-@
команды для работы, а в 4-байтовой программе вы можете выполнить только две из этих команд.Объяснение:
Указатель в Backhand перемещается на три ячейки на галочку и отскакивает от границ ячейки, что означает, что общая логика перекрывается. Однако вы можете управлять этой скоростью с помощью
v
и^
командами.Оригинальная программа выполняет инструкции
IO-@
, которые вводятся как число, выводятся как число, вычитаются, завершаются. Очевидно, что вычитание излишне. В коде это:Обращенная программа выполняется
v-I-vO-@
.v
Уменьшает шаги указателя между клещами и-
вычитает в нижней части стека, которая неявно равна нулю. Дополнительные-
команды ничего не делают. Программа выполняется какисточник
Wolfram Language (Mathematica) , 9 байт
Попробуйте онлайн!
Вперед: читать
((1)&*0+#-0)&*1
=#&
Назад: читать
((1)&*0-#+0)&*1
=-#&
источник
R , 14 байтов
Попробуйте онлайн!
Полная программа, которая читает число, или читает и отрицает число. Обратная функциональность защищена встроенным комментарием
источник
Python 3 ,
2214 байтПопробуйте онлайн!
Использует
int
конструктор класса и встроенный псевдоприватный метод.источник
0.
будет интерпретироваться как число, за которым следует символ05AB1E , 2 байта
Попробуйте онлайн!
Перевернутый
источник
Befunge-98 (FBBI) , 6 байтов
Попробуйте онлайн! Попробуйте наоборот!
источник
APL (Dyalog Unicode) ,
133 байтаПопробуйте онлайн!
Тривиальный ответ. Возвращает
arg
или¯arg
.Сохранено 10 байтов, не будучи глупым (спасибо Адам).
Изменил полученный 3-байтовый код на более подходящую функцию.
источник
Машинный язык Тьюринга , 39 байт
Положительный
Отрицательный
Этот был немного хитрее, чем я думал, в основном потому, что мне пришлось преодолеть свои предрассудки о наличии кода, который работает с ошибками «компиляции».
источник
> <> ,
54 байтаиспользует инициализацию стека с
-v
опцией, поместите туда свою входную переменную.Попробуйте онлайн!
Или попробуйте разворот
объяснение
источник
Стека кошек
-mn
, 2 байтаПопробуйте онлайн!
Попробуйте наоборот!
объяснение
Оказывается, это на самом деле намного проще, чем предыдущая задача в Stack Cats. Полная программа (после подачи заявки
-m
) здесь есть-X-
.X
используется для смены стеков влево и вправо от ленточной головки, то есть не влияет на начальный стек, поэтому мы можем его игнорировать. Но тогда программа фактически просто--
(отрицает вершину стека дважды), который ничего не делает.Для обратной программы подачи
-m
даетX-X
. ОпятьX
же ничего не делает, поэтому программа эффективно просто-
, что сводит на нет вершину стека.Единственное другое 2-байтовое решение есть
-=
, но оно практически такое же. Единственная разница в том, что=
меняются только вершины соседних стеков, а не все стеки.Но опять же, использование
-m
немного похоже на читерство, поэтому ниже приведено решение, которое использует полностью зеркальную программу.Стека кошек
-n
, 7 байтПопробуйте онлайн!
Попробуйте наоборот!
объяснение
Соображения из предыдущего ответа по-прежнему применимы : любое допустимое решение должно использовать парные символы и
I
. Шесть возможных решений (включенных в ссылку TIO) практически одинаковы.-
и_
эквивалентны в этой программе, и:
могут быть заменены|
илиT
(которые делают то же самое для ненулевых входов и по совпадению также работают для нулевых входов). Я просто выбрал это, чтобы объяснить, потому что это проще всего.Так что помните, что начальный стек содержит входные данные сверху
-1
(поверх бесконечно большого числа нулей), тогда как все остальные стеки на ленте содержат только нули. Stack Cats также обладает свойством, что любая программа четной длины ничего не делает (при условии, что она завершается, но мы все равно не можем использовать циклы для этой задачи). То же самое, очевидно, верно для любой программы нечетной длины, центральный символ которой ничего не делает ... давайте посмотрим:Поэтому вторая половина программы точно отменяет первую половину, и в итоге мы
-1
снова получаем ввод сверху .Обратная программа есть
:I>-<I:
. Давайте посмотрим, как это меняет вещи:источник
Пакет, 34 байта
Повторяет (
ECHO.
) ввод (%1
). Остальная часть первой строки технически перенаправляетSTDERR
в файл с именемMER@
, но это не имеет значения.Вторая строка закомментирована (
REM...
).Перевернутый
Использует арифметический режим команды set (
SET /a
) для вычитания (-=
) input (%1
) из неопределенной переменной (a
), которая эквивалентна0 - input
. Опять же, остальная часть первой строки технически перенаправляетSTDERR
в файл с именемMER@
, но это не имеет значения.Вторая строка закомментирована (
REM...
).источник
Брахилог , 2 байта
Брахилог неявно вводит слева и выводит справа.
&
игнорирует что-либо слева и передает ввод функции вправо.ṅ
вынуждает каждую сторону этого быть отвергнутыми версиями друг друга.Попробуйте онлайн
источник
Треугольный ,
87 байтовПопробуйте онлайн!
Ungolfed:
Перевернутый:
Попробуйте онлайн!
Предыдущая версия (8 байт):
источник