Роздрукуйте свій код назад - зворотне квине


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 Це golfscript, очікуйте ...
Redwolf Programs

96

так? , 5 символів

!hcuO

Я насправді НЕ маю уявлення, як це працює, але якщо ви скачаєте перекладача, і якщо ви пишете !hcuO, то отримуєтеOuch!

Для цього потрібно виконати програму так:

huh.exe !hcuO

Він насправді буде шукати файл, який називається !hcuO, але його не існує, тому він виводитьOuch!


93
+1, щоб написати щось, чого ви не розумієте
Cruncher

30
Чи не просто трохи іронічно, що ви не розумієте, як працює ваш власний код, в езолангу, який за дизайном також не повинен розуміти ваш код?
Іссі

@Iszi Це жарт.
AJMansfield

9
Я не впевнений, що ти huh?правильно використовуєш , хоча мені важко знайти належну документацію. Здається, використання призначене для повернення huh.exe <path to source code>та Ouch!повернеться для недійсного шляху. Спробуйте ввести свій код у фактичний файл і подати цей файл як аргумент huh?і подивитися, що відбувається. Також цікаво побачити, що він створює Notes.txtфайл з деяким коментарем.
Іссі

8
Гаразд, ця річ просто сказала мені, що вона думає, що вона розуміє, але я не бачив, щоб щось сталося Можливо, я повинен перестати грати з ним у своїй основній системі.
Іссі

85

Математика, 3 розділи

a 2

a 2означає aрази 2. Отже, відповідь така 2 a.


2
Це, ймовірно, виграє, якщо хтось не зможе отримати рішення з двома шарами.
ike

22
Насправді я знаю два чарівних рішення. Також у Mathematica : 1#. Вихід є #1.
алефальфа

7
@alephalpha: Тоді ви повинні опублікувати це як відповідь!
ProgramFOX

65

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

!dlrow ,olleH

Як йдеться на веб - сторінці, всі символи, які не є H, 9або +ігноруються, так що моя програма буде друкуватиHello, world!


30
Єдиною практичною перевагою шалених езотеричних мов є відповідь на ці шалені запитання.
totymedli

Було б більш практичним, якби ці питання були такими.
Кідро

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



20

TI-BASIC, 2

i2

Де iуявне число.

Виходи 2i


1
Це працює лише на головному екрані, а не в PRGM.
kernigh

8
@kernigh Ви пробували? Це чудово працює. (Якщо останнє твердження програми TI-BASIC оцінюється як вираз, його результат друкується замість "Готово", коли програма припиняється)
AJMansfield,

18

ОСНОВНІ, 22 12 7 символів

:-)

1 enil ni rorre xatnyS

EDIT: Якщо вам дозволяється входити в програму в негайному режимі, це може бути зменшено до rorre xatnyS(12 символів).

У BBC BASIC вам потрібно лише 7 символів:

ekatsiM

13

C ++ 472 символи

Дуже багато персонажів, але я не можу придумати простіший спосіб на мові на основі С.

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


тч

$ .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
Кролтан

8
Я забув додати, він не працює на встановлених дистрибутивах dnuof(що б це не було). Прокляті хакери.
kenorb

5
Ха-ха-ха, є команда на ім'я dnuof? : D що це робить?
Дверна ручка

11

GolfScript, 12 символів

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

Цей код приймає рядок з подвійним цитуванням "-1%.`", реверсує його ( -1%), дублює його ( .) і скасовує `другу копію, відновлюючи подвійні лапки навколо нього.

Попередній запис (13 символів):

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

На підставі 8-напівкокс Куайном {'.~'}.~з цієї відповіді ; додаткові 5 символів потрібні для послідовності та повернення виводу.

Пс. Зауважте, що GolfScript автоматично додає новий рядок до кінця виводу. Якщо це зараховується як частина результату, відповідний новий рядок може бути попередньо до будь-якої версії коду, не впливаючи на вихід, за вартість однієї додаткової знаки.


10

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

"8k,'!1+,@

Це працює, якщо ваш перекладач не інтерпретує обернені рядки після "додавання додаткового місця. Якщо ваш перекладач інтерпретує обернені рядки так, то це рішення 11 char працює ( тому що дублікати пробілів у рядковому літералі інтерпретуються як одне ):

"9k,'!1+,@ 

Якщо я можу використовувати gбез штрафних санкцій, вони також працюють (7 та 8 символів відповідно):

"5k,g,@

і

"6k,g,@ 


9

Перл, 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. Сподіваюсь, ви переможете всі езотеричні дивацтва :-)
Томаш

@Tomas ви пропонуєте замінити printз say? Це в кінцевому підсумку нічого не друкує.
smcg

Ви запускали perl з -Mfeature=sayопцією?
Томаш

9

Ділення , 6 байт

Рідкісний випадок узагальненої квітки такої ж довжини, як і звичайна квінка :

"LO+!'

Ідея така ж, як у звичайної квінки, але ми використовуємо лівий атом (починаючи з того 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: Пенальті, але так.
джазпі

1
"Бонус" звучить приємніше.
Йоганнес Кун

7

> <> , 25 байт

Я був здивований, виявивши, що цього ще не робили. :)

...yhsif sllems gnihtemoS

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

.- це команда Jump, що вискакує xта yвимикає стек та переміщує IP-адресу до (x, y)коду У цьому випадку стек порожній, тому друкується єдине повідомлення про помилку в мові:

Something smells fishy...

1
Найкраща відповідь
Insane

7

Мікроскрипт , 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>Обертання вручну було не сумісне з хромом, коли я тестував його, тому тепер він повинен працювати в більшості браузерів.

Ця програма, якщо запускається з цієї сторінки, знаходить блок коду безпосередньо вгорі, повертає його вміст і поміщає його в поле попередження.

Його досить просто перевірити, просто вставити його в консоль розробника.


Це набагато довше, ніж просто використання функції. І вам слід скористатися jQuery (на цій сторінці) або принаймні querySelectorбудь-яким чином…
Ри-

@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-х

Так, я бачу перевернутий вихідний код, але що з усім стороннім текстом? Є багато послідовностей втечі, але є такі, яких немає (наприклад: 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), і він друкує точно перевернене повідомлення. (На відміну від розчину пітона)


4

Оболонка UNIX, 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.
kenorb

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

2

JavaScript, 56

($=_=>_!=$._?_?$(_.slice(1))+_[0]:')':$('($='+$+')('))()

Вкажіть своє оточення, оскільки це не працює в Chrome. Це носоріг чи що?
Джордж Рейт

@GeorgeReith: Все, що підтримується функцією стрілки ES6. Наприклад, всі SpiderMonkeys повинні працювати добре (наприклад, Rhino).
Ри-

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.