Напечатайте свой код задом наперед - обратный квин

83

Напишите программу, которая печатает свой собственный исходный код задом наперед, другими словами, eniuq .

Подсчет очков:

  • +50, если вы используете данные из интернета.
  • +25, если вы читаете свой собственный исходный код.
  • +1 очко за персонажа
  • Самый низкий балл побеждает.

Правила:

  • Не используйте другие файлы (например reverse.txt)
  • Минимальная длина кода составляет два символа.
  • Ваша программа не может быть палиндромом.
Айк
источник
1
Похоже, это было сделано раньше , просто без правила "нет палиндромов".
Изи
3
Эти баллы бонусы или штрафы ? Вы должны указать словами, является ли что-то штрафом или бонусом, потому что выражение +10может означать либо «оценка, как если бы у него было на 10 символов больше, чем на самом деле», либо «код может содержать еще 10 символов, которые не будут быть забил ", или другие интерпретации.
AJMansfield
7
@AJMansfield Самая низкая оценка выигрыша означает, что + x будет штрафом, -x будет бонусом.
Изи
9
Один вопрос, который у меня возникает, заключается в том, почему получение данных из интернета дает больший штраф, чем чтение исходного файла?
AJMansfield
4
Woohoo, 1-е место в списке горячих сетевых вопросов: D Наш сайт нуждается в большем внимании ...
Doorknob

Ответы:

69

GolfScript - 2


1

(т.е. \n1где \nнаходится символ перевода строки)

Выход:

1

(то есть 1\n)


Процитирую Илмари :

GolfScript автоматически добавляет новую строку в конец вывода

Таким образом, новая строка, за которой следует число, напечатает число, за которым следует новая строка.

Джастин
источник
14
+1 Я не думаю, что что-то может побить решение Mathematica.
Кая
26
Довольно скучное решение ...
theonlygusti
@theonlygusti Это сценарий для гольфа, чего ожидать ...
Программы
96

да? , 5 символов

!hcuO

Я на самом деле понятия не имею, как это работает, но если вы загрузите переводчик, и если вы напишите !hcuO, то вы получитеOuch!

Чтобы запустить это, вам нужно выполнить программу следующим образом:

huh.exe !hcuO

На самом деле он будет искать файл с именем !hcuO, но он не существует, поэтому он выводитOuch!

ProgramFOX
источник
93
+1 за написание чего-то, чего вы не понимаете
Cruncher
30
Разве это не маленькая ирония, что вы не понимаете, как работает ваш собственный код, в esolang, который по замыслу тоже не должен понимать ваш код?
Изи
@Iszi Это шутка.
AJMansfield
9
Я не уверен, что вы используете huh?правильно, хотя мне трудно найти правильную документацию. Кажется, что использование предназначено huh.exe <path to source code>и Ouch!возвращается для неверного пути. Попробуйте поместить свой код в реальный файл и передать этот файл в качестве аргумента huh?и посмотреть, что произойдет. Также интересно видеть, что он генерирует Notes.txtфайл с некоторыми комментариями.
Изи
8
Хорошо, эта штука только что сказала мне, что думает, что понимает, но я не видел, чтобы что-то случилось. Возможно я должен прекратить играть с этим в моей основной системе.
Изи
85

Mathematica, 3 символа

a 2

a 2значит aраз 2. Так ответ 2 a.

alephalpha
источник
2
Это, вероятно, победит, если кто-то не может получить решение с двумя символами.
ик
22
На самом деле я знаю решение с двумя символами. Кроме того, в системе Mathematica: 1#. Выход есть #1.
алефальфа
7
@alephalpha: Тогда вы должны опубликовать это как ответ!
ProgramFOX
65

H9 + , 13 символов

!dlrow ,olleH

Как говорится на веб - странице, все символы, которые не являются H, 9или +игнорируются, так что моя программа будет печататьHello, world!

ProgramFOX
источник
30
Единственное практическое преимущество сумасшедших эзотерических языков - отвечать на эти сумасшедшие вопросы.
Тотимедли
Было бы более практичным, если бы эти вопросы были такими.
Кодзиро
1
Это чертовски умно!
theonlygusti
40

Javascript: 34 символа

reifitnedi detcepxenU :rorrExatnyS

выходы SyntaxError: Unexpected identifier, по крайней мере, в консоли Chrome

scrblnrd3
источник
8
Умное использование злоупотребления системой через злоупотребление ошибкой
WallyWest
2
Вы, сэр, сделали мой день: D
майор-манн
4
Не оригинальная идея, уже был ответ об этом в python 2.
o0 '.
1
@Lohoris Извините, я этого не видел
scrblnrd3
1
Консоль Firebug в Mozilla Firefox: tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
Кенорб
27

