Wydrukuj kod wstecz - odwróć quine

83

Napisz program, który wypisuje swój kod źródłowy do tyłu, innymi słowy eniuq .

Punktacja:

  • +50, jeśli używasz ściągania danych z Internetu.
  • +25, jeśli czytasz swój własny kod źródłowy.
  • +1 punkt za postać
  • Najniższy wynik wygrywa.

Zasady:

  • Brak korzystania z innych plików (np. reverse.txt)
  • Minimalna długość kodu to dwa znaki.
  • Twój program nie może być palindromem.
ike
źródło
1
Wygląda na to, że zostało to zrobione wcześniej , tylko bez reguły „bez palindromów”.
Iszi
3
Czy te wyniki są premiami czy karami ? Musisz podać słowami, czy coś jest karą czy premią, ponieważ powiedzenie +10może oznaczać albo „wynik, jakby miał 10 znaków więcej niż faktycznie”, albo „kod może zawierać 10 znaków, które nie będą być punktowanym ”lub innymi interpretacjami.
AJMansfield,
7
@AJMansfield Najniższy wynik wygrywa oznacza, że ​​+ x będzie karą, a x będzie premią.
Iszi
9
Pytanie, jakie mam, brzmi zatem: dlaczego pobieranie danych z Internetu wiąże się z większą karą niż czytanie pliku źródłowego?
AJMansfield,
4
Woohoo, 1 miejsce na liście gorących pytań w sieci: D Nasza strona wymaga więcej uwagi ...
Klamka

Odpowiedzi:

69

GolfScript - 2


1

(tzn. \n1gdzie \njest znak nowej linii)

Wynik:

1

(tj. 1\n)


Cytując Ilmari :

GolfScript automatycznie dołącza nowy wiersz na końcu wyniku

Zatem nowa linia, po której następuje liczba, wydrukuje liczbę, po której nastąpi nowa linia.

Justin
źródło
14
+1 Nie sądziłem, że coś może pokonać rozwiązanie Mathematica.
Kaya
26
Dość nudne rozwiązanie ...
theonlygusti
@theonlygusti To golfscript, czego się spodziewać ...
Redwolf Programs
96

co? , 5 znaków

!hcuO

Właściwie nie mam pojęcia, jak to działa, ale jeśli pobierzesz tłumacza, a jeśli napiszesz !hcuO, otrzymaszOuch!

Aby to uruchomić, musisz uruchomić program w następujący sposób:

huh.exe !hcuO

Będzie szukał pliku o nazwie !hcuO, ale nie istnieje, więc wyświetla dane wyjścioweOuch!

ProgramFOX
źródło
93
+1 za napisanie czegoś, czego nie rozumiesz
Cruncher
30
Czy to nie ironia, że ​​nie rozumiesz, jak działa Twój własny kod, w esolangu, który z założenia nie powinien również rozumieć Twojego kodu?
Iszi
@Iszi To żart.
AJMansfield,
9
Nie jestem pewien, czy dobrze używasz huh?, ale trudno mi znaleźć odpowiednią dokumentację. Wygląda na to, że użycie jest zamierzone huh.exe <path to source code>i Ouch!jest zwracane dla niepoprawnej ścieżki. Spróbuj umieścić swój kod w rzeczywistym pliku i podać ten plik jako argument huh?i zobaczyć, co się stanie. Interesujące jest również to, że generuje Notes.txtplik z komentarzem.
Iszi
8
Ok, ta rzecz powiedziała mi tylko, że to rozumie, ale nic nie widziałem. Może powinienem przestać bawić się tym na moim podstawowym systemie.
Iszi
85

Mathematica, 3 znaki

a 2

a 2oznacza aczasy 2. Tak więc odpowiedź brzmi 2 a.

alephalpha
źródło
2
To prawdopodobnie wygra, chyba że ktoś będzie w stanie uzyskać rozwiązanie dwóch znaków.
ike,
22
W rzeczywistości znam rozwiązanie dwóch znaków. Również w Mathematica: 1#. Dane wyjściowe to #1.
alephalpha,
7
@alephalpha: Powinieneś opublikować to jako odpowiedź!
ProgramFOX,
65

H9 + , 13 znaków

!dlrow ,olleH

Jako strona mówi, wszystkie znaki, które nie są H, 9lub +są ignorowane, więc mój program wypiszeHello, world!

