Ваша задача, если вы хотите принять это, - написать программу, которая выводит ненулевое число (может быть целым или плавающим). Сложность в том, что если я переверну ваш исходный код, то результат должен быть исходным целым числом с отрицанием.
правила
Вы должны построить полную программу . То есть ваш вывод должен быть распечатан на STDOUT.
Оба числа должны быть в базе 10 (вывод их в любую другую базу или с научными обозначениями запрещен).
Вывод чисел с пробелами / пробелами разрешен.
Это код-гольф, поэтому выигрывает самый короткий (оригинальный) код на каждом языке!
Применяются стандартные лазейки.
пример
Допустим, ваш исходный код ABC
и соответствующий вывод 4
. Если я пишу CBA
вместо этого и запускаю, вывод должен быть -4
.
code-golf
source-layout
HighlyRadioactive
источник
источник
-
(0x45 = 0b00101101) работает в Jelly --
дает -1, поскольку он определяет литерал -1, тогда какṆ
(0xB4 = 0b10110100) выдает 1, поскольку он выполняет логическое неявного ввода нуля. (Конечно,Ṇ
работает так же хорошо: p)Ответы:
05AB1E , 2 байта
Попробуйте онлайн!
! Enilno TY YRT
источник
JavaScript (V8) , 19 байт
Попробуйте онлайн!
почти идентичен ...
C # (интерактивный компилятор Visual C #) , 19 байт
Попробуйте онлайн!
(спасибо @someone за указание на это)
все еще в значительной степени то же самое в ...
Луа , 19 байт
Попробуйте онлайн!
но короче ...
Python 2 , 15 байт
Попробуйте онлайн!
Еще короче в PHP, потому что у него есть этот волшебный инструмент печати:
<?=
...PHP , 12 байт
Попробуйте онлайн!
Еще меньше в Ruby, потому что вы можете,
inspect
а не печататьРубин , 8 байт
Попробуйте онлайн!
источник
Print(1)//)-1(tnirP
. ( Попробуйте онлайн! )class A{static void Main(){System.Console.Write(1);}}//}};)1-(etirW.elosnoC.metsyS{)(niaM diov citats{A ssalc
1<!--!<1-
(9 байт) с HTML, который будет-1<!--!<1
при обращении. Это точно так же, как ваш ответ.print(1)--)1-(tnirp
PowerShell ,
43 байтаПопробуйте онлайн! или !
Гольф байт с использованием арифметики вместо числа числовых комментариев-чисел.
По-видимому, это то же самое, что и jshell (для Сэма ) и jq (для manatwork -
1-0
и0-1
).источник
1-0
0-1
/// , 4 байта
Выходы
9
.Попробуйте онлайн!
Перевернутый:
Выходы
-9
.Попробуйте онлайн!
Все до того,
/
как напечатано, в то время как остальное игнорируется (не очень часто используется косая черта, поэтому я точно не знаю, что происходит, но ничего не выводится).источник
/
Начинается процесс шаблона чтения, и , таким образом, символы после того , как прочитанный в шаблон, не выводимый./\-//1-
и подумал, что я умен. : DКляйн 011, 5 байт
Попробуйте онлайн!
Перевернутый
Попробуйте онлайн!
Они используют уникальную топологию Кляйна, в частности, реальную проективную плоскость. (Хотя индивидуально для каждого ответа нужна только бутылка Кляйна).
источник
Пробел , 21 байт
Буквы
S
(пробел),T
(табуляция) иN
(новая строка) добавляются только как подсветка.Выходы
1
/-1
.Попробуйте онлайн или попробуйте онлайн в обратном порядке (только с необработанными пробелами, вкладками и новыми строками).
Объяснение:
Использование программы выхода, встроенной в короткий палиндром
NNN
.Обычная программа будет:
Обратная программа будет:
Небольшое дополнительное объяснение нажатия номера:
S
: включить манипуляцию стекаS
: толкнуть число в стекS
илиT
: положительный / отрицательный соответственноS
/T
сопровождаемые трейлингомN
: число в двоичном виде, гдеS=0
иT=1
Т.е.
SSTTSTSN
толкает-10
.источник
T-SQL, 16 байт
Выбрал 4, потому что 1 перегружен :)
источник
select 1#1-tceles
(17 байт). Вы можете проверить результат на sqlfiddle.com/#!9/9eecb/107825 .Japt , 2 байта
Любое целое число , одна цифра
>0
может быть использована вместо ,2
как можетA-G
,H
,I
,J
илиL
(10-16
,32
,64
,-1
и100
, соответственно).Проверьте это | Перевернутый
n
Метод , когда применяется к целому числу, вычитает , что целое число от аргумента передается к нему, который по умолчанию0
. При запуске впередn
метод выполняется на неявном первом входе, который также по умолчанию равен0
.В качестве альтернативы,
g
метод может быть использован вместоn
, что дает знак результата вычитания его аргумента из целого числа, к которому он применяется.источник
Haskell без комментариев, 41 байт
Вперед печатает
1
+ перевод строки:Попробуйте онлайн!
Обратная печать
-1
без перевода строки (которая может быть добавлена по цене 2 байта):Попробуйте онлайн!
-1
вывода строки используется, чтобы избежать скобок.$!
(строгое применение) вместо пробела позволяет перевернутой строке быть допустимым определением оператора!$
(просто$
не будет делать, так как переопределение нарушит использование).niam
это определено для последней строки.!$
, который не используется, но нуждается в правильном разборе и проверке типов.источник
PHP ,
1513 байтВерсия PHP без комментариев.
ohce
является неопределенной константой, поэтому она будет равна строковому значению ее имени. В результате это попытается напечатать+1-'ohce'
или-1+'ohce'
когда полностью изменено. Так'ohce'
как это не числовое значение, 0 будет использоваться вместо арифметических операций и только1
или-1
будет напечатано.Попробуйте онлайн!
Попробуйте онлайн!
источник
Google , 3 байта
Попробуйте онлайн!
! Enilno TY YRT
источник
Желе , 2 байта
Попробуйте онлайн!
N
egative, приводит к0
, затемC
omplement, приводит к1-0
=1
.Попробуйте онлайн!
C
omplement, приводит к1-0
=1
.N
egative приводит-1
.источник
К (нгн / к) , 3 байта
Попробуйте онлайн!
я что-то пропустил? кажется очевидным для языков REPL
источник
Cubix ,
765 байтПопробуйте здесь
Обратное
объяснение
Cubified:
Развернув поток управления, мы выполняем
)O(@
, который увеличивает, выводит, уменьшает и выходит.Перевернутое и кубизированное:
Развернув поток управления, мы выполняем
(O)@
, который уменьшает, выводит, увеличивает и завершает работу.Предыдущая версия
Попробуйте здесь
Обратное
Не так коротко, но эстетично.
источник
@)O(@
на 5 байт и восстановление симметрии :)Рунические чары , 4 байта
Попробуйте онлайн! Попробуйте наоборот!
Я не мог найти способ повторно использовать
1
команду, даже за счет байта или двух.1@ɩ
тоже работает, но такое же количество байтов.источник
APL (Dyalog Unicode) ,
43 байтаПопробуйте онлайн!
Тривиальный ответ. Печатает
1
при запуске и¯1
при запуске в обратном порядке.источник
Стека кошек
-mn
, 4 байтаПопробуйте онлайн! В нижний колонтитул я включил все остальные 4-байтовые решения. (Stack Cats игнорирует все после первого перевода строки.)
Попробуйте наоборот!
объяснение
В
-n
флаг очереди на цифровой выход (и вход, но мы не имеем какой - либо), и-m
флаг , как правило , только для удобства игры в гольф , который позволяет избежать избыточной части исходного кода. Это потому, что каждая программа Stack Cats должна иметь зеркальную симметрию. С-m
флагом вы даете ему только первую половину (плюс центральный символ). Таким образом, фактическая программа здесь:Как вы можете видеть из первой ссылки TIO, существует множество 4-байтовых решений, но я выбрал эту для простоты. Stack Cats основан на стеке, и эта программа использует только начальный стек. Поскольку у нас нет входных данных, он содержит один
-1
(маркер EOF) поверх бесконечной ямы нулей. Три команды в программе имеют следующее значение:Итак, вот как программа модифицирует стек (состояния и команды расположены в шахматном порядке, чтобы указать, как каждая команда меняет стек из одного состояния в другое):
Оказывается, единственная команда, которая действительно что-то здесь делает, -
_
это превращает наш маркер EOF в a1
. Вывод в конце программы неявный, а маркер EOF является необязательным, так что это просто выводит полученное1
нами.Теперь, если мы перевернем исходный код из-за неявного зеркалирования, реальная программа станет:
Это делает что-то совсем другое:
На этот раз в нижней части стека находится еще
-1
так оно действует как EOF маркер и только-1
на нем печатается....
Теперь, после всего сказанного, поскольку у Stack Cats такие уникальные отношения с обращением кода, я чувствую, что использование
-m
- это немного обман. Обычно он предназначен только для сохранения байтов, пропуская избыточную часть исходного кода, но здесь это фактически облегчает задачу и даже сокращает всю программу. Это связано с тем, что изменение полной программы изменит программу только в том случае, если она содержит какой-либо из них<>[]
, что также означает, что программа заканчивает тем, что использует несколько стеков (на самом деле Stack Cats имеет ленту стеков, где все, кроме исходного, заполнены только с нулями для начала). Кроме того, реверсивный его затем просто обменивает<>
и[]
пары, которые до сих пор делают выполнение симметричным. Единственный способ нарушить эту симметрию - это использоватьI
, которое делает-]
или-[
или ничего в зависимости от знака вершины стека. Так...Стека кошек
-n
, 11 байтПопробуйте онлайн! Нижний колонтитул снова включает все другие альтернативы с тем же количеством байтов. Некоторые из них выводят 1 / -1, а некоторые выводят 2 / -2, как указано после каждой программы. Я выбрал это, чтобы объяснить случайным образом как один из тех, которые выводят 2.
Попробуйте наоборот!
объяснение
Как я уже сказал, этот немного длиннее. Даже если бы мы использовали
-m
для этого обозначение, оно весило бы 6 байтов вместо вышеуказанных 4.Команды, используемые на этот раз:
Первая программа использует только два стека. Это немного грязно в искусстве ASCII, но я буду стараться изо всех сил. Квадратные скобки указывают, в каком стеке находится головка ленты, и я буду помещать команды между каждой парой состояний стека.
Теперь
-1
действует как маркер EOF и2
печатается.Другая программа остается неизменной до
[
. До второго практически не меняетсяI
. Технически мы будем в другом стеке, но без значений на них все они неразличимы. Но тогда разница междуI[
и вI]
конечном итоге имеет значение:И на этот раз у нас нет маркера EOF, но программа все еще выводит
-2
.источник
Зш , 12 байт
Попробуйте онлайн!
Основной форвард, комментарий, обратный метод.
Если ввод / вывод менее строг, то возможно более интересное 11-байтовое решение благодаря Zsh, поддерживающему отрицательные коды возврата:
В обратном порядке
721- nruter
выходит с кодом127
(команда не найдена).exit -127
не может быть использован, он будет приведен кu8
. Попробуйте онлайн!источник
CJam , 3 байта
Попробуйте онлайн!
Как они работают
Нормальная версия:
Обратная версия: вы поняли идею.
источник
MATL , 3 байта
Попробуйте онлайн!
Как они работают
Обычный:
Перевернутый:
источник
Wolfram Language (Mathematica) ,
2118 байтПопробуйте онлайн!
-3 спасибо Мартину Эндеру
источник
Гексагония , 5 байт
Попробуйте онлайн!
Любая действующая программа должна:
@
или:
). Последний отличается только для первого, когда есть команда перемещения указателя памяти. Также эта команда не должна быть в первом или последнем байте.!
,;
Также возможно , но, вероятно , займет больше байт)Поэтому двухбайтовая программа, очевидно, невозможна. 3-байтовая программа невозможна, поскольку второй байт должен быть командой завершения, а первый байт не должен быть командой манипулирования зеркалом / IP, поэтому может быть выполнен только 1 байт.
Я думаю, что 4-байтовая программа не возможна. Такая программа должна иметь форму
a@bc
с гексагональной сеткойСледовательно,
a
должна быть команда перенаправления IP. Однако невозможно сгенерировать как положительное, так и отрицательное число только одной командой манипулирования памятью.источник
Haskell , 28 байт
Попробуйте онлайн!
Попробуйте это enilno!
источник
Треугольный , 4 байта
Попробуйте онлайн!
Выходы 1.
Ungolfed:
Перевернутый:
Попробуйте онлайн!
Выходы -1.
источник
Java 5 или 6,
12767 байтВыходы
9
/-9
.Нет онлайн-компилятора, потому что Java 5 или 6 нигде не доступен.
Однако вы можете попробовать этот 127-байтовый эквивалент Java 8:
попробуйте онлайн или попробуйте в обратном порядке .
Объяснение:
В Java 5 и 6 была ошибка, позволяющая вам создать блок кода внутри перечисления, чтобы что-то сделать, несмотря на отсутствие обязательного основного метода программы. Это приведет к ошибке:
Но все равно сначала выдаст то, что мы хотели бы вывести, поэтому мы можем игнорировать это .
источник
Голанг , 109 байт
И его обратное:
Попробуйте онлайн!
источник
Println
Может бытьPrint
, иimport "fmt";
не нужно пространство:import"fmt";
. :)Perl 5 (-p), 12 байт
Попробуйте онлайн!
! Enilno TY YRT
}{
Псевдо-оператор действительно пригодится.Perl 5 (-M5.010), 9 байт
Предоставлено Науэлем Фуйе в комментарии
Попробуйте онлайн!
! Enilno TY YRT
источник
say 1#1-yas
say+1-yas
иsay-1+yas
Сетчатка , 6 байт
Печать
1
.Попробуйте онлайн!
Печать
-1
.Попробуйте онлайн!
Объяснение:
1
Это ... ничего не делает. Из-за
`
этого это замена на<
to-
(с конфигурацией-
, которая ничего не делает), но вход пуст, поэтому вывод также пуст.И этот второй этап сопоставляет пустое регулярное выражение с пустым входом и подсчитывает количество совпадений, которое равно 1. Выходные данные неявны.
Объяснение:
-1
На этот раз мы заменим пустое регулярное выражение на
-
. Это действительно превращает пустой вход в единый-
.Здесь конфигурация действительно что-то делает:
<
печатает входные данные этапа перед выполнением этапа, поэтому мы печатаем-
. Затем-
подсчитывает дефисы на входе сцены, который снова равен 1. Из-за неявного вывода, он печатает1
после после-
, давая нам по-1
мере необходимости.источник
источник
брейкфук , 156 байт
Попробуйте онлайн! / Вперед / назад верификатор в Bash
Печать
-1
вперед и\n1
назад.Несмотря на то, что это почти тривиально, я считаю, что это оптимальное решение для этого конкретного фиксированного выхода.
Доказательство:
Программа не может иметь
[
или]
.Поэтому программа должна иметь форму
<A> . <B> . <C>
.Каждый
,
может быть заменен на достаточное количество<
без увеличения количества+
или-
.Каждый из
+
них полезен только в прямой или обратной программе, но не в обеих.Доказательство:
+
в части А, очевидно, полезно только в программе вперед, и+
в части C, очевидно, полезна только в обратной программе.Обозначение⟺ ⟺
shift(P)
= число<
в P - число>
в P. Рассмотрим программу<B> = <D> + <E>
,+
посередине полезно в программе впередshift(E) = 0
Точно так же полезно в отсталой программеshift(D) = 0
, Однако, еслиshift(D) = shift(E) = 0
затем программа,B
выполняемая либо вперед, либо назад, добавит фиксированное значение в текущую ячейку перед печатью во второй раз, чего не может быть, потому чтоord('1') - ord('\n') != ord('1') - ord('-')
.Следовательно, программе нужно как минимум
ord('-')+ord('1')+ord('\n')+ord('1') = 153
+
s, 2.
s и хотя бы a<
>
или,
потому чтоshift(B) != 0
.источник