Cetak kode Anda mundur - mundur quine


83

Tulis program yang mencetak kode sumbernya sendiri ke belakang, dengan kata lain eniuq .

Mencetak:

  • +50 jika Anda menggunakan data tarikan dari Internet.
  • +25 jika Anda membaca kode sumber Anda sendiri.
  • +1 poin per karakter
  • Skor terendah menang.

Aturan:

  • Tidak menggunakan file lain (mis. reverse.txt)
  • Panjang kode minimum adalah dua karakter.
  • Program Anda tidak bisa menjadi palindrome.

1
Sepertinya ini telah dilakukan sebelumnya , hanya tanpa aturan "no palindromes".
Iszi

3
Apakah skor itu bonus atau penalti ? Anda perlu menentukan dalam kata-kata jika sesuatu penalti atau bonus, karena mengatakan +10dapat dianggap berarti "nilai seolah-olah memiliki 10 karakter lebih dari yang sebenarnya" atau "kode dapat memiliki 10 karakter lebih yang tidak akan diberi skor ", atau interpretasi lain.
AJMansfield

7
@AJMansfield Kemenangan skor terendah berarti + x akan menjadi penalti, -x akan menjadi bonus.
Iszi

9
Satu pertanyaan yang saya miliki adalah mengapa menarik data dari internet diberi penalti lebih besar daripada membaca file sumber?
AJMansfield

4
Woohoo, tempat pertama dalam daftar pertanyaan jaringan panas: D Situs kami perlu lebih banyak perhatian ...
Gagang Pintu

Jawaban:


69

GolfScript - 2


1

(yaitu di \n1mana \nkarakter baris baru)

Keluaran:

1

(yaitu 1\n)


Mengutip Ilmari :

GolfScript secara otomatis menambahkan baris baru ke akhir output

Dengan demikian, baris baru diikuti oleh nomor akan mencetak nomor diikuti oleh baris baru.


14
+1 Saya tidak berpikir ada yang bisa mengalahkan solusi Mathematica.
Kaya

26
Solusi yang sangat membosankan ...
theonlygusti

@theonlygusti Ini skrip golf, whaddya mengharapkan ...
Program Redwolf

96

Hah? , 5 karakter

!hcuO

Saya benar-benar TIDAK tahu cara kerjanya, tetapi Jika Anda mengunduh juru bahasa, dan jika Anda menulis !hcuO, maka Anda dapatOuch!

Untuk menjalankan ini, Anda perlu menjalankan program seperti ini:

huh.exe !hcuO

Ini benar-benar akan mencari file yang dipanggil !hcuO, tetapi tidak ada, jadi itu outputOuch!


93
+1 untuk menulis sesuatu yang tidak Anda mengerti
Cruncher

30
Apakah ini bukan hanya ironis bahwa Anda tidak mengerti cara kerja kode Anda sendiri, di esolang yang menurut desain seharusnya tidak memahami kode Anda juga?
Iszi

@ Iszi Itu lelucon.
AJMansfield

9
Saya tidak yakin Anda menggunakannya dengan huh?benar, walaupun saya kesulitan menemukan dokumentasi yang tepat. Tampaknya penggunaan ini dimaksudkan untuk huh.exe <path to source code>dan Ouch!dikembalikan untuk jalur yang tidak valid. Coba masukkan kode Anda ke file yang sebenarnya, dan berikan file itu sebagai argumen huh?dan lihat apa yang terjadi. Ini juga menarik untuk melihat bahwa itu menghasilkan Notes.txtfile dengan beberapa komentar.
Iszi

8
Ok, hal ini hanya mengatakan kepada saya itu berpikir itu mengerti tetapi saya tidak melihat sesuatu terjadi. Mungkin saya harus berhenti mempermainkannya di sistem utama saya.
Iszi

85

Mathematica, 3 karakter

a 2

a 2berarti akali 2. Jadi jawabannya adalah 2 a.


2
Ini mungkin akan menang kecuali seseorang bisa mendapatkan solusi dua karakter.
Seperti

22
Sebenarnya saya tahu solusi dua char. Juga di Mathematica: 1#. Outputnya adalah #1.
alephalpha

7
@alephalpha: Maka Anda harus memposting itu sebagai jawaban!
ProgramFOX

65

H9 + , 13 karakter

!dlrow ,olleH

Seperti yang dikatakan halaman web, semua karakter yang tidak H, 9atau +diabaikan, jadi program saya akan mencetakHello, world!