Python, 43 41

_=']0~::[_%%_ tnirp;%r=_';print _%_[::~0]
Shane
источник
24

Mathematica, 2 байта

1#

Выходы:

# 1

Джей Босамия
источник
20

TI-BASIC, 2

i2

Где iмнимое число.

Выходы 2i

Timtech
источник
1
Это работает только на домашнем экране, а не внутри PRGM.
Kernigh
8
@kernigh Вы пробовали это? Работает нормально. (Если последний оператор программы TI-BASIC оценивается как выражение, его результат печатается вместо «Готово», когда программа завершается)
AJMansfield
18

Бейсик, 22 12 7 знаков

:-)

1 enil ni rorre xatnyS

РЕДАКТИРОВАТЬ: Если вам разрешено войти в программу в непосредственном режиме, то это может быть уменьшено до rorre xatnyS(12 символов).

В BBC BASIC вам нужно всего 7 символов:

ekatsiM
брезгливый оссифраж
источник
13

C ++ 472 символа

Много символов, но я не могу придумать более простой способ на языке c.

#include<iostream>
#include<string.h>
#define p(t) std::cout<<'}'<<';'<<')'<<strrev(&std::string(#t)[0])<<t;
char* strrev(char*p){char*t=p;char*q=p;while(q&&*q)++q;for(--q;p<q;++p,--q)*p=*p^*q,*q=*p^*q,*p=*p^*q;return t;}
int main(){p("(p{)(niam tni};t nruter;q*^p*=p*,q*^p*=q*,q*^p*=p*)q--,p++;q<p;q--(rof;q++)q*&&q(elihw;p=q*rahc;p=t*rahc{)p*rahc(verrts *rahc;t<<)]0[)t#(gnirts::dts&(verrts<<')'<<';'<<'}'<<tuoc::dts )t(p enifed#>h.gnirts<edulcni#>maertsoi<edulcni#");}
user11232
источник
13

удар

$ dnuof ton dnammoc :found :hsab-
-bash: dnuof: command not found

Длина: 31 символов.


ш

$ dnuof ton dnammoc :found :hs-
sh: dnuof: command not found

Длина: 29 символов.

Этот не может работать на некоторых дистрибутивах Linux, но работает на OSX.


Tcsh

$ .dnuof ton dnammoC :found.
.dnuof: Command not found.

Длина: 26 символов.


CSH

% .dnuof ton dnammoC :found.
.dnuof: Command not found.

Длина: 26 символов.


Победителем является:

КШ

$ dnuof ton :found :hsk
ksh: dnuof: not found

Длина: 21 символов.


Выше должно работать на всех * ОС Unix.

kenorb
источник
32
У меня не работает, у меня есть команда по имениdnuof
Kroltan
8
Я забыл добавить, он не работает на дистрибутивах, которые dnuofустановили (что бы это ни было). Чертовы хакеры.
Кенорб
5
Хахаха, есть команда по имени dnuof? : D что это делает?
Дверная ручка
11

GolfScript, 12 символов

"-1%.`"-1%.`

Этот код берет строку в двойных кавычках "-1%.`", переворачивает ее ( -1%), дублирует ее ( .) и отменяет evals ( `) вторую копию, восстанавливая двойные кавычки вокруг нее.

Предыдущая запись (13 символов):

