Quine podwójnego zastosowania: quine! DlroW, olleH

13

Napisz program, który po uruchomieniu wyświetli własny kod źródłowy i nic więcej. Wydaje się łatwe, prawda?

Problem polega na tym, że po odwróceniu kodu źródłowego program musi wypisać „Witaj, świecie!” dokładnie bez cytatów.

To jest golf golfowy, więc wygrywa najmniejsza liczba bajtów.

Edycja : Twój quine musi być odpowiednim quine.

ericw31415
źródło
4
@Mego, żeby być uczciwym, nie jest to rodzaj uogólnionego quine, o którym tu mówię, ponieważ nie jest to „funkcja drukowania X twojego kodu źródłowego”. To powiedziawszy, prawdopodobnie nie będzie się różnić od innych wyzwań „kiedy cofniesz program ...”, które mamy.
Martin Ender
1
@ MartinBüttner Jest to wystarczająco podobne do opisanych przez ciebie wyzwań, że czuję, że stosuje się to samo rozumowanie.
Mego

Odpowiedzi:

8

Y, 19 bajtów

Upxp"!dlroW ,olleH"

Uprzechwytuje ciąg znaków z Una początku, dopóki nie Uzostanie spełniony następny , w tym przypadku kod źródłowy. pdrukuje element i xjest linkiem zakończenia. Po odwróceniu wygląda to następująco:

"Hello, World!"pxpU

To przechwytuje ciąg i drukuje go p, ponownie kończąc program za pomocą x.

Wypróbuj tutaj!

Conor O'Brien
źródło
4
Upopycha Uniejawnie? ಠ_ಠ
Sp3000,
1
@ Sp3000 Zostało wykonane, aby program mógł się modyfikować. Z technicznego punktu widzenia Upolecenie to „polecenie przechwytywania łańcucha”. Nie jest przeznaczony do quitingu, ale to nie powstrzyma mnie przed użyciem go do quitingu. : P
Conor O'Brien
1
Nie jestem pewien, czy to się liczy jako właściwy quine. Nasza definicja wymaga części programu, która koduje inną część programu , ale U...tylko koduje U....
Dennis
@Dennis-Define Encodes? Myślałem, że pbit zrobił wynik, który był częścią kodowania.
Conor O'Brien
1
Wziąłem zakodować jako coś, co generuje wyjście, więc pi xnie liczą. Na przykład najkrótsza Quine SMBF jest nadal uważana za quine oszukiwającą, nawet jeśli kod musi ją wydrukować. Może warto jednak poprosić Martina o wyjaśnienia.
Dennis
20

JavaScript (ES6), 42 38 bajtów

f=_=>/\//g&&"f="+f||"!dlroW ,olleH">=_

Wywrócony

_=>"Hello, World!"||f+"=f"&&g//\/>=_=f

Wyjaśnienie

Po odwróceniu staje się anonimową funkcją zwracającą ciąg znaków Hello, World!.

Wyrażenie regularne /\//gstaje się komentarzem po odwróceniu, co pozwala na >=_=fskomentowanie składni niepoprawnej w odwróconym kodzie.

użytkownik 81655
źródło
To bardzo mądre. :) Nie pomyślałbym o tym.
ericw31415
3
+1 tylko dla shifty-oczyma =_=.
Darrel Hoffman
6

JavaScript (ES6), 71 bajtów

trela=a=>alert("trela="+trela+"\ntrela\n``")//
`!dlroW ,olleH`
trela
``

Jak to działa:

Wiersz 1 definiuje funkcję, trelaktóra po uruchomieniu wyświetla kod źródłowy programu. Wiersz 2 jest nieprzypisanym łańcuchem, nic nie robi. Linie 3 i 4 wywołują trelanadużycie składni ciągu szablonu.

Wywrócony:

``
alert
`Hello, World!`
//)"``n\alertn\"+alert+"=alert"(trela>=a=alert

Jak to działa:

Wiersz 1 jest nieprzypisanym łańcuchem, nic nie robi. Linie 2 i 3 nadużywają składni ciągów szablonów do drukowania Hello, World!. Linia 4 to komentarz.

