Desafio:
O conceito é bastante simples: escreva um programa completo para gerar seu próprio código de pontuação de golfe!
A saída deve ser apenas a contagem de bytes do seu programa e um final bytes
.
MAS ESPERE ..... há uma restrição:
- Seu código-fonte não pode incluir nenhum dígito da sua contagem de bytes
- Então, se sua pontuação é
186 bytes
, o programa não pode conter os caracteres1
,6
ou8
Saída de exemplo:
315 bytes
27 Bytes
49 BYTES
Regras adicionais:
- Caracteres, espaços e novas linhas desnecessários são proibidos no código-fonte, no entanto, espaços e novas linhas são perfeitamente aceitáveis na saída
- Deve haver um espaço único entre o número e
bytes
a saída - As letras não diferenciam maiúsculas de minúsculas
- Nenhuma auto-inspeção ou leitura do código fonte
brechas padrão não são permitidas
isso é código-golfe , então
O menor código em bytes vence!
bytes
Eu suspeito que a intenção é que a contagem deve incluir os bytes que leva para imprimir o texto:bytes
1 bytes
ou1 byte
? (lembre-se de que já existem 41 respostas, embora eu ache que nenhuma seja afetada)Respostas:
JavaScript, 19 bytes
O Octal foi inventado para servir a dois propósitos:
Experimente online!
fonte
Perl 5 , 16 bytes
Existem muitas outras maneiras de conseguir,
16
mas essa é minhaExperimente online!
fonte
&
|
^
e~
também podem ser aplicados a strings e trabalhe nelas como em uma lista de valores ASCII (se e somente se ambos os lados forem strings). Para|
e^
funciona como se a corda do shorte fosse estendida com\0
. Depois disso, é um exercício simples para encontrar combinações de letras que xoram para a saída desejada.7 , 23 caracteres, 9 bytes
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:
O principal desafio de escrever este programa no 7 era jogar com menos de 10 bytes (como escrever 7 sem usar
0
ou1
é bastante difícil.) Isso usa a mesma estrutura do programa "Hello world" padrão: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 dados5434664574733246765
; 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 comandos403
, produzindo463
. 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 tudo0
-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 original5434004514133240105
. Finalmente,3
imprime.Portanto, o que resta aqui é a codificação da string. Isso tem seu próprio idioma específico do domínio:
(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.)
fonte
Tela , 8 bytes
Experimente aqui!
Uma solução mais interessante de 20 bytes:
Experimente aqui!
fonte
brainfuck , 53 BYTES
Experimente online!
Outra submissão com letras maiúsculas
bytes
. Encontrado com a ajuda do excelente auxiliar BF-crunch da primo.fonte
PHP, 14 bytes
fonte
bytes
peça fora da?>
? Experimente online!PHP anterior a 7.2 , 13 bytes
Assume as configurações padrão (avisos E_NOTICE desativados) e a versão do PHP anterior à 7.2.
Precisa ser decodificado com
xxd -r
Ou se você preferir Base64
Experimente online!
fonte
Stax , 5 bytes
Execute e depure
Descompactado, fica assim. O modo de fonte compactada torna esse tipo de trivial e desinteressante.
Se você não quiser usar o modo de fonte compactada,
6^p`5l@
funciona por 7 bytes.fonte
restricted-source
, não na linguagem. Esta é realmente a maneira mais direta de produzir"5 bytes"
usando o Stax.R , 16 bytes
Experimente online!
fonte
bytes
". O programa tem 16 bytes.cat
por padrão, adiciona um espaço entre suas entradas.object.size
saídas no formato correto (combytes
incluído por padrão). Irritantemente, o mais curto que eu poderia encontrar é de 17:object.size(0)-39
. TIOobject.size(0)/3
.Python 3 ,
252418 bytesExperimente online!
fonte
3*8
deve estar bem, embora05AB1E , 6 bytes
Experimente online!
Alternativas para
₂¤
incluem:5>
,₁¤
,3·
fonte
Bash, 21 bytes
"Leia seu próprio código-fonte" claramente não é o vencedor aqui, mas ninguém mais enviou um, então que diabos.
Experimente online!
fonte
Retina , 15 bytes
Este programa conta o número de substrings com pelo menos dois caracteres na string "bytes" e imprime essa contagem e a própria string.
Experimente online!
fonte
PHP + HTML, 16 bytes
Sim, isso está chegando perto do abuso de brechas, mas achei que isso precisava ser publicado. E o uso do PHP significa que essa resposta tecnicamente é escrita em uma linguagem de programação completa de Turing. Obviamente, qualquer outra linguagem de modelagem HTML semelhante também funcionaria.
Demonstração ao vivo (sem PHP):
fonte
dc ,
1411 bytesExperimente online!
-3 bytes por
@Cows quack
fonte
[ bytes]Bnn
raspa alguns bytesMATL , 13 bytes
Experimente online!
Isso empurra a string '57 $ f} xiw 'e subtrai
4
, para obter13 bytes
. Isso é convertido em caracteres usandoc
.fonte
6EV' bytes'h
é de 12 (Eu estava prestes a colocar-lo)Oitava , 22 bytes
Experimente online!
fonte
Oitava , 23 bytes
Experimente online!
E isto:
Experimente online!
fonte
4
de (os códigos ASCII de)'67$f}xiw'
fornece os códigos ASCII de'23 bytes'
. Então, concatenando com a cadeia vazia''
converte códigos ASCII para caracteresPetit Computer BASIC, 11 bytes
Usar uma vírgula em uma declaração de impressão moverá o cursor para o próximo múltiplo do tamanho da guia atual. No SmileBASIC, isso é 4 por padrão, então isso produziria
11 bytes
(2 espaços), mas o PTC BASIC usaria 3 em vez disso, para que a saída tenha o espaçamento correto.fonte
APL (Dyalog Unicode) , 12 bytes
Programa completo que imprime implicitamente em STDOUT.
Experimente online!
,⍨
é anexa a sequência ao resultado da multiplicação. A exibição padrão de dados de tipo misto da APL coloca um espaço entre um número e o texto subsequente.fonte
Flacidez Cerebral , 100 BYTES
Experimente online!
Produz a
bytes
peça em todas as maiúsculas. Alguém familiarizado com o Brain-Flak pode estar realmente confuso com tudo isso((<>))
no começo, mas fique tranquilo, eles estão lá apenas para abusar da altura da pilha nilad ([]
) e nenhum dos0
s que produzem é impresso.fonte
Haskell , 26 bytes
Experimente online!
29 bytes
Experimente online!
fonte
$
.Espaço em branco , 112 bytes
Só porque ninguém fez isso ainda:
Experimente online!
Imprime "BYTES" em maiúsculas, pois as letras maiúsculas têm códigos ASCII binários mais curtos. Os comandos no programa, na minha própria notação visível composta, são:
fonte
Java 5 ou 6, 44 bytes (programa completo)
Não há link TIO, porque o Java 5/6 é antigo. No Java 5/6, era possível ter uma enumeração com código, em vez do
main
método obrigatório , tornando-o mais curto para desafios completos do programa.Também podem ser adicionados erros com
java.lang.NoSuchMethodError: main\nException in thread "main"
STDERR após a impressão em STDOUT, o que é bom de acordo com a meta (mas se o desafio permitir que erros adicionais não sejam permitidos para STDERR,System.exit(0);
podem ser adicionados (e os números octais precisam ser atualizados) para evitar o erro.Sugerido por @ OlivierGrégoire (e sua dica relevante sobre Java ).
Java 8 ou mais, 74 bytes (programa completo)
Experimente online.
Java 8+,
1615 bytes (função lambda)-1 byte graças a @ OliverGégoire .
Experimente online.
fonte
37*2
contém a7
, portanto não é válido. Sua solução alternativa está bem.v->0xE+"bytes"
ouv->0xF+" bytes"
. Não é possível testar, mas deve funcionar de qualquer maneira. Nada diz que a pontuação e os "bytes" devem ser separados.FerNANDo , 79 bytes
Experimente online!
fonte
Applescript, 15 bytes
Sim, eu estou indo para lá.
fonte
Your source code can not include any of the digits from your byte count
”
um caractere multibyte (3 bytes em Unicode, se bem me lembro), então isso tem mais de 11 bytes?Quarto (gforth) ,
1413 bytesExperimente online!
fonte
> <>, 13 bytes
Experimente online!
fonte
Lote, 32 bytes
COMSPEC
geralmente é%WINDIR%\system32\cmd.exe
assim que eu extraio a substring de 10 a 8 caracteres do final. Versão antiga de auto-referência de 16 bytes:Felizmente, a contagem de bytes não era um múltiplo de 10.
fonte
JavaScript,
1615 bytesfonte
_=>5*3+' bytes'
5
nesse caso ..