30
Satu-satunya manfaat praktis dari bahasa esoterik yang gila adalah menjawab pertanyaan-pertanyaan gila ini.
totymedli

Akan lebih praktis jika pertanyaan ini benar.
kojiro

1
Itu pintar sekali!
theonlygusti

40

Javascript: 34 karakter

reifitnedi detcepxenU :rorrExatnyS

output SyntaxError: Unexpected identifier, setidaknya di konsol Chrome


8
Penggunaan pintar penyalahgunaan sistem melalui penyalahgunaan kesalahan
WallyWest

2
Anda, Tuan, telah membuat hari saya: D
major-mann

4
Bukan ide orisinal, sudah ada jawaban tentang ini dengan python 2.
o0 '.

1
@ Lohoris Maaf, saya tidak melihat itu
scrblnrd3

1
Firebug console di Mozilla Firefox: tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
kenorb

27

Python, 43 41

_=']0~::[_%%_ tnirp;%r=_';print _%_[::~0]


20

TI-BASIC, 2

i2

Di mana iangka imajiner.

Keluaran 2i


1
Ini hanya berfungsi di layar beranda, bukan di dalam PRGM.
kernigh

8
@kernigh Apakah Anda mencobanya? Ini bekerja dengan baik. (Jika pernyataan terakhir dari program TI-BASIC mengevaluasi sebagai ekspresi, hasilnya dicetak bukan 'Selesai' ketika program berakhir)
AJMansfield

18

BASIC, 22 12 7 karakter

:-)

1 enil ni rorre xatnyS

EDIT: Jika Anda diizinkan untuk masuk ke program dalam mode langsung, maka ini dapat dikurangi menjadi rorre xatnyS(12 karakter).

Di BBC BASIC, Anda hanya perlu 7 karakter:

ekatsiM

13

C ++ 472 karakter

Banyak karakter tapi saya tidak bisa memikirkan cara yang lebih sederhana dalam bahasa berbasis 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

pesta

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

Panjangnya: 31 karakter.


SH

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

Panjangnya: 29 karakter.

Yang ini tidak bisa bekerja di beberapa distribusi Linux, tetapi bekerja di OSX.


tcsh

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

Panjangnya: 26 karakter.


csh

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

Panjangnya: 26 karakter.


Pemenangnya adalah:

ksh

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

Panjangnya: 21 karakter.


Di atas harus bekerja pada semua * OS berbasis unix.


32
Tidak berfungsi untuk saya, saya punya perintah bernamadnuof
Kroltan

8
Saya lupa menambahkan, itu tidak berfungsi pada distribusi yang telah dnuofdiinstal (apa pun itu). Peretas sialan.
kenorb

5
Hahaha, ada perintah bernama dnuof? : D apa fungsinya?
Gagang Pintu

11

GolfScript, 12 karakter

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

