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


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!


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.


2
Это, вероятно, победит, если кто-то не может получить решение с двумя символами.
ик

22
На самом деле я знаю решение с двумя символами. Кроме того, в системе Mathematica: 1#. Выход есть #1.
алефальфа

7
@alephalpha: Тогда вы должны опубликовать это как ответ!
ProgramFOX

65

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

!dlrow ,olleH

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


30
Единственное практическое преимущество сумасшедших эзотерических языков - отвечать на эти сумасшедшие вопросы.
Тотимедли

Было бы более практичным, если бы эти вопросы были такими.
Кодзиро

1
Это чертовски умно!
theonlygusti

40

Javascript: 34 символа

reifitnedi detcepxenU :rorrExatnyS

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


8
Умное использование злоупотребления системой через злоупотребление ошибкой
WallyWest

2
Вы, сэр, сделали мой день: D
майор-манн

4
Не оригинальная идея, уже был ответ об этом в python 2.
o0 '.

1
@Lohoris Извините, я этого не видел
scrblnrd3

1
Консоль Firebug в Mozilla Firefox: tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
Кенорб



20

TI-BASIC, 2

i2

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

Выходы 2i


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#");}

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.


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

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


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

9

Perl, 41

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

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

open+0;print ~~ reverse <0>

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


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...

1
Лучший ответ
Безумный

7

Microscript , 11 байт

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

0"Caxq"Caxq

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


5

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

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

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

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

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


Это намного дольше, чем просто использование функции. И вы должны использовать 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

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


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

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-страницу, чтобы избежать конфликта с другими тегами.


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``)()

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


Вам не нужна обертка. 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 спросите Райкера о подробностях, он создатель языка. Я просто читаю документы.
Лысая
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.