ProgramFOX
źródło
30
Jedyną praktyczną korzyścią zwariowanych ezoterycznych języków jest odpowiedź na te szalone pytania.
totymedli,
Byłoby bardziej praktyczne, gdyby te pytania były takie.
kojiro
1
To cholernie sprytne!
theonlygusti
40

JavaScript: 34 znaki

reifitnedi detcepxenU :rorrExatnyS

wyjścia SyntaxError: Unexpected identifier, przynajmniej w konsoli Chrome

scrblnrd3
źródło
8
Sprytne użycie nadużywania systemu przez nadużycia błędów
WallyWest
2
Panie, uczyniłeś mój dzień: D
major-mann,
4
Nie jest to oryginalny pomysł, odpowiedź na to pytanie była już dostępna w python 2.
o0 '.
1
@Lohoris Przepraszamy, nie widziałem tego
scrblnrd3,
1
Konsola Firebug w Mozilla Firefox: tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
kenorb
27

Python, 43 41

_=']0~::[_%%_ tnirp;%r=_';print _%_[::~0]
Shane
źródło
24

Mathematica, 2 bajty

1#

Wyjścia:

# 1

Jay Bosamiya
źródło
20

TI-BASIC, 2

i2

Gdzie ijest liczba urojona.

Wyjścia 2i

Timtech
źródło
1
Działa to tylko na ekranie głównym, a nie w PRGM.
kernigh
8
@kernigh Próbowałeś? To działa dobrze. (Jeśli ostatnia instrukcja programu TI-BASIC ma wartość wyrażenia, jej wynik jest wypisywany zamiast „Gotowe” po zakończeniu programu)
AJMansfield
18

PODSTAWOWY, 22 12 7 znaków

:-)

1 enil ni rorre xatnyS

EDYCJA: Jeśli możesz wejść do programu w trybie natychmiastowym, możesz to zmniejszyć do rorre xatnyS(12 znaków).

W BBC BASIC potrzebujesz tylko 7 znaków:

ekatsiM
piskliwy kostuch
źródło
13

C ++ 472 znaków

Wiele znaków, ale nie mogę wymyślić prostszego sposobu w języku opartym na 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#");}
użytkownik11232
źródło
13

grzmotnąć

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

Długość: 31 znaków.


sh

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

Długość: 29 znaków.

Ten nie mógł działać w niektórych dystrybucjach Linuksa, ale działa na OSX.


tcsh

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

Długość: 26 znaków.


csh

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

Długość: 26 znaków.


Zwycięzcą jest:

ksh

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

Długość: 21 znaków.


Powyżej powinno działać na wszystkich * systemach operacyjnych opartych na Uniksie.

kenorb
źródło
32
Nie działa dla mnie, mam polecenie o nazwiednuof
Kroltan
8
Zapomniałem dodać, że nie działa na dystrybucjach, które zostały dnuofzainstalowane (cokolwiek to jest). Cholerni hakerzy.
kenorb,
5
Hahaha, istnieje polecenie o nazwie dnuof? : D co to robi?
Klamka
11

GolfScript, 12 znaków

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

