Escreva um programa que, para os números de 1 a 255, imprima o código BF que produzirá o número fornecido em algum byte da matriz, além de uma nova linha.
Por exemplo, as quatro primeiras linhas da saída podem (e provavelmente serão):
+
++
+++
++++
O vencedor será o menor: source code + output
(em bytes).
Esclarecimentos e Revisões :
Os programas BF usam células de quebra automática.
O programa BF de saída deve terminar com a única célula diferente de zero sendo a célula que contém o número.
Os programas devem ser exibidos em ordem crescente.
A saída de um programa para 0 é opcional.
Ponteiros de dados negativos não são permitidos.
<
no primeiro ponteiro não fará nada. (deixe um comentário, se for mais apropriado fazê-lo jogar)
code-challenge
brainfuck
code-generation
Pedreiro
fonte
fonte
+>++++++++++.
um programa válido para a entrada1
?Respostas:
Perl 6 , 224 + 3964 =
58344188 bytesExperimente online! (pode exceder o tempo limite. Altere
^27-13
para^25-12
para acelerar um pouco ao custo de uma saída extra)Produz o código mais curto do formulário
*>[*>*<]>*
, onde cada*
um é um determinado número de+
s ou-
s. Existem alguns ajustes extras, como remover o loop, se não for necessário, além de arrastar>
s.Até onde eu sei, a saída é a mais jogada nesse formato em particular.
Explicação:
fonte
Malbolge , 28 743 bytes + 7 166 de saída
Não é muito criativo, não é? Vou trabalhar no golfe desse garoto mau.
Experimente online!
fonte
Brainfuck,
777573 + 32894 = 329673296932971bytesExperimente online!
saída é a mais simples possível
explicação:
fonte
Stax , pontuação
47514783 (812 bytes + 3971)Execute e depure
Comecei com os melhores programas publicados .
Eu usei algum regex-fu, para limitá-lo aos programas mais curtos que usam no máximo 2 células. Depois, aparei qualquer rastro
<
ou>
caractere. Eu acho que essa é uma maneira possivelmente conservadora de garantir que não haja células diferentes de zero no final do programa. Depois, executei-o através de um programa stax experimental que escrevi para gerar programas stax para saída fixa do tipo kolmogorov.Este programa funciona aplicando repetidamente substituições de string. A cada etapa, ele procura por> 1 substring de comprimento que ocorre com mais frequência e o substitui por um caractere não utilizado.
fonte
Carvão vegetal ,
707698410 + 3627 =433443254037 bytesExperimente online! Link é a versão detalhada do código. Explicação:
Desative o preenchimento de espaço.
Atribua uma grande string compactada que consiste nas respostas de @ JonathanAllen para
-128
..-15
mas com+
e-
sinais transpostos.Desenhe um triângulo de
+
s do lado 14, que gera os resultados corretos de 1 a 14. O cursor é deixado no canto inferior, embora o retorno à direita na sequência compactada mova a próxima saída para a próxima linha.Divida a string grande nos caracteres de retorno e imprima cada substring na ordem inversa, gerando os resultados de 15 a 128.
Mova uma linha para cima para que o resultado de 128 seja substituído pelo resultado negado de 128.
Faça um loop pela transposição da string
+
e-
volte novamente para que eles gerem os resultados corretos para 128 a 241.Desenhe um triângulo de
-
s do lado 14, que gera os resultados corretos para 242 a 255.fonte
Gelatina , 1224 + 3716 = 4940 bytes
Um programa completo.
Experimente online!
Quão?
Quase totalmente compactação dos melhores resultados atuais em esolangs que deixam apenas um único diferente de zero, com os movimentos de fita à direita removidos. Provavelmente existe uma maneira de avaliar um subconjunto de programas de AM, de forma que eles terminem e produzam as soluções mais curtas que superariam esse programa ingênuo. Também pode haver uma maneira de superar isso com um programa mais inteligente de criação de padrões ou de fatoração.
fonte
SuperMarioLang , 231 + 32894 bytes
Experimente online!
Isso com certeza pode ser mais divertido, já que o resultado é o mais básico para o cérebro, mas levei o dia todo para escrever essa resposta (meus três filhos me deixam um pouco de tempo de sobra) e tenho orgulho de que pelo menos consegui alcançar isto.
fonte
Python 2, 70 + 8428 = 8498
-2 bytes Graças a A__!
-20 Bytes Graças a Jonathan Allan!
-229 bytes, colocando o número na segunda célula
-1000ish bytes, alternando de 16 para 9
Experimente Online!
Saída
fonte
Rubi 271 + 5363 = 5634
Experimente online!
Converte cada valor na menor base que não contém
zero,seu dígito inicial, em qualquer outro local, e depois converte a partir dessa base. Valores maiores que 127 são calculados como seus inversos.Sem embalagem, 221 + 5888 = 6109
Utilizando a mesma abordagem acima, com células sem quebra automática.
Experimente online!
fonte
JavaScript (Node.js) , 691 + 3627 = 4318
Usando a mesma abordagem que a resposta de Neil's Charcoal e, portanto, também com base na resposta de @ JonathanAllan's Jelly .
Experimente online!
fonte
Barril não oficial 16 + 32895 = 32911 bytes
Uma solução de linha de base para um idioma de golfe. É o mais simples que consigo pensar.
Experimente online!
fonte
Ruby 23 + 32895 = 32918 bytes
Como uma linha de base. Esta é a solução mais simples que consigo pensar.
fonte
0
provavelmente deveria ser1
(embora eu tenha perguntado se podemos gerar zero também)256.times{|n|puts ?+*n}
não que isso importe demais ...Retina 0.8.2 , 28 + 16640 = 16668 bytes
Experimente online! Inclui saída para
0
. Apenas produz usando+
s até 127-
es até 255.fonte
Scala , 95 + 16639 = 16734 bytes
Experimente online!
Uma resposta simples que obviamente não vai ganhar. Usa apenas o fato de que o
-
operador (diminuindo um byte) volta para 255.fonte
05AB1E , pontuação: 4848 ( código fonte de 1219 bytes + saída de 3629 bytes)
A saída é um porto da resposta do @Neil 's Charcoal , portanto, certifique-se de fazer o voto positivo também!
Experimente online.
Explicação:
Veja esta dica 05AB1E meu (seção Como comprimir grandes inteiros ) para entender por que
•тôm...ò´Θ•
é183...875
.fonte