Olá mundo de Conway

24

Costuma-se dizer que todos os programadores devem ser capazes de escrever um programa "olá mundo" em qualquer linguagem de programação depois de alguns olhares sobre essa linguagem (e quicksort após mais algumas observações).

Como o Jogo da Vida de Conway é Turing completo (por isso se qualifica como uma linguagem de programação de uso geral) , o problema é auto-explicativo:

Crie um "Olá, mundo!" aplicação usando apenas o jogo da vida de Conway! A única entrada válida é um estado inicial para o Jogo da Vida de Conway, que:

  • não contém nenhuma forma reconhecível semelhante ao texto "Olá, mundo!"
  • conterá uma forma reconhecível semelhante ao texto "Olá, mundo!" dentro de um número razoável de ciclos (não deve ser executado por mais de alguns minutos em um bom PC - isso permite bilhões de ciclos e deve ser suficiente)
  • a área onde o "Olá Mundo!" o texto aparecerá deve estar vazio no estado inicial! (Caso contrário, o problema seria muito fácil) Se ninguém conseguir fazer isso, poderemos reduzir esse requisito para "quase vazio"

Pontuação:

O vencedor será baseado no número de upvotes em aproximadamente uma semana após o primeiro envio válido.

Diretrizes para votação:

  • saída mais elaborada e bonita deve valer mais
  • o resultado que é estável ao longo de muitos ciclos deve valer mais do que aquele que desaparece para ficar irreconhecível no próximo ciclo.
  • uma solução bloqueada em um ciclo perpétuo ou a partir de um padrão interessante vale mais, porque prova o design inteligente do estado, e não apenas tentativa e erro aleatórios com uma simulação reversa.

A entrada deve estar em um formato legível por pelo menos um dos simuladores notáveis ou um simulador on-line ao qual o atendedor está vinculado. Links (para uma animação ou um simulador definido para o estado inicial) também são aceitos, mesmo incentivados. Se a saída não estiver visível dentro de alguns ciclos, a entrada deve especificar após qual ciclo o resultado será visível.


Editar:

Pode haver alguma tolerância leve na frase a ser gerada. Pode ser " Hello, World!", " hello, world" " HELLO WORLD!" etc.

vsz
fonte
não deveria haver vírgula em algum lugar nessa frase?
22712 ardnew
@ardnew: Qual frase?
vsz
a frase a ser gerada:Hello, world!
ardnew 3/07/12
@ardnew: obrigado, editei um adendo. Eu deixei deliberadamente uma ligeira imprecisão, porque, em última análise, os eleitores decidem . Se você acha que não violou diretamente uma das regras principais e que os eleitores vão gostar da sua interpretação dos detalhes menores, fique à vontade para fazê-lo da maneira que desejar!
vsz
11
Você pode usar meu simulador (importa RLE e texto sem formatação). Não é bom para o desenvolvimento, mas pelo menos executa grandes padrões arbitrários a uma velocidade decente. Também posso fazer upload de padrões e torná-los vinculáveis, se solicitado
copie o

Respostas:

50

Minha primeira tentativa para isso, uma solução relativamente simples. Ele dispara alguns barris de planador. Cada par de planadores se transforma em um bloco, que forma o texto. Esse processo leva cerca de 16000 gerações (você pode definir um salto de quadro ou usar o botão SuperStep no meu simulador).

Link direto . Mova-se com o mouse direito, amplie com a roda do mouse.

Link para o arquivo .rle (também funciona com Golly)

Imagem do padrão 32: 1:

Imagem do padrão 32: 1

cópia de
fonte
4
Se você possui um navegador compatível com telas e não vê o padrão inicial, diminua o zoom com a roda de rolagem. Levei um tempo para resolver isso.
Peter Taylor
Excelente! Eu estava esperando que você publicasse uma solução para esse desafio depois de ver o codegolf.stackexchange.com/a/5946/3527 e seu site.
Cristian Lupascu
11
@ w0lf criar um padrão é um tipo muito diferente de desafio que a simulação. Mas sim, estou me divertindo com isso
copie
2
Parabéns! Estranho, que ninguém teve coragem de apresentar outra solução. Na verdade, se não houvesse uma solução postada, eu teria feito algo muito semelhante (planadores convergindo para formar blocos), embora muito menor e menos detalhado. Posso perguntar como você fez isso? Gerado com um programa ou calculou as posições manualmente?
vsz
11
@vsz O padrão é gerado a partir de um pequeno script python. Eu acho que uma semana pode ter sido um prazo curto para algumas pessoas (é por isso que ninguém mais tentou)
copie