{`'.~'+-1%}.~

Основано на 8-символьной квине {'.~'}.~из этого ответа ; дополнительные 5 символов необходимы для строкового преобразования и обратного вывода.

Ps. Обратите внимание, что GolfScript автоматически добавляет новую строку в конец вывода. Если это считается частью вывода, соответствующий символ новой строки может быть добавлен перед любой версией кода без влияния на вывод за стоимость одного дополнительного символа.

Илмари Каронен
источник
10

Befunge 98 - 10 символов

"8k,'!1+,@

Это работает, если ваш интерпретатор не интерпретирует переносимые строки после "добавления дополнительного пробела. Если ваш интерпретатор интерпретирует обернутые строки, как это, то это решение с 11 символами работает ( потому что повторяющиеся пробелы в строковом литерале интерпретируются как один ):

"9k,'!1+,@ 

Если я могу использовать gбез штрафа, то они также работают (7 и 8 символов соответственно):

"5k,g,@

а также

"6k,g,@ 
Джастин
источник
9

Руби, 60

puts(2,s=<<2.chop.reverse,s)
puts(2,s=<<2.chop.reverse,s)
2

По мотивам классического рубинового квайна.

histocrat
источник
Хорошее использование heredocs.
Джон Пурди
9

Perl, 41

$_=q{print~~reverse"\$_=q{$_};eval"};eval

Старый 52-символьный ответ (27 + 25 штрафов)

open+0;print ~~ reverse <0>

Читает собственный источник, сохраняет обратное в скаляре и печатает его.

smcg
источник
1
scalarОператор может быть заменен ~~. Однако вам нужно добавить +25 к вашему счету за чтение собственного исходного кода.
хлебница
@breadbox отметил
smcg
+1. Я собирался опубликовать что-то вроде моего решения для оболочки :, $_='say"lave;\047",~~reverse,"\047=_\$"';evalно ваше решение короче :-) Обратите внимание, что вы можете использовать его до 39 символов say. Надеюсь, что вы победите все эзотерические странности :-)
Томас
@ Томас, вы предлагаете заменить printна say? В итоге ничего не печатается.
smcg
Вы запускали Perl с -Mfeature=sayопцией?
Томас
9

Деление , 6 байт

Редкий случай обобщенной квин такой же длины, что и нормальная квин :

"LO+!'

Идея та же, что и у обычного quine, но мы используем левый атом (начиная с L), поэтому режим печати пересекает код в обратном порядке.

Мартин Эндер
источник
8

J: 26

Стандартное цитирование (26 символов) : путем определения функции и передачи ей собственного определения в кавычках:

|.(,],2#{:)'|.(,],2#{:)'''

Возможно, может быть сделано короче.

Специфично для J (33 символа) : определив переменную и спросив, в каком файле была определена переменная, т.е. этот, затем распечатав содержимое этого файла:

1!:2&2|.1!:1(4!:4 a=:<'a'){4!:3''

Должен быть сохранен и запущен из скрипта (т.е. не в REPL, потому что тогда ответ на вопрос «ваш аргумент не был определен в файле», поэтому нет файла для чтения).

Дэн Брон
источник
2
Второй должен получить бонус + 25, чтобы прочитать собственный файл.
Йоханнес Кун
2
@JohannesKuhn: штраф, но да.
Jazzpi
1
«Бонус» звучит приятнее.
Йоханнес Кун
7

> <> , 25 байт

Я был удивлен, обнаружив, что это еще не было сделано. :)

...yhsif sllems gnihtemoS

Вставьте код здесь и запустите его.

.это команда Jump, выскакивают xи yиз стека, и перемещение IP к (x, y)в окне кода. В этом случае стек пуст, поэтому выводится единственное сообщение об ошибке языка:

Something smells fishy...
mbomb007
источник
1
Лучший ответ
Безумный
7

Microscript , 11 байт

Я вроде должен был сделать это.

0"Caxq"Caxq

Удивительно, но это на самом деле короче самого короткого из известных истинных языков языка. qи aв остальном эквивалентны, за исключением того, что qдобавляет кавычки, а aне -.

SuperJedi224
источник
5

JavaScript jQuery 119 92 74 70 персонажей

alert($("#answer-16051 pre code").text().split("").reverse().join(""))

Теперь использую jQuery, как предложено в комментариях minitech, и вручную оборачивая, <pre><code>чтобы я мог использовать, text()не опасаясь, что другие блоки кода в этом посте будут мешать. <h4>Обертывание вручную с chrome было несовместимо, когда я тестировал его, поэтому теперь он должен работать в большинстве браузеров.

Эта программа, если запустить ее с этой страницы, находит блок кода прямо над ним, переворачивает его содержимое и помещает его в окно оповещения.

Его достаточно легко проверить, просто вставьте его в консоль разработчика.

AJMansfield
источник
Это намного дольше, чем просто использование функции. И вы должны использовать jQuery (на этой странице) или, по крайней мере, в querySelectorлюбом случае ...
Ry-
@minitech спасибо за совет, я поменял его querySelectorсейчас. Я хотел бы изучить возможность jQuery, но, похоже, мне понадобится немного больше времени, чтобы разобраться.
AJMansfield
@minitech хорошо, спасибо за jQueryсовет. (Я только начал изучать JavaScript вчера.)
AJMansfield
Мне нравится это решение; Нестандартное мышление.
theonlygusti
4

PHP, 41 символ (+25)

Не знаю, правильно ли я понял задание. Но вот попытка PHP:

while(!isset($s) || $s) echo isset($s) ? array_pop($s) : ($s = str_split(file_get_contents(__FILE__)) and null);

редактировать: это может быть намного короче:

echo strrev(file_get_contents(__FILE__));

Но так как это может быть так просто, это, вероятно, не то, что спрашивают ...

п-х
источник
Когда я нажимаю кнопку «Выполнить», я получаю целую кучу бесполезной чепухи (вот ее небольшой отрывок >? ;)llun dna ))__ELIF__(f$(tilps_rts = s$( : )s$(pop_yarra ? )s$(tessi ohce )s$ || )s$(tessi!(elihw ;"stnetnoc_"=.f$ ;'teg_elif'=f$ php?<>?}};ESLAF nruter;"ec6x\i66x\02x\e47x\96x\rw ; гораздо больше). Кроме того, укажите количество символов; это код гольф. Кроме того, кажется, что вы читаете свой исходный файл, так что добавьте 25 к вашему количеству символов, и это ваш счет. Самый низкий балл побеждает.
Джастин
@Quincunx Во-первых, это назад ... но, во-вторых, это исходный код, который генерирует phpfiddle! (но в обратном направлении ...) Они, кажется, многое избегают, пытаясь сохранить вещи в безопасности. Замените array_popна, array_shiftчтобы увидеть исходный код не задом наперед ...
nl-x
Да, я могу видеть перевернутый исходный код, но что со всем посторонним текстом? Есть много escape-последовательностей, но есть и такие, которых нет (например, ESLAF nruterт.е. return FALSE).
Джастин
@Quincunx Извините, я не понимаю, проявляете ли вы интерес к работе phpFiddle или критикуете мой код. Если это последнее, то в мою защиту поместите мой код в файл .php и запустите его в браузере, и он будет работать без ошибок. Я просто подумал, что phpfiddle - это хорошая вещь, чтобы показать вам, так что вы можете увидеть немного его внутренней работы.
NL-X
4

MATLAB, 78 знаков:

 
|
.snoisserpxe ro stnemetats BALTAM ni dilav ton si retcarahc tupni ehT :rorrE

Обратите внимание, что решение требует, чтобы вы начали со специального символа (alt + 0160) и что оно печатает в точности перевернутое сообщение. (В отличие от решения Python)

Деннис Джаэруддин
источник
4

UNIX shell, 31

Реальное решение на 52 персонажа:

A='printf "A$ lave;\047`echo $A|rev`\047=A"';eval $A

Но будьте осторожны! Честность не окупается в современном мире! Штраф слишком низкий !!

6 символов + 25 = 31:

rev $0
Tomas
источник
На OSX rev $0генерирует ошибку: rev: illegal option -- b.
Кенорб
4

MS-DOS, 24 байта

eman elif ro dnammoc daB

Выход:

Bad command or file name
Нил
источник
3

JavaScript, 62

function f(){alert((f+'f()').split('').reverse().join(''))}f()

Работает для меня на последнем Chrome (v 31.0.1650.63). Некоторые другие браузеры могут выдавать другой вывод. (Если вы измените этот вывод, он будет работать: P)

Дверная ручка
источник
3

SmileBASIC, 118 102 байта

FOR I=-101TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXTFOR I=-100TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXT
12Me21
источник
2

JavaScript, 56

($=_=>_!=$._?_?$(_.slice(1))+_[0]:')':$('($='+$+')('))()
Рыбаковым
источник
Пожалуйста, укажите вашу среду, потому что это не работает в Chrome. Это носорог или что?
Джордж Райт
@ GeorgeReith: Все, что с поддержкой функции стрелки ES6. Например, все SpiderMonkeys должны работать нормально (включая Rhino).
Ry-
2

CSS, 88 байт

<style>:before,*{display:block;unicode-bidi:bidi-override;direction:rtl;content:'<style>

Вставьте пустую HTML-страницу, чтобы избежать конфликта с другими тегами.

Mama Fun Roll
источник
2

JavaScript, 53 50 46 43 байта

q=_=>("q="+q+";q()").split("").reverse().join("");q()

(q=_=>`(q=${q})()`.split("").reverse().join(""))()

(q=_=>`(q=${q})()`.split``.reverse().join``)()

(q=_=>[...`(q=${q})()`].reverse().join``)()

Пожалуйста, помогите мне сократить это.

ericw31415
источник
Вам не нужна обертка. q=_=>[...`q=${q}`].reverse().join`` работает так же хорошо.
Rɪᴋᴇʀ
Если я удалю обертку, она не будет автоматически выполнена.
ericw31415
это не нужно. Функции в порядке.
Rɪᴋᴇʀ
Но затем код возвращает ссылку на функцию, а не ее вывод.
ericw31415
@ ericw31415 правильно. вызов функции необходим.
Mama Fun Roll
2

Нечеткое окто гуакамоле, 4 байта

KNU_

Kпечатает _UNK, Nтолкает Noneи Uтолкает 0. И _выскакивает верхнее значение в стеке (но не печатает). Так что только _UNKпечатается.

Лысая банта
источник
Почему Kвывод _UNK?
caird coinheringaahing
@RandomUser спросите Райкера о подробностях, он создатель языка. Я просто читаю документы.
Лысая