Kode ini mengambil string yang dikutip ganda "-1%.`", membaliknya ( -1%), menduplikatnya ( .) dan menghapuskan ( `) salinan kedua, mengembalikan tanda kutip ganda di sekitarnya.

Entri sebelumnya (13 karakter):

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

Berdasarkan quine 8-char {'.~'}.~dari jawaban ini ; 5 karakter tambahan diperlukan untuk meregangkan dan membalikkan output.

Ps. Perhatikan bahwa GolfScript secara otomatis menambahkan baris baru ke akhir output. Jika ini dihitung sebagai bagian dari output, baris baru yang sesuai dapat ditambahkan ke salah satu versi kode tanpa mempengaruhi output, dengan biaya satu karakter tambahan.


10

Befunge 98 - 10 karakter

"8k,'!1+,@

Ini berfungsi jika penerjemah Anda tidak menginterpretasikan garis yang dibungkus setelah "menambahkan ruang tambahan. Jika penerjemah Anda menginterpretasikan garis yang dibungkus seperti itu, maka solusi char 11 ini berfungsi ( karena ruang duplikat dalam string literal ditafsirkan sebagai satu ):

"9k,'!1+,@ 

Jika saya dapat menggunakan gtanpa penalti, maka ini juga berfungsi (masing-masing 7 dan 8 karakter):

"5k,g,@

dan

"6k,g,@ 

9

Ruby, 60

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

Berdasarkan quine Ruby klasik.


Penggunaan heredocs dengan baik.
Jon Purdy

9

Perl, 41

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

Jawaban 52 karakter lama (27 + 25 penalti)

open+0;print ~~ reverse <0>

Membaca sumbernya sendiri, menyimpan yang terbalik dalam skalar, dan mencetaknya.


1
The scalaroperator dapat digantikan oleh ~~. Namun, Anda perlu menambahkan +25 ke skor Anda untuk membaca kode sumber Anda sendiri.
kotak roti

@breadbox mencatat
smcg

+1. Aku hendak posting sesuatu seperti solusi shell saya : $_='say"lave;\047",~~reverse,"\047=_\$"';eval, tapi solusi Anda :-) pendek Perhatikan bahwa Anda dapat golf itu ke 39 karakter menggunakan say. Semoga Anda bisa mengalahkan semua keanehan esoterik :-)
Tomas

@Tomas Anda menyarankan mengganti printdengan say? Itu akhirnya tidak mencetak apa pun.
smcg

Apakah Anda menjalankan perl dengan -Mfeature=sayopsi?
Tomas

9

Fission , 6 byte

Kasus langka quine umum yang panjangnya sama dengan quine normal :

"LO+!'

Idenya sama dengan yang ada pada quine normal, tetapi kami menggunakan atom yang pergi-kiri (mulai dari L) sehingga mode cetak melintasi kode dalam urutan yang berlawanan.


8

J: 26

Quining standar (26 karakter) : dengan mendefinisikan fungsi dan memberikan definisi sendiri, dalam tanda kutip:

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

Mungkin bisa dibuat lebih pendek.

J-specific (33 chars) : dengan mendefinisikan suatu variabel dan menanyakan file apa yang dimaksud dengan variabel, yaitu yang ini, lalu mencetak konten file itu:

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

Harus disimpan & dijalankan dari skrip (mis. Tidak dalam REPL, karena dengan demikian jawaban atas pertanyaan adalah "argumen Anda tidak didefinisikan dalam file", jadi tidak ada file untuk dibaca).


2
Yang kedua harus mendapatkan +25 bonus untuk membaca file sendiri.
Johannes Kuhn

2
@JohannesKuhn: Penalti, tapi ya.
jazzpi

1
"Bonus" terdengar lebih bagus.
Johannes Kuhn

7

> <> , 25 byte

Saya terkejut menemukan ini belum dilakukan. :)

...yhsif sllems gnihtemoS

Tempel kode di sini dan jalankan.

.adalah perintah Langsung, muncul xdan ykeluar dari tumpukan, dan memindahkan IP ke (x, y)dalam kotak kode. Dalam hal ini, tumpukan kosong, sehingga hanya pesan kesalahan bahasa yang dicetak:

Something smells fishy...

1
Jawaban terbaik
Gila

7

Microscript , 11 byte

Saya semacam harus melakukan ini.

0"Caxq"Caxq

Anehnya, ini sebenarnya lebih pendek dari quine true bahasa terpendek yang diketahui. qdan asebaliknya, kecuali qmenambahkan tanda kutip sementara atidak.


5

JavaScript jQuery 119 92 74 70 karakter

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

Sekarang menggunakan jQuery, seperti yang disarankan minitech dalam komentar, dan membungkusnya secara manual <pre><code>sehingga saya dapat menggunakan text()tanpa takut blok kode lain dalam posting ini mengganggu. <h4>Membungkus dengan secara manual tidak kompatibel dengan kromium ketika saya mengujinya, jadi sekarang ini akan berfungsi di sebagian besar browser.

Program ini, jika dijalankan dari halaman ini, menemukan blok kode tepat di atas, membalikkan isinya, dan meletakkannya di kotak peringatan.

Cukup mudah untuk memverifikasi, cukup tempelkan ke konsol dev.


Ini jauh lebih lama daripada hanya menggunakan fungsi. Dan Anda harus menggunakan jQuery (di halaman ini) atau setidaknya querySelectorlagian ...
Ry-

@minitech terima kasih atas tipnya, saya menukarnya untuk querySelectorsaat ini. Saya ingin melihat kemungkinan jQuery, tetapi sepertinya butuh waktu lebih lama bagi saya untuk mencari tahu.
AJMansfield

@minitech ok, terima kasih atas jQuerytipnya. (Saya baru mulai belajar javascript kemarin.)
AJMansfield

Saya suka solusi ini; berpikir di luar kotak.
theonlygusti

4

PHP, 41 karakter (+25)

Tidak tahu apakah saya memahami tugas dengan benar. Tapi di sini coba PHP:

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

sunting: ini bisa menjadi jauh lebih pendek:

echo strrev(file_get_contents(__FILE__));

Tapi karena bisa sesederhana itu, ini mungkin bukan yang diminta ...



Ketika saya mengklik jalankan, saya mendapatkan sejumlah omong kosong yang tidak berguna (berikut adalah cuplikan singkatnya: >? ;)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 ada lebih banyak lagi). Juga, sertakan jumlah karakter Anda; ini adalah kode golf. Selain itu, tampaknya Anda sedang membaca file sumber Anda, jadi tambahkan 25 ke jumlah karakter Anda dan itu adalah skor Anda. Skor terendah menang.
Justin

@ Quincunx Pertama, ini mundur ... tapi kedua, ini adalah kode sumber yang dihasilkan phpfiddle! (Tapi mundur ...) Mereka sepertinya melarikan diri dari banyak hal, berusaha menjaga semuanya tetap aman. Ganti array_popdengan array_shiftuntuk melihat kode sumber tidak mundur ...
nl-x

Ya saya bisa melihat kode sumber terbalik, tetapi ada apa dengan semua teks asing? Ada banyak urutan pelarian, tetapi ada beberapa yang tidak (misalnya: ESLAF nruteryaitu return FALSE).
Justin

@ Quincunx Maaf, saya tidak mengetahui apakah Anda menunjukkan minat pada cara phpFiddle bekerja, atau jika Anda mengkritik kode saya. Jika yang terakhir, maka dalam pertahanan saya, masukkan kode saya dalam file .php dan jalankan di browser, dan itu akan bekerja dengan bersih. Saya hanya berpikir phpfiddle adalah hal yang bagus untuk membiarkan Anda melihat, sehingga Anda dapat melihat sedikit pekerjaan dalam dirinya.
nl-x

4

MATLAB, 78 karakter:

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

Perhatikan bahwa solusinya mengharuskan Anda untuk memulai dengan karakter khusus (alt + 0160) dan mencetak persis pesan yang dibalik. (Berbeda dengan solusi python)


4

UNIX shell, 31

Solusi nyata di 52 karakter:

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

Tapi waspadalah! Kejujuran tidak membuahkan hasil di dunia saat ini! Penalti terlalu rendah !!

6 karakter + 25 = 31:

rev $0

Pada OSX rev $0menghasilkan kesalahan: rev: illegal option -- b.
kenorb

4

MS-DOS, 24 byte

eman elif ro dnammoc daB

Keluaran:

Bad command or file name

3

JavaScript, 62

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

Bekerja untuk saya di Chrome terbaru (v 31.0.1650.63). Beberapa browser lain mungkin memberikan output yang berbeda. (Jika Anda membalikkan output itu, maka itu akan berhasil: P)


3

SmileBASIC, 118 102 byte

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]:')':$('($='+$+')('))()

Silakan sebutkan lingkungan Anda karena ini tidak berfungsi di Chrome. Apakah ini Badak atau apa?
George Reith

@ GeorgeReith: Apa pun dengan dukungan fungsi panah ES6. Semua SpiderMonkeys harus berfungsi dengan baik, misalnya (termasuk Badak).
Ry-

2

CSS, 88 byte

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

Masukkan halaman html kosong untuk menghindari konflik dengan tag lain.


2

JavaScript, 53 50 46 43 byte

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

Tolong bantu saya mempersingkat ini.


Anda tidak perlu bungkusnya. q=_=>[...`q=${q}`].reverse().join`` bekerja dengan baik.
Rɪᴋᴇʀ

Jika saya menghapus pembungkusnya, itu tidak akan secara otomatis mengeksekusi sendiri.
ericw31415

tidak perlu. Fungsinya baik-baik saja.
Rɪᴋᴇʀ

Tetapi kemudian, kode mengembalikan referensi fungsi, bukan output dari fungsi.
ericw31415

@ ericw31415 benar. panggilan fungsi diperlukan.
Mama Fun Roll

2

Fuzzy Octo Guacamole, 4 byte

KNU_

Kmencetak _UNK, Nmendorong None, dan Umendorong 0. Dan _muncul nilai teratas pada tumpukan (tetapi tidak mencetak). Jadi hanya _UNKdicetak.


Mengapa Kmenghasilkan _UNK?
caird coinheringaahing

@RandomUser meminta Riker untuk lebih jelasnya, dia pembuat bahasa. Saya baru saja membaca dokumen.
Bald Bantha
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.