Aceto , 19 17 bytes não concorrente
Nova versão (17 bytes):
Esta nova versão leva os caracteres um de cada vez e é melhor executada com a -F
opção Funciona de maneira semelhante, mas não idêntica à solução anterior:
>,
Op0
p|1u
,ip^
Resposta antiga (19 bytes):
(Não concorrente porque tive que corrigir dois erros no intérprete)
|p1u
iOp<
|!`X
rd!r
Esta é a primeira resposta do Aceto que destaca o que ele pode fazer relativamente bem, eu diria. As "listas" são fluxos de entrada, com uma entrada por linha, "1" para verdadeiro e "0" para falso, com uma sequência vazia significando o fim da lista.
Os programas Aceto são executados em uma curva de Hilbert, começando no canto inferior esquerdo e terminando no canto inferior direito. Primeiro, nós r
amarramos uma string, d
uplicamos e a negamos ( !
), transformando strings vazias em True, e todo o resto em False. Depois, há um espelho horizontal condicional ( |
): se o elemento superior da pilha for verdadeiro, espelhe horizontalmente. Isso acontece quando a string estava vazia. Se fizermos o espelhamento, aterrissaremos no X
, que mata o intérprete.
Caso contrário, convertemos a cópia restante na pilha em um i
nteger e fazemos outro espelho horizontal condicional: Dessa vez, porque 1 é verdadeiro e 0 é falso, espelhamos se vemos o (primeiro) valor verdadeiro. Se não espelhamos (então vimos um 0), criamos o p
que está na pilha (já que a pilha está vazia, um zero) e pulamos para a O
rigidez da curva, onde começamos, iniciando todo o processo novamente.
Caso contrário, quando vimos um 1, espelhamos e pousamos no u
, o que inverte a direção em que nos movemos na curva de Hilbert. 1p
imprime um 1, e agora continuamos da mesma maneira O
que teríamos se tivéssemos visto um 0, mas como estamos no "modo reverso", nossa origem está no canto inferior direito , então pulamos para lá.
Agora, r
lemos outra corda e a negamos. Se a seqüência estava vazio e, portanto, o elemento superior da pilha é truthy, `
vai não escapar o próximo comando ( X
), fazendo-nos sair.
Caso contrário (se a cadeia não estava vazio), nós não escapar do X
e ignorá-lo. Nesse caso, vamos para a esquerda ( <
), p
rint 0 (porque a pilha está vazia) e retornamos ao O
rigin.