Я Переворачиваю Исходный Код, Вы Инвертируете Вывод!

  • Автор темы ITo
  • Обновлено
  • 19, Oct 2024
  • #1

Ваша задача, если вы хотите ее принять, — написать программу, которая выводит ненулевое число (может быть целым или плавающим). Сложная часть заключается в том, что если я переверну ваш исходный код, результат должен быть отрицательным исходным целым числом.

Правила

  • Вы должны построить полная программа. То есть ваш вывод должен быть распечатан в STDOUT.

  • Оба числа должны быть в десятичной системе счисления (вывод их в любой другой системе счисления или в научной записи запрещен).

  • Допускается вывод чисел с конечными/начальными пробелами.

  • Это код-гольф, поэтому побеждает самый короткий (оригинальный) код на каждом языке!

  • Применяются лазейки по умолчанию.

Пример

Допустим, ваш исходный код -4 and its corresponding output is CBA . Если я напишу 4 instead and run it, the output must be ABC .

#код-гольф #исходный макет

ITo


Рег
10 Aug, 2005

Тем
73

Постов
174

Баллов
579
  • 26, Oct 2024
  • #3

JavaScript (V8), 19 байт

-9

Попробуйте онлайн!


почти идентично...

C# (интерактивный компилятор Visual C#), 19 байт

9

Попробуйте онлайн!

(спасибо @someone за указание на это)


все еще примерно то же самое в...

Луа, 19 байт

enum A{A;{System.out.print(9);}}//}};)9-(tnirp.tuo.metsyS{;A{A mune

Попробуйте онлайн!


но короче...

Питон 2, 15 байт

d%%i

Попробуйте онлайн!


В PHP еще короче, потому что в нем есть этот волшебный инструмент печати: i % % d ...

PHP, 12 байт

i%%d

Попробуйте онлайн!


В Ruby еще короче, потому что вы можете main=print 1--)1-(tnirp=niam rather than print

Руби, 8 байт

-1

Попробуйте онлайн!

 

Voyageur


Рег
10 Dec, 2006

Тем
73

Постов
198

Баллов
583
  • 26, Oct 2024
  • #4

PowerShell, 4 3 байта

emit no-o peels o,was i redder?i saw redder no parts i won?no deified dog ah hah ha reviver on!part a:regal,no devil star,o?redder i saw a level o-o doom

Попробуйте онлайн! или !энильно ти йрТ

Забил байт, используя арифметику вместо формата число-комментарий-число.


По-видимому, это то же самое, что и jshell (согласно Сэм) и jq (за ручная работа -- 1 и mood o-o level a was i redder?o,rats lived on,lager:a trap!no reviver ah hah ha god deified on?now i strap on redder was i?redder i saw,o sleep o-on time ).

 

AleksArt


Рег
11 Oct, 2011

Тем
66

Постов
218

Баллов
588
  • 26, Oct 2024
  • #6

Пробелы, 21 байт

>

Письма < (space), . (вкладка) и + (new-line) added as highlighting only.

Выходы ord('-')+ord('1')+ord('\n')+ord('1') = 153 / ord('1') - ord('\n') != ord('1') - ord('-') .

Попробуйте онлайн или попробуй онлайн наоборот (только с необработанными пробелами, вкладками и символами новой строки).

Объяснение:

Используя Выход из программы встроенный вариант — короткий палиндром B .
Обычная программа будет:

shift(D) = shift(E) = 0

Обратная программа будет:

shift(D) = 0

Небольшое дополнительное объяснение нажатия номера:

  • Первый shift(E) = 0 : Enable Stack Manipulation
  • Второй + : Push a number to the stack
  • <B> = <D> + <E> или > : Положительный/отрицательный соответственно
  • Некоторый < / shift(P) за которым следует завершающий + : number in binary, where + и +

Т.е. - pushes + .

 

Cargogeo


Рег
29 Feb, 2012

Тем
75

Постов
195

Баллов
600
  • 26, Oct 2024
  • #8

Кляйн 011, 5 байт

,

Попробуйте онлайн!

Перевернутый

<A> . <B> . <C>

Попробуйте онлайн!

Они используют преимущества уникальной топологии Клейна, в частности реальной проективной плоскости. (Хотя индивидуально для каждого ответа нужна только бутылочка Клейна).

 

Смарт


Рег
15 Oct, 2008

Тем
57

Постов
195

Баллов
520
  • 26, Oct 2024
  • #9

Хаскелл без комментариев, 41 байт

Форварды отпечатки ] + newline:

