Burlesco, 40 bytes
ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh
Explicação:
Burlesque possui built-ins avançados de manipulação de pilha e código. De fato, você não pode acessar o código fonte do programa, mas pode acessar o código restante que será executado no futuro. Isso significa #Qque retornará todo o código a seguir, e é por isso que precisamos adicionar tudo #Qao código com o qual estamos fazendo ri#Q.
blsq ) #Q1 2++
12 -- this is the result of 1 2++
{1 2 ++} -- this is the result of #Q
++1 2é um código tecnicamente ilegal, pois é baseado em pilha. Mas podemos manipular o código para executá-lo como 1 2++:
blsq ) #Q<-#q++1 2
12
Trabalhar com esses built-ins é incrivelmente complicado e ninguém ainda os usou para qualquer coisa produtiva, exceto por questões relacionadas a quine. Se você inverter, ++1 2obtém o 2 1++que produziria 21e não 12. A razão pela qual o código acima produz 12é porque #Qtambém inclui o <-modo. No final, acabamos executando muito mais do que apenas 2 1++: p. Acabamos executando o 2 1++#q<-que produz 12.
Na verdade, podemos substituir coisas em nosso código, por exemplo, esse código substitui todas as ocorrências ?+por si só por?*
blsq ) #Q(?+)(?*)r~5.-#q5 5?+
25
Uso:
$ 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