Ten kod pobiera ciąg cudzysłowu "-1%.`", odwraca go ( -1%), duplikuje ( .) i un-evals ( `) drugą kopię, przywracając wokół niej podwójne cudzysłowy.

Poprzedni wpis (13 znaków):

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

Na podstawie 8-znakowego quine {'.~'}.~z tej odpowiedzi ; dodatkowe 5 znaków jest potrzebnych do usztywnienia i odwrócenia wyjścia.

Ps. Zauważ, że GolfScript automatycznie dołącza nowy wiersz na końcu wyniku. Jeśli jest to liczone jako część wyniku, odpowiedni znak nowej linii może zostać dołączony do dowolnej wersji kodu bez wpływu na wynik, za koszt jednego dodatkowego znaku.

Ilmari Karonen
źródło
9

Ruby, 60 lat

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

Oparty na klasycznym rubinowym quine.

histocrat
źródło
Niezłe wykorzystanie heredoków.
Jon Purdy,
9

Perl, 41

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

Stara odpowiedź 52 znaków (kara 27 + 25)

open+0;print ~~ reverse <0>

Odczytuje własne źródło, przechowuje odwrotną stronę w skalarie i drukuje to.

smcg
źródło
1
scalarOperatora może być zastąpiona ~~. Musisz jednak dodać +25 do swojego wyniku za odczytanie własnego kodu źródłowego.
breadbox
@breadbox odnotował
smcg
+1. Właśnie miałem opublikować coś w stylu mojej powłoki : $_='say"lave;\047",~~reverse,"\047=_\$"';evalale twoje rozwiązanie jest krótsze :-) Pamiętaj, że możesz grać w golfa do 39 znaków za pomocą say. Mam nadzieję, że pokonasz wszystkie ezoteryczne dziwactwa :-)
Tomas
@Tomas sugerujesz wymianie printz say? W rezultacie nic nie drukuje.
smcg
Czy uruchomiłeś perla z -Mfeature=sayopcją?
Tomas
9

Rozszczepienie , 6 bajtów

Rzadki przypadek uogólnionego quinu o tej samej długości co normalny quine :

"LO+!'

Pomysł jest taki sam, jak w przypadku normalnego quine, ale używamy lewostronnego atomu (zaczynając od L), aby tryb drukowania przechodził przez kod w odwrotnej kolejności.

Martin Ender
źródło
8

J: 26

Standardowe quining (26 znaków) : definiując funkcję i przekazując jej własną definicję, w cudzysłowach:

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

Prawdopodobnie może być krótszy.

Specyficzne dla J (33 znaki) : definiując zmienną i pytając, w jakim pliku zmienna została zdefiniowana, tj. Ten, a następnie drukując zawartość tego pliku:

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

Należy go zapisać i uruchomić ze skryptu (tj. Nie z REPL, ponieważ wtedy odpowiedź na pytanie brzmi „twój argument nie został zdefiniowany w pliku”, więc nie ma pliku do odczytania).

Dan Bron
źródło
2
Drugi powinien otrzymać premię +25 za przeczytanie własnego pliku.
Johannes Kuhn,
2
@JohannesKuhn: Kara, ale tak.
jazzpi,
1
„Bonus” brzmi ładniej.
Johannes Kuhn
7

> <> , 25 bajtów

Byłem zaskoczony, gdy stwierdziłem, że jeszcze tego nie zrobiono. :)

...yhsif sllems gnihtemoS

Wklej kod tutaj i uruchom go.

.jest polecenie Jump, popping xi yze stosu i przenoszenia IP, aby (x, y)w oknie kodu. W takim przypadku stos jest pusty, dlatego drukowany jest jedyny komunikat o błędzie języka:

Something smells fishy...
mbomb007
źródło
1
Najlepsza odpowiedź
Szalony
7

Microscript , 11 bajtów

W pewnym sensie musiałem to zrobić.

0"Caxq"Caxq

Co zaskakujące, jest to w rzeczywistości krótszy niż najkrótszy znany prawdziwy quine języka. qi asą w inny sposób równoważne, z wyjątkiem tego, że qdodaje zawijanie cytatów, podczas gdy anie.

SuperJedi224
źródło
5

JavaScript jQuery 119 92 74 70 znaków

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

Teraz korzystam z jQuery, jak sugeruje minitech w komentarzach, i ręcznie pakuję, dzięki <pre><code>czemu mogę używać text()bez obawy, że inne bloki kodu w tym poście będą przeszkadzać. <h4>Podczas testowania ręczne owijanie za pomocą nie było zgodne z chromem, więc teraz powinno działać w większości przeglądarek.

Ten program, jeśli zostanie uruchomiony z tej strony, znajduje blok kodu bezpośrednio powyżej, odwraca jego zawartość i umieszcza go w polu alertów.

Łatwo to zweryfikować, wystarczy wkleić go do konsoli programisty.

AJMansfield
źródło
Jest to znacznie dłużej niż tylko korzystanie z funkcji. I powinieneś użyć jQuery (na tej stronie) lub przynajmniej w każdym razie querySelector...
Ry-
@minitech dzięki za wskazówkę, zamieniłem ją na querySelectorteraz. Chciałbym przyjrzeć się możliwościom jQuery, ale wygląda na to, że zajmie mi to trochę więcej czasu.
AJMansfield
@minitech ok, dziękuję za jQuerypodpowiedź. (Zacząłem uczyć się javascript wczoraj.)
AJMansfield,
Podoba mi się to rozwiązanie; Myśleć poza szablonowo.
theonlygusti
4

PHP, 41 znaków (+25)

Nie wiem, czy poprawnie zrozumiałem zadanie. Ale oto próba PHP:

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

edycja: może być znacznie krótszy:

echo strrev(file_get_contents(__FILE__));

Ale ponieważ może to być takie proste, prawdopodobnie nie o to pyta się ...

nl-x
źródło
Kiedy klikam „uruchom”, dostaję całą masę bezużytecznych bzdur (oto krótki fragment:; >? ;)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 jest o wiele więcej). Podaj także liczbę swoich postaci; to jest golf golfowy. Wygląda również na to, że czytasz plik źródłowy, więc dodaj 25 do liczby postaci i to jest twój wynik. Najniższy wynik wygrywa.
Justin,
@Quincunx Po pierwsze, jest odwrotnie ... ale po drugie, jest to kod źródłowy generowany przez phpfiddle! (ale do tyłu ...) Wydaje się, że uciekają przed wieloma rzeczami, próbując zachować bezpieczeństwo. Wymień array_popsię array_shift, aby zobaczyć kod źródłowy nie wstecz ...
NL-x
Tak, widzę odwrócony kod źródłowy, ale co z całym obcym tekstem? Istnieje wiele sekwencji ucieczki, ale są takie, które nie są (np ESLAF nrutertj return FALSE).
Justin,
@Quincunx Przepraszam, nie łapię, jeśli jesteś zainteresowany sposobem działania phpFiddle lub jeśli krytykujesz mój kod. Jeśli to ten drugi, to w mojej obronie, włóż mój kod do pliku .php i uruchom go w przeglądarce, a będzie działał czysto. Pomyślałem, że phpfiddle to fajna rzecz, żeby ci zobaczyć, więc możesz zobaczyć trochę jej wewnętrznych mechanizmów.
nl-x
4

MATLAB, 78 znaków:

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

Zauważ, że rozwiązanie wymaga rozpoczęcia od znaku specjalnego (alt + 0160) i że drukuje dokładnie odwrócony komunikat. (W przeciwieństwie do rozwiązania python)

Dennis Jaheruddin
źródło
4

Powłoka UNIX, 31

Prawdziwe rozwiązanie przy 52 znakach:

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

Ale strzeż się! Uczciwość nie opłaca się w dzisiejszym świecie! Kara jest za niska !!

6 znaków + 25 = 31:

rev $0
Tomas
źródło
Na OSX rev $0generuje błąd: rev: illegal option -- b.
kenorb
4

MS-DOS, 24 bajty

eman elif ro dnammoc daB

Wynik:

Bad command or file name
Neil
źródło
3

JavaScript, 62

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

Działa dla mnie w najnowszym Chrome (v 31.0.1650.63). Niektóre inne przeglądarki mogą dawać inne wyniki. (Jeśli odwrócisz to wyjście, to zadziała: P)

Klamka
źródło
3

SmileBASIC, 118 102 bajtów

FOR I=-101TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXTFOR I=-100TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXT
12Me21
źródło
2

JavaScript, 56

($=_=>_!=$._?_?$(_.slice(1))+_[0]:')':$('($='+$+')('))()
Ry-
źródło
Podaj swoje środowisko, ponieważ to nie działa w Chrome. Czy to nosorożec czy co?
George Reith,
@GeorgeReith: Wszystko z obsługą funkcji strzałek ES6. Na przykład wszystkie SpiderMonkeys powinny działać poprawnie (w tym Rhino).
Ry-
2

CSS, 88 bajtów

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

Umieść pustą stronę HTML, aby uniknąć konfliktu z innymi tagami.

Mama Fun Roll
źródło
2

JavaScript, 53 50 46 43 bajty

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

Pomóż mi to skrócić.

ericw31415
źródło
Nie potrzebujesz opakowania. q=_=>[...`q=${q}`].reverse().join`` działa równie dobrze.
2016 r. O
Jeśli usunę opakowanie, nie uruchomi się ono automatycznie.
ericw31415
nie musi. Funkcje są w porządku.
Rɪᴋᴇʀ
Ale potem kod zwraca odwołanie do funkcji, a nie wynik funkcji.
ericw31415
@ ericw31415 ma rację. wywołanie funkcji jest konieczne.
Mama Fun Roll
2

Rozmyte Octo Guacamole, 4 bajty

KNU_

Kdrukuje _UNK, Npopycha Nonei Upopycha 0. I _wyświetla najwyższą wartość na stosie (ale nie drukuje). Więc tylko _UNKjest drukowane.

Łysa Bantha
źródło
Dlaczego Kprodukcja _UNK?
caird coinheringaahing
@RandomUser zapytaj Rikera o więcej szczegółów, on jest twórcą języka. Właśnie czytałem dokumenty.
Bald Bantha