Tulis program lengkap yang mengambil input boolean atau bilangan bulat non-negatif. Itu harus:
- Keluarkan kode sumbernya sendiri jika nilai input salah
- Keluarkan kode sumbernya sendiri secara terbalik jika nilai input benar
Program Anda tidak bisa palindromik, juga tidak bisa membaca kode sumbernya sendiri dengan cara apa pun.
Ini adalah kode golf - kode terpendek dalam byte yang menang.
Jawaban:
Gol> <> , 9 byte
Saya merasa sedikit canggung memposting ini, karena kami sudah>> menjawab, Vitsy dan Minkolang. Satu-satunya tambahan ke quine standar adalah
I
(baca input integer),?
(jalankan selanjutnya jika benar) danr
(tumpukan terbalik).Cobalah online .
sumber
sP#Hr?I"
CJam,
1716 byteUji di sini.
Modifikasi quine standar yang cukup mudah. Solusi lain untuk 17 byte:
Jika saya dapat berasumsi bahwa inputnya hanya 0 atau 1 (sebagai stand-in untuk boolean, yang tidak ada tipe khusus untuk di CJam), saya mendapatkan 15 dengan menghilangkan
g
:Penjelasan
sumber
g
.Pyth, 17 byte
Modifikasi sederhana dari standar Pyth quine.
sumber
> <>, 17 Bytes
Membutuhkan flag -v (+1 byte) untuk mendorong input ke stack (atau bagi Anda untuk memasukkan input pada stack sebelumnya pada interpreter online).
Anda dapat melakukan hal di bawah ini untuk jumlah byte yang sama (tanpa tanda) jika input integer hanya diizinkan (yaitu 0 untuk falsy, 1 untuk kebenaran).
Cobalah online
Kebenaran / kepalsuan untuk> <> adalah sesuatu yang bukan 0 dan 0, masing-masing.
sumber
Vitsy , 15 Bytes
... Aku ... aku mengalahkan CJam! (berteriak) Bu! Lihat, bu, aku melakukan itu!
Penjelasan:
Versi Vitsy yang lebih baru , 11 Bytes
sumber
Javascript (ES6), 42 byte
Ini adalah modifikasi dari Bling Quine saya . Ini juga dua kali lebih panjang.
sumber
prompt()
diperlukan, kecuali kita beralih ke Node.JS. Saya percaya$=_=>(A=`$=${$};$(prompt())`,alert(_?A:[...A].reverse().join``));$(prompt())
berfungsi dengan baik, meskipun mungkin bisa diturunkan lebih banyak.Burlesque, 40 byte
Penjelasan:
Burlesque memiliki built-in stack dan manipulasi kode tingkat lanjut. Bahkan, Anda tidak dapat mengakses kode sumber program tetapi Anda dapat mengakses kode yang tersisa yang akan dieksekusi di masa depan. Ini berarti
#Q
akan mengembalikan semua kode yang mengikutinya, itulah sebabnya kami harus menambahkan semuanya#Q
ke kode tersebut yang kami lakukanri#Q
.++1 2
adalah kode yang secara teknis ilegal karena itu berdasarkan tumpukan. Tetapi kita dapat memanipulasi kode untuk membuatnya dieksekusi sebagai1 2++
:Bekerja dengan built-in ini sangat sulit dan belum ada yang menggunakannya untuk hal-hal yang produktif kecuali untuk hal-hal terkait quine. Jika Anda membalikkan
++1 2
Anda mendapatkan2 1++
yang akan menghasilkan21
dan tidak12
. Alasan kode di atas menghasilkan12
adalah karena#Q
juga termasuk<-
jadi pada akhirnya kita akhirnya mengeksekusi lebih dari sekedar2 1++
: p. Kami akhirnya mengeksekusi2 1++#q<-
yang menghasilkan12
.Kita sebenarnya dapat mengganti hal-hal dalam kode kita misalnya kode ini menggantikan semua kejadian
?+
dengan sendirinya?*
Pemakaian:
sumber
Haskell,
126118108 byteDiharapkan
0
atau1
sebagai input.sumber
Minkolang 0,10 , 13 byte
Coba di sini.
Ini adalah persis seperti Quine standar kecuali untuk empat karakter ini:
n,?r
.n
mengambil integer dari input,,
membalikkannya, jadi?
lompatir
jika input tersebut benar. Jika tidak,r
balikkan tumpukan sehingga menjadi output dalam urutan terbalik.sumber
Python 2, 51 byte
sumber
Java 10 (program penuh), 282 byte
Cobalah online.
Java 10 (sebagai fungsi lambda), 154 byte
Cobalah online.
Penjelasan:
penjelasan quine :
var s
berisi kode sumber yang tidak diformat%s
digunakan untuk menempatkan String ini ke dalam dirinya dengans.format(...)
%c
,,%1$c
dan34
digunakan untuk memformat tanda kutip gandas.format(s,34,s)
menempatkan semuanya bersama-samaDan kemudian
new StringBuffer(s).reverse()
digunakan untuk membalik quine-String jika perlu berdasarkan input-boolean.sumber
05AB1E , 21 byte
Cobalah online.
Modifikasi quine default
0"D34çý"D34çý
dengan menambahkan‚sè
.Penjelasan:
PS: Secara otomatis mencetak baris tambahan. Jika ini harus dibalik juga, itu 23 byte sebagai gantinya:
Cobalah online. (
?
adalah Cetak eksplisit tanpa baris baru )sumber