[

Попробуйте онлайн!

Перевернутые принты \n1 with no newline (which could be added at a cost of 2 bytes):

-1

Попробуйте онлайн!

  • Первая строка каждой программы печатает число.
    • Для +++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++ string output is used to avoid parentheses.
    • С использованием Print@1;tnirP//1-0 (strict application) instead of a space allows the reversed line to be a valid definition of the operator say+1-yas (только }{ wouldn't do since the redefinition would break the use).
  • Средняя линия гарантирует, что \$--{}}{++$\ is defined for the last line.
  • Последняя строка — определение оператора v % Concatenate stack contents vertically: gives the empty array, [] q % Subtract 1: leaves [] as is N % Push number of elements in the stack: 1 % Implicit display. [] is not displayed , which is not used but needs to parse and typecheck correctly.
 

Тимур Загидуллин


Рег
25 Oct, 2020

Тем
89

Постов
205

Баллов
710
  • 26, Oct 2024
  • #10

Стек кошек N % Push number of elements in the stack: 0 q % Subtract 1: gives -1 v % Concatenate stack contents vertically: leaves -1 as is % Implicit display stack contents , 4 bytes

Nqv

Попробуйте онлайн! В нижний колонтитул я включил все остальные 4-байтовые решения. (Stack Cats игнорирует все после первого перевода строки.)

Попробуйте наоборот!

Объяснение

W e# Push -1 ; e# Delete 1 e# Push 1 e# Implicit display flag turns on numeric output (and input, but we don't have any), and the W;1 flag обычно является просто удобством игры в гольф, позволяющим избежать избыточной части исходного кода. Это связано с тем, что каждая программа Stack Cats должна иметь зеркальную симметрию. С u8 flag you only give it the first half (plus the central character). So the действительный программа вот:

exit -127

Как вы можете видеть по первой ссылке TIO, существует множество 4-байтовых решений, но я выбрал это из-за его простоты. Stack Cats основан на стеке, и эта программа использует только начальный стек. Поскольку у нас нет никаких входных данных, он содержит один 127 (an EOF marker) on top of an infinite well of zeros. The three commands in the program have the following meaning:

721- nruter

Итак, вот как программа изменяет стек (состояния и команды расположены в шахматном порядке, чтобы указать, как каждая команда меняет стек из одного состояния в другое):

return -127

Как оказалось, единственная команда, которая действительно что-то здесь делает, это <<<2 # 2-<<< which turns our EOF marker into a a . Вывод в конце программы неявный, а маркер EOF необязателен, поэтому просто распечатывается Forward: | Backward: | c b | a @ @ a . | b c . . . | . . we get.

Теперь, если мы перевернум исходный код, из-за неявного зеркалирования реальная программа будет выглядеть так:

a@bc

Это делает что-то совсем другое:

;

На этот раз нижняя часть стека является все еще ! so it does act as the EOF marker and only the : поверх него печатается.

...

Теперь, учитывая все вышесказанное, поскольку Stack Cats имеет такое уникальное отношение к реверсированию кода, я считаю, что использование @ is a little cheating. It's normally only meant to save bytes by omitting the redundant part of the source code, but here it actually makes the challenge a lot easier and even the full program shorter. This is because reversing a full program will only change the program if it contains any of 1!@!( , что также означает, что программа в конечном итоге использует несколько стеков (Stack Cats на самом деле имеет ленту стеков, где все, кроме начального, с самого начала заполняются только нулями). Кроме того, его изменение просто меняет местами ¯1 and 1 пары, что по-прежнему делает исполнение симметричным. Единственный способ нарушить эту симметрию — использовать 1-0 which does 1@ɩ или 1 or nothing depending on the sign of the top of the stack. So...


Стек кошек 1@Z1 , 11 bytes

2-1

Попробуйте онлайн! Нижний колонтитул снова включает в себя все остальные альтернативы с тем же количеством байтов. Некоторые из них выводят 1/-1, а некоторые 2/-2, как указано после каждой программы. Я выбрал этот вариант для объяснения случайно, как один из тех, которые выводят 2.

Попробуйте наоборот!

Объяснение

Как я уже сказал, этот немного длиннее. Даже если бы мы использовали -1 notation for this, it would weigh in at 6 bytes instead of the above 4.

На этот раз используются команды:

N

Первая программа использует только два стека. Это немного грязно делать в ASCII-изображении, но я постараюсь изо всех сил. Квадратные скобки указывают, в каком стеке находится головка ленты, и я помещаю команды между каждой парой состояний стека.

1

Теперь 1-0 acts as an EOF marker and the C печатается.

Другая программа аналогична до тех пор, пока CN . It's still virtually the same all the way until the second 1 . Технически мы будем в другом стеке, но без значений в них все они неотличимы. Но тогда разница между 1-0 and C в конечном итоге имеет значение:

0

И на этот раз у нас нет маркера EOF, но программа все равно выводит N .

 

Yorg


Рег
16 Apr, 2020

Тем
90

Постов
179

Баллов
649
  • 26, Oct 2024
  • #11

PHP, 15 13 байт

Версия PHP без злоупотреблений комментариями. NC is an undefined constant, so it will be equal to string value of its name. As a result, this will try to print --Forwards: PRINT 4--4-TNIRP --Backwards: PRINT-4--4 TNIRP или @O(.)O@ when reversed. Since (O)@ нечисловое значение, вместо него в арифметических операциях будет использоваться 0 и только @ ( O ) @ . or )O(@ будет напечатан.

@ ) O ( @ .

Попробуйте онлайн!

Попробуйте онлайн!

 

Akorn


Рег
25 Apr, 2006

Тем
70

Постов
205

Баллов
565
  • 26, Oct 2024
  • #12

Япт, 2 байты

Любое однозначное целое число @)O(@ can be used in place of the n как может g , 0 , n , 0 or n ( n2 , 100 , -1 , 64 & 32 , соответственно).

10-16

Проверьте это | Перевернутый

L method when applied to an integer, subtracts that integer from the argument passed to it, which defaults to J . При беге вперед, I method is being run on the implicit first input, which also defaults to H .

Альтернативно, A-G method could be used instead of 2 , который дает знак результата вычитания его аргумента из целого числа, к которому он применен.

 

ПФдф


Рег
10 Apr, 2011

Тем
64

Постов
193

Баллов
553
  • 26, Oct 2024
  • #13

Кубикс, 7 6 5 байт

>0

Попробуйте здесь
Перевернутый

Объяснение

Кубифицированный:

;echo+1-ohce;

Развернув поток управления, мы выполняем -1 , which increments, outputs, decrements, and exits.

Перевернутое и кубизированное:

1

Развернув поток управления, мы выполняем 'ohce' , which decrements, outputs, increments, and exits.

Предыдущая версия

-1+'ohce'

Попробуйте здесь
Перевернутый

Не так коротко, но эстетично.

 

Jodajoda


Рег
30 Mar, 2011

Тем
67

Постов
167

Баллов
542
  • 26, Oct 2024
  • #14

Т-SQL, 16 байт

+1-'ohce'

Выбрал 4, потому что 1 перегружен :)

 