jrich
źródło
Widzę, że JavaScript ma pewną swobodę w składni. Cóż, przynajmniej więcej niż Python. To miłe.
R.Kap
Czy pusty jest ``niepotrzebny?
Rɪᴋᴇʀ
@EasterlyIrk Nie, konieczne jest wywołanie trelafunkcji (która drukuje quine) w wersji do przodu
jrich
@Jrich, och, nie zdawałem sobie sprawy, że to ``były argumenty. Chłodny.
Rɪᴋᴇʀ
2
Czuję, że powinienem się przyzwyczaić, aby zobaczyć trelatutaj ...> _>
Conor O'Brien
2

ZWROT , 94 bajty

"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'

Wywrócony:

'!'d'l'r'o'w' ','o'l'l'e'H' %,,,,,,,,,,,,,¤¤43"'!'d'l'r'o'w' ','o'l'l'e'H' %,,,,,,,,,,,,,¤¤43"

Try it here.

Wyjścia do STDOUT. Dopóki nie znajdę lepszych ram quine, będzie to na razie musiało wystarczyć.

Wyjaśnienie

"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'"

Zawiera ciąg znaków quine. Odwrotnie, jest on wypychany na stos, ale nie jest wysyłany.

34¤¤,,,,,,,,,,,,,

To wypycha znak zapytania do stosu i wysyła wynik dwukrotnie, dopóki nie zostanie nic do wypisania. Odwrotnie, spowoduje to wydrukowanie znaków już znajdujących się na stosie.

% 'H'e'l'l'o',' 'w'o'r'l'd'!'

Ten wyskakuje z górnego elementu stosu (na odwrót, by to oznaczało znak spacji) i wypycha serię znaków do stosu (na odwrót te znaki były później drukowane przez serię ,).

Mama Fun Roll
źródło
Nie wiem, czy to naprawdę szalony kod RETURN, czy tylko zwykły kod RETURN ._.
Downgoat,
Obie ;_; Płaczę everytiem
Mama Fun Roll
2

Rozszczepienie 2, 42 bajty

Bezwstydna adaptacja doskonałego quinu autorstwa @ MartinBüttner w tej odpowiedzi

'!+O!'!d'!l'!r'!o'!W'! '!,'!o'!!l'!e'!H'R"

Wypróbuj online

I odwrócone

"R'H!'e!'l!!'o!',!' !'W!'o!'r!'l!'d!'!O+!'

Wypróbuj online

W wersji quine atom zaczyna się od Rnagłówka po prawej stronie. W "uruchamia tryb który owija się kolejna wydrukować "(sama). Spowoduje to wydrukowanie wszystkiego oprócz ". '!+ustaw atom na char ". Owypisuje go i niszczy atom kończący program.

Odwrócona wersja zaczyna się od Rnowa i dla każdej postaci w Hello, Worldzestawie ustawia atom i drukuje !go bez niszczenia atomu. Dla ostatecznej postaci !odcisk Oniszczy atom.

MickyT
źródło
1

JavaScript ES6, 55 bajtów

$=_=>`$=${$};$()//"!dlroW ,olleH"`;$()//"!dlroW ,olleH"

Naprawdę proste.

Mama Fun Roll
źródło
0

Python 2, 131 bajtów

Naprzód:

print(lambda x:x+repr(x)+")#'!dlroW ,olleH' tnirp")('print(lambda x:x+repr(x)+")#\'!dlroW ,olleH\' tnirp")(')#'!dlroW ,olleH' tnirp

Rewers:

print 'Hello, World!'#)'()"print '\Hello, World!'\#)"+)x(rper+x:x adbmal(tnirp'()"print 'Hello, World!'#)"+)x(rper+x:x adbmal(tnirp

Pierwsza połowa to quine w jednym wierszu, po której następuje #komentarz oddzielający pierwszą połowę od prostszej drugiej połowy.

csvoss
źródło
Dostosowanie tego quina Pythona daje_='_=%r;print _%%_#"!dlroW ,olleH"tnirp';print _%_#"!dlroW ,olleH"tnirp
Sp3000
0

C, 108 bajtów

char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";main(){printf(s,34,s,34);}//};)"!dlroW ,olleH"(stup{)(niam
Mllllbyte
źródło
C99 Zakładam?
Neil
0

Python 2, 70 bajtów

_='_=%r;print _%%_#"dlroW ,olleH"tnirp';print _%_#"!dlroW ,olleH"tnirp
Erik the Outgolfer
źródło