Tugas Anda adalah menulis program yang menampilkan kode sumbernya sendiri secara terbalik. Namun, ketika kode terbalik dijalankan, harus menampilkan kode sumber, menghadap ke arah yang benar.
Contoh
Katakan program Anda abc
. Saat dijalankan, seharusnya output cba
. cba
, ketika dijalankan, harus menampilkan abc
.
Aturan
Program Anda harus mengikuti semua aturan quine yang tepat (kecuali untuk menghasilkan kode sumber). Palindrom dilarang.
Catatan acak: Saya mengetahui hal ini tetapi saya percaya bahwa tantangan ini berbeda karena kode yang diubah harus memiliki sifat yang sama.
Jawaban:
RProgN , 3 byte
Terima kasih kepada @MartinEnder untuk mengingatkan saya tentang jawaban ini .
Cobalah online!
Bagaimana itu bekerja
Ini mengeksploitasi kelemahan potensial dalam definisi kami tentang quine yang tepat :
Itu jelas terjadi di sini, karena output adalah kebalikan dari kode dan kode tersebut bukan palindrome.
RProgN - notasi programmer terbalik - menggunakan tumpukan LIFO dan mencetak item di atasnya dalam urutan mereka muncul. Dua token 1 dan 2 , dipisahkan oleh spasi dan / atau baris baru, muncul dalam urutan terbalik dan dicetak dipisahkan oleh baris baru.
Ini mencetak program yang terbalik
yang, pada gilirannya, mencetak yang asli.
! enilno ti thn
sumber
1\n1
, di mana keduanya1
menyandikan satu sama lain; itu mungkin quine yang tepat tetapi bukan quine-quine yang tepat.)Befunge-98 , 33 byte
Cobalah online!
sumber
#
tajuk untuk membuat Anda. Juga buka Tryitonline.net dan dapatkan juru bahasa onlineg
tidak diizinkan di Befunge quines, karena membaca sumber program langsung dari memori?Fisi 2 , 10 byte
Cobalah online!
Ini mencetak:
Cobalah online!
Dan sebaliknya.
Penjelasan
Ini adalah modifikasi dari quine terbalik . Ini berfungsi untuk keuntungan kami di sini yang
!
digunakan untuk mencetak dan juga hanya berjarak satu poin kode dari kutipan"
. Itu membuatnya lebih mudah untuk membuat bagian pencetakan kutipan palindromic (the'!+!'
). Mari kita mulai dengan kode pertama:Program ini memiliki dua titik masuk di
L
s, yang masing-masing membuat atom yang tersisa. Namun, yang tepat langsung mengenai;
yang menghancurkannya. Yang kiri memasuki mode string dan membungkus sampai akhir, sehingga mencetak seluruh kode (kecuali"
) dari belakang ke depan. Itu sudah memberi kita_'!+!'L;L
. Yang tersisa adalah mencetak"
._
dapat diabaikan,'!
setel massa atom menjadi 33 (titik kode!
),+
menambahnya"
, dan!
mencetaknya. Itu semua yang dilakukan. The'L
set atom massa ke titik kodeL
tapi itu tidak relevan.;
menghancurkan atom ini juga dan karena tidak ada atom yang tersisa, program berakhir.Sekarang sebaliknya:
Sekali lagi, kami memiliki dua titik masuk tetapi satu atom segera dihancurkan. Kali ini kami bergerak melalui
!+!'
bagian pertama, jadi kami mulai dengan mencetak penawaran. The'_
lagi relevan, tapi kita perlu_
(atau beberapa karakter yang tidak berguna lainnya) di sini untuk menghindari'
melarikan diri"
. Atom membungkus sampai akhir, melintasi kode sumber sekali dalam mode string untuk mencetak sisa program secara terbalik, yangL
kemudian diabaikan dan;
menghancurkan atom dan mengakhiri program.sumber