Aceto , 49 bytes
&M"pp"
L!)(de
&c;`Che"
`!d!sick
!',@p"!'
'N'U`!Lu
yadda yadda Curva de Hilbert.
Primeiro, colocamos os três caracteres importantes na pilha:
!'
'N'U
Em seguida, definimos uma marca de captura e começamos lendo um único caractere. Nós o d
duplicamos e o negamos, e se o resultado for verdadeiro (por isso, se a string estiver vazia; a entrada terminou), pularemos para o final:
;`
d!
,@
Com a cópia restante do caractere de entrada, verificamos se ele está contido no restante da pilha (ou seja, se é um de!, N, U). Caso contrário, apresentamos um erro, lançando-nos de volta à nossa marca de captura, onde lemos outro personagem:
&c
`!
Caso contrário, carregamos o que está no armazenamento rápido (essencialmente um registro que é inicialmente uma string vazia; falsy), negamos e o enviamos de volta ao armazenamento rápido, e também aumentamos o erro (voltando à leitura dos caracteres):
&M
L!
Quando a entrada parou, somos enviados para o fim. Lá, invertemos a direção, pressionamos um ponto de exclamação, carregamos um armazenamento rápido e o negamos. Se isso é verdade (ou seja, tivemos um número ímpar de coisas de negação), imprimimos o ponto de exclamação que pressionamos:
p !'
`!Lu
Por fim, empurramos a sequência em duas partes e as imprimimos (por motivos de economia de espaço):
"pp"
)(de
Che"
sick
"
Posteriormente, o programa ainda volta ao início original, mas como nenhum dos comandos gera nada ou possui comportamento em loop, isso não importa. Na verdade, o primeiro comando non-nopping que alcançamos gera uma exceção, pulando a maior parte do código porque saltamos para a marca de captura, o que significa que tudo o que Aceto vê nessa parte é:
&
!' @
'N'U
Desde U
agora não é precedido por um caractere de aspas simples e, portanto, não é visto como um caractere literal, ele é interpretado como um comando: U
inverte todos os elementos na pilha (agora é !
, N
, U
, a partir do topo), e 'N
e '!
empurrar mais caracteres, o que significa que terminamos com a pilha [U, N, !, N, !]
.
Nota lateral: Este é o primeiro programa do Aceto escrito (em parte) com a ajuda do novo editor do Aceto .
notunischecked
?