Mundur dan maju polyglot quine!

9

Anda harus membuat polyglot yang menampilkan kode sumbernya dalam satu bahasa dan kode sumbernya mundur dalam bahasa lain. Berbeda dengan aturan normal, Anda diperbolehkan membaca file saat ini atau menggunakan builtin untuk mendapatkan kode sumber kiriman Anda dan membalikkannya dalam satu bahasa. Kode sumber Anda tidak boleh berupa palindrome.

Misalnya, jika kode sumber Anda abcxyz, itu harus output abcxyzdalam satu bahasa dan bahasa zyxcbalain. Jika kode Anda abcxyzyxbca, itu tidak valid karena itu adalah palindrome.

Semoga berhasil!

programmer5000
sumber
3
Aturan normal ada karena suatu alasan. Mengizinkan built-in quine kemungkinan akan membuat tantangan ini terlalu luas, dan memungkinkan kode sumber palindrome memungkinkan jawaban yang merupakan forward quines untuk kedua bahasa.
Erik the Outgolfer
@EriktheOutgolfer palindrom sekarang tidak diizinkan.
programmer5000
1
@EriktheOutgolfer Ah, jadi kode sumbernya bukan palindrom?
Luis Mendo
2
Saya pikir Anda harus menawarkan hadiah bagi orang pertama untuk menyelesaikan tantangan ini tanpa melanggar aturan quine normal. (mungkin 50 rep?)
clismique
1
Saya membaca "dalam satu bahasa" dengan jelas melarang kasus di mana kedua bahasa membaca kode sumber, tetapi jawaban terpilih saat ini melakukan hal itu. Bisakah Anda mengedit untuk memperjelas apakah itu dimaksudkan untuk diizinkan?
hvd

Jawaban:

5

PHP & GolfScript, 2 byte

1

yaitu baris baru dan digit 1.

Ini adalah quine terbalik di GolfScript , disumbangkan di situs ini oleh Justin . PHP belum memicu bahwa itu adalah bahasa pemrograman sehingga mencetak inputnya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
6

Python 2 / Python 3, 71 byte

lambda _='lambda _=%r:(_%%_)[::int(1-(1/2)*4)]':(_%_)[::int(1-(1/2)*4)]

Tidak menggunakan quine builtin.

Berkat ovs untuk umumnya membangunkan saya.

Erik the Outgolfer
sumber
lambda _='lambda _=%r:(_%%_)[::int(1-(1/2)*4)]':(_%_)[::int(1-(1/2)*4)]untuk 71 byte
ovs
@ovs Oh tentu saja, betapa aku tidak memikirkan itu.
Erik the Outgolfer
6

Batch / bash + tac, 39 byte

:;tac -r -s '.\|'$'\n' $0;exit
@type %0

Output maju dalam Batch. Penjelasan: Batch melihat baris pertama sebagai label dan mengabaikannya, sedangkan baris kedua hanya menyalin file sumber ke STDOUT. (Perhatikan bahwa Anda perlu menjalankan file termasuk ekstensi, atau ubah %0menjadi %~f0.) Lihat bashempat perintah:

  • :tidak melakukan apa pun (sama seperti true)
  • tac -r -s '.\|'$'\n' $0
    • -rmenempatkan tacke mode regex
    • -s menentukan regex
    • '.\|'$'\n' adalah regex, terdiri dari
      • . karakter apa pun kecuali baris baru
      • \| atau
      • $'\n' baris baru
    • Hasilnya adalah yang tacmembagi file menjadi karakter daripada garis.
  • exit menghentikan skrip, mengabaikan perintah keempat
  • @type %0 (diabaikan)
Neil
sumber
Saya pikir Anda dapat mengganti baris pertama dengan :;rev $0|tac;exit. Juga, header seharusnya mengatakan Batch / sh + util-linux + coreutils sebagai gantinya.
Erik the Outgolfer
@EriktheOutgolfer $'\n'adalah Bashism, rev $0|tactidak membalikkan baris baru dengan benar, dan apakah itu benar-benar penting yang tacdatang dalam sebuah paket?
Neil
$'\n'tidak ada dalam penggantian yang saya sarankan, dan rev $0|tacbekerja untuk saya. Dan saya pikir lebih baik untuk menentukan paket daripada utilitas individu, karena kadang-kadang kebingungan mungkin timbul (misalnya paket yang mana tac?).
Erik the Outgolfer
@EriktheOutgolfer Cobalah online! salah. Begitu juga Coba online! (tetapi lebih halus).
Neil
Bisakah Anda memberi penjelasan?
programmer5000
3

PHP & Retina, 2 byte

1

Sama dengan jawaban PHP & GolfScript Gille.

PHP hanya membaca kode dan mengeluarkannya secara langsung, Retina akan mengganti kecocokan dari string kosong di input dan menggantinya dengan 1, dan mengeluarkannya dengan baris baru.

Okx
sumber
2

JS (ES5), JS (ES6), 94 byte

function f(){try{eval("x=(f+'f()').split``.reverse().join``")}catch(e){x=f+"f()"};return x}f()

Tidak menggunakan built-in quine. Hanya menggunakan fakta bahwa fungsi JS merambat ke kode mereka. Mungkin bisa bermain golf lebih banyak.

programmer5000
sumber
1

Jika Anda mengizinkan membaca kode sumber, itu sebenarnya bukan quine.

PHP & sh + util-linux, 6 byte

rev $0

Saya yakin bahwa bahasa golf yang biasa dapat melakukannya dalam 2 byte.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Mereka ternyata bisa.
ATaco