Burlesque, 40 byte
ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh
Giải trình:
Burlesque có tích hợp thao tác ngăn xếp và mã nâng cao. Thực tế, bạn không thể truy cập mã nguồn của chương trình nhưng bạn có thể truy cập mã còn lại sẽ được thực thi trong tương lai. Điều này có nghĩa là #Q
sẽ trả về tất cả mã theo sau đó là lý do tại sao chúng ta phải thêm mọi thứ #Q
vào mã đó, đó là những gì chúng ta đang làm ri#Q
.
blsq ) #Q1 2++
12 -- this is the result of 1 2++
{1 2 ++} -- this is the result of #Q
++1 2
là mã bất hợp pháp về mặt kỹ thuật vì nó dựa trên ngăn xếp. Nhưng chúng ta có thể thao tác mã để làm cho nó thực thi như 1 2++
:
blsq ) #Q<-#q++1 2
12
Làm việc với các công cụ tích hợp này là vô cùng khó khăn và chưa ai sử dụng chúng cho bất cứ điều gì hữu ích ngoại trừ những thứ liên quan đến quine. Nếu bạn đảo ngược, ++1 2
bạn sẽ có được 2 1++
sản xuất 21
và không 12
. Lý do mã trên tạo ra 12
là vì #Q
cũng bao gồm <-
vì vậy cuối cùng chúng tôi thực hiện nhiều hơn chỉ là 2 1++
: p. Chúng tôi cuối cùng thực hiện 2 1++#q<-
mà sản xuất 12
.
Chúng tôi thực sự có thể thay thế những thứ trong mã của chúng tôi, ví dụ mã này thay thế tất cả các lần xuất hiện của ?+
chính nó bằng?*
blsq ) #Q(?+)(?*)r~5.-#q5 5?+
25
Sử dụng:
$ 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