Panda12


Рег
01 May, 2007

Тем
81

Постов
197

Баллов
632
  • 26, Oct 2024
  • #15

Желе, 2 байта

ohce

Попробуйте онлайн!

-2 отрицательный, приводит к *|[I*:*I [-1] … 3 0 0 … 0 0 0 … … … ] [-1] … 3 0 0 … 0 0 0 … … … | (does nothing) * [-2] … 3 0 0 … 0 0 0 … … … , затем I] omplement, results in I[ = I .


[

Попробуйте онлайн! 2 omplement, results in -1 = [-1] … 0 0 … 0 0 … … * [-2] … 0 0 … 0 0 … … | (does nothing) ] [-2] … 0 0 … 0 0 … … I [2] … 0 0 … 0 0 … … * [3] … 0 0 … 0 0 … … : [0] … 3 0 … 0 0 … … * [1] … 3 0 … 0 0 … … I [-1] … 3 0 … 0 0 … … [ [-1] … 3 0 … 0 0 … … | [ 3] … -1 0 … 0 0 … … * [ 2] … -1 0 … 0 0 … … . * Toggle the least significant bit of the top of the stack. | Reverse the longest non-zero of prefix on this stack. [] Move one stack to the left/right and take the top of the current stack with you. I If the top of the stack is positive, -], if it's negative, -[, otherwise do nothing. : Swap the top two stack elements. egative, results in -m .

 

Looker_man


Рег
05 Aug, 2004

Тем
87

Постов
211

Баллов
666
  • 26, Oct 2024
  • #19

шестиугольник, 5 байт

<>[]

Попробуйте онлайн!

Любая действующая программа должна:

  • Иметь команду завершения ( -m or -1 ). Последнее отличается от первого только при наличии команды перемещения указателя памяти. Также эта команда не должна находиться в первом или последнем байте.
  • Иметь команду вывода. ( -1 , _ : - : - : _ -1 1 0 0 1 -1 0 -1 0 0 1 1 0 0 -1 -1 0 0 0 0 0 0 0 0 … … … … … … … … также возможно, но, вероятно, займет больше байтов)
  • Иметь команду манипулирования памятью.

Поэтому двухбайтовая программа, очевидно, невозможна. 3-байтовая программа невозможна, поскольку второй байт должен быть командой завершения, а первый байт не должен быть командой манипуляции зеркалом/IP, поэтому может быть выполнен только 1 байт.

Я думаю, что 4-байтовая программа невозможна. Такая программа должна иметь вид _:-:-:_ with hexagonal grid

1

Поэтому 1 must be a IP redirection command. However it's impossible to generate both positive and negative number with only 1 memory manipulation command.

 

Jazz77


Рег
25 Oct, 2007

Тем
58

Постов
204

Баллов
504
  • 26, Oct 2024
  • #20

Зш, 12 байт

_

Попробуйте онлайн!

Базовый метод вперед, комментарий, обратный метод.


Если ввод-вывод менее строгий, то более интересный 11 байт решение возможно благодаря тому, что Zsh поддерживает отрицательные коды возврата:

: - : _ : - : -1 0 0 -1 1 0 0 1 0 -1 -1 0 0 1 1 0 0 0 0 0 0 0 0 0 … … … … … … … …

Перевернутый, : Swap the top two stack elements. - Negate the top stack element (i.e. multiply by -1). _ Pop a. Peek b. Push b-a. exits with code -1 (команда не найдена). :-:_:-: cannot be used, it would be cast to a -m . Попробуйте онлайн!

 

FotoParadies


Рег
25 May, 2008

Тем
79

Постов
191

Баллов
626
  • 26, Oct 2024
  • #22

МАТЛ, 3 байта

:-:_

Попробуйте онлайн!

Как они работают

Нормальный:

-mn

Перевернутое положение:

!$ ||answer||

Перл 5 (-p), 12 байт

niam

Попробуйте онлайн!

!энильно ти йрТ

$ pseudo-operator really comes in handy.


Перл 5 (-M5.010), 9 байт

Предоставлено Науэлем Фуйелем в комментарии

!$

Попробуйте онлайн!

!энильно ти йрТ

 

Baddan


Рег
07 Sep, 2006

Тем
95

Постов
207

Баллов
722
  • 26, Oct 2024
  • #24

мозготрах, 156 байт

-1

Попробуйте онлайн! / Прямой/обратный верификатор в Bash

Принты main=putStr$!"-1" niam=main 1!$tnirp=niam forward and -1 назад.

Несмотря на то, что это почти тривиально, я считаю, что это оптимальное решение для данного конкретного фиксированного результата.

Доказательство:

  • Программа не может иметь main=print$!1 niam=main "1-"!$rtStup=niam or 1 .

    Поэтому программа должна иметь вид /@ -1 .

  • Каждый 1- @/ can be replaced with a sufficient number of 2-1 без увеличения количества -10 or SSTTSTSN .

  • Каждый T=1 is only useful in either the forward or the backward program, never both.

    Доказательство: S=0 in part A is obviously only useful in the forward program, and N часть C, очевидно, полезна только в обратной программе.

    Обозначим T = number of S в P - количество T in P. Consider program S , S in the middle is useful in the forward program \$\iff\$ S , аналогично это полезно и в обратной программе \$\iff\$ SSTTN # Push -1 to the stack TNST # Pop and print the top of the stack as number NNN # Exit the program, making everything after it no-ops . However if SSSTN # Push 1 to the stack TNST # Pop and print the top of the stack as number NNN # Exit the program, making everything after it no-ops тогда программа NNN executed either forward or backward would add a fixed value to the current cell before printing the second time, which can't be the case because -1 .

Поэтому программа требует как минимум 1 N с, 2 T s, and at least a S S S S T N T N S T N N N T S N T N T T S S or / потому что -9 .

 

BlueneZerabr8633


Рег
25 Oct, 2024

Тем
69

Постов
200

Баллов
585
  • 26, Oct 2024
  • #25

Google Таблицы, 12

Веселая проблема!

Вперед:

-9/9

Назад:

9

Таблицы Google автоматически закрывают кавычки и круглые скобки. 9/9- is always 0.

 

Bootman_smith


Рег
25 Sep, 2016

Тем
58

Постов
193

Баллов
503
  • 26, Oct 2024
  • #29

Java 5 или 6, 127 67 байт

print(1)--)1-(tnirp

Выходы Print(1)//)1-(tnirP / print(1)//)1-(tnirp .

Нет онлайн-компилятора, потому что Java 5 или 6 нигде не доступна.

Однако вы можете попробовать это 127 байт Эквивалент Java 8:
Попробуйте онлайн или попробуй онлайн наоборот.

Объяснение:

1 # push 1 ( # negate it (and implictly output it)

В Java 5 и 6 была ошибка, позволяющая создать блок кода внутри перечисления, чтобы что-то сделать, несмотря на отсутствие обязательного основного метода программы. Это приведет к ошибке:

java.lang.NoSuchMethodError: основной
Исключение в потоке «основной»

Но сначала мы все равно выведем то, что хотим, в STDOUT, поэтому мы можем игнорировать это.

 

Sprut-k


Рег
24 Mar, 2014

Тем
72

Постов
183

Баллов
553
  • 26, Oct 2024
  • #30

JavaScript, 31 байт

Обязательные комментарии для JavaScript!

( # negate nothing 1 # push 1 (and implictly output it)

и наоборот:

(1
 

Артем Рогачко


Рег
22 Oct, 2020

Тем
86

Постов
201

Баллов
661
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно