7 , 23 caracteres, 9 bytes
54340045141332401057403
Experimente online!
Este é um desafio bastante difícil em um idioma que consiste inteiramente de dígitos, mas eu consegui…
São apenas 9 bytes na codificação 7. (Estritamente falando, são 8⅜ bytes (23 × ⅜ - ¼ porque os dois bits finais finais podem ser omitidos), mas pela primeira vez, o requisito do PPCG de arredondar para um número inteiro de bytes é realmente uma vantagem, pois significa que os 1 bits extras à direita são necessários e, portanto, não são banidos pela pergunta.) Um despejo hexadecimal reversível:
00000000: b1c0 2530 b6a0 22f8 1f ..%0.."..
O principal desafio de escrever este programa no 7 era jogar com menos de 10 bytes (como escrever 7 sem usar 0
ou 1
é bastante difícil.) Isso usa a mesma estrutura do programa "Hello world" padrão:
5434004514133240105 7 403
5434004514133240105 comandos 0-5 anexam literais ao espaço de dados
7 iniciar uma nova seção do espaço para dados
403 outro literal anexado ao espaço de dados
{implícito: avaliar a última seção como comandos}
4 troque a 1ª e a 2ª seções com uma seção vazia entre
6 reconstrua os comandos que criariam a saída da 1ª seção
3 (+ alguns outros efeitos dos quais não nos importamos)
Em outras palavras, começamos criando duas seções do espaço de dados; temos dois literais, cada um dos quais pressiona uma sequência de comandos lá. A segunda seção (eles são empurrados no estilo pilha, então primeiro empurrão = último pop) é uma sequência bastante arbitrária de comandos, mas é empurrada usando a sequência de comandos 5434004514133240105
(produzindo assim a sequência de dados 5434664574733246765
; ao discutir 7 no texto, normalmente uso fonte normal para um comando que envia um literal e negrito para o literal resultante correspondente). A primeira seção é pressionada usando a sequência de comandos 403
, produzindo 463
. Em seguida, a primeira seção é copiada de volta para o programa (um comportamento implícito de 7).
O 463
agora é composto por comandos (em negrito) que fazem algo imediatamente, em vez de comandos (não em negrito) que apenas enviam literais. 4
reorganiza as seções para colocar nossa "string literal" na primeira seção. Em seguida, 0
faz a operação pela qual 7 é mais conhecida: ocupar uma seção do espaço de dados e reconstruir a sequência de comandos que provavelmente a criou. No caso em que a sequência de comandos original era tudo 0
- 5
, isso é 100% exato (sem surpresa, pois esses comandos puramente empurram os dados e, portanto, deixam evidências óbvias do que eles fizeram), e assim recuperamos nossa sequência original 5434004514133240105
. Finalmente, 3
imprime.
Portanto, o que resta aqui é a codificação da string. Isso tem seu próprio idioma específico do domínio:
5434004514133240105
5 change encoding: 6 bits per character
43 select character set: digits and common symbols
40 '9'
04 space
51 select character set: uppercase letters
4133240105 'B' 'Y' 'T' 'E' 'S'
(Não há "conjunto de caracteres selecionado: letras minúsculas" no conjunto de caracteres "dígitos e símbolos comuns" - você deve primeiro usar um conjunto de caracteres diferente -, então eu precisava usar maiúsculas para jogar golfe tão curto o suficiente para caber abaixo dos 10 dígitos efetivos. limite de bytes.)