Burlesque, 40 byte
ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh
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 lakukan ri#Q
.
blsq ) #Q1 2++
12 -- this is the result of 1 2++
{1 2 ++} -- this is the result of #Q
++1 2
adalah kode yang secara teknis ilegal karena itu berdasarkan tumpukan. Tetapi kita dapat memanipulasi kode untuk membuatnya dieksekusi sebagai 1 2++
:
blsq ) #Q<-#q++1 2
12
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 mendapatkan 2 1++
yang akan menghasilkan 21
dan tidak 12
. Alasan kode di atas menghasilkan 12
adalah karena #Q
juga termasuk <-
jadi pada akhirnya kita akhirnya mengeksekusi lebih dari sekedar 2 1++
: p. Kami akhirnya mengeksekusi 2 1++#q<-
yang menghasilkan 12
.
Kita sebenarnya dapat mengganti hal-hal dalam kode kita misalnya kode ini menggantikan semua kejadian ?+
dengan sendirinya?*
blsq ) #Q(?+)(?*)r~5.-#q5 5?+
25
Pemakaian:
$ echo "1" | blsq --stdin 'ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh'
hs fi sp "-<" j +. /\ "Q#ir" -~ HS 2Q#ir
$ echo "0" | blsq --stdin 'ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh'
ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh