CAPL 1.5+; 6 sem entrada; 10 - 10 = 0 com entrada
Sidenote
: Li em algum lugar [link?] Que linguagens personalizadas não são permitidas em perguntas sobre golfe, pois elas podem criar funções internas que fazem exatamente o que a pergunta está perguntando; no entanto, eu fiz o CAPL para facilitar o golfe em geral . Se você acha que isso não é permitido aqui, me avise!
Eu tenho algumas idéias de > <> e Befunge (você pode se mover entre linhas e usar caracteres hexadecimais para pressionar números), algumas de Ruby e outras de minha autoria para facilitar o golfe.
O CAPL lê da esquerda para a direita e desce uma linha no final da linha. Se for a última linha, o programa será encerrado.
Como ninguém conhece esse idioma ainda, tentarei explicar o máximo possível.
Saída y. 6 bytes
bb*.n<
bb*
b
é hexadecimal para 11
, assim bb*
como 11*11
= 121
, que é o equivalente UTF-8 y
. Este valor é enviado para a pilha.
.
Aparece o valor superior da pilha e gera como UTF-8. Como 121
está no topo da pilha, o índice é ignorado aqui.
n
Gera uma nova linha
<
Envia o ponteiro de volta ao início da linha, repetindo a linha. Como não esperamos entrada, podemos fazer isso com segurança sem solicitar novamente a entrada.
Saída da entrada. 10 bytes, 0 após bônus
i~a&{X:.)}
i
Recebe a entrada do usuário, pressiona como UTF-8 na parte superior da pilha e pressiona o comprimento depois disso. Ou seja, [72,101,108,108,111,5]
~
aparece um número da pilha e depois inverte essa quantidade de bytes. [111,108,108,101,72]
a
Ou seja, Hexadecimal para 10
, o caractere de nova linha
&{...}
Faz um loop infinito. Temos entrada, portanto não podemos enviar o ponteiro de volta para a linha. Eu poderia colocar a função na linha abaixo, o que me garantiria um byte, mas novas linhas não são permitidas neste desafio.
X
Remove o valor superior da pilha (O índice do loop)
:.
Duplica o valor superior e emite como UTF-8
)
Vira a pilha para a direita. ( [1,2,3,4,5]
-> [5,1,2,3,4]
)
No entanto, isso significa que começamos com uma nova linha, depois iniciamos a saída da entrada, depois uma nova linha, depois a entrada etc. Se não for permitido iniciar com uma nova linha, use o código a seguir com 12 bytes ou 2 após subtrair o bônus.
iXa#~&{X:.)}
O único novo comando aqui é o #
que envia a quantidade de itens da pilha para a pilha.
Eu removi o comprimento de i
, porque adicionar 1 e trocar com a nova linha é mais longo do que remover e obter o comprimento novamente.
Apenas por diversão, aqui está um programa "Hello World"
"Hello World"#~
#?!;.<
A ?!
operação é igual à de> <>
y
ou\n
dentro de uma string literal"?