Bonjour tout le monde de Conway

24

On dit souvent que tous les programmeurs devraient être capables d'écrire un programme "hello world" dans n'importe quel langage de programmation après quelques regards sur ce langage (Et quicksort après quelques autres regards).

Comme le jeu de la vie de Conway est Turing complet (il peut donc être qualifié de langage de programmation à usage général) , le problème s'explique de lui-même:

Créez un "Bonjour tout le monde!" application utilisant uniquement Game of Life de Conway! La seule entrée valide est un état initial pour le jeu de la vie de Conway, qui:

  • ne contient aucune forme reconnaissable ressemblant au texte "Hello World!"
  • contiendra une forme reconnaissable ressemblant au texte "Hello World!" dans un nombre raisonnable de cycles (il ne devrait pas fonctionner plus de quelques minutes sur un bon PC - cela permet des milliards de cycles et devrait être suffisant)
  • la zone où le "Hello World!" le texte apparaîtra doit être vide dans l'état initial! (Sinon, le problème serait beaucoup trop facile) Si personne ne réussit à le faire, nous pourrions réduire cette exigence à "la plupart du temps vide"

Notation:

Le gagnant sera basé sur le nombre de votes positifs dans environ une semaine après la première soumission valide.

Lignes directrices pour voter:

  • une sortie plus élaborée et plus belle devrait valoir plus
  • une sortie stable sur plusieurs cycles devrait en valoir plus d'une qui s'estompe pour être méconnaissable dans le cycle suivant.
  • une solution enfermée dans un cycle perpétuel, ou à partir d'un modèle intéressant vaut le plus, car elle prouve la conception intelligente de l'état, et pas seulement les essais et erreurs aléatoires avec une simulation inverse.

L'entrée doit être dans un format lisible par au moins l'un des simulateurs notables ou un simulateur en ligne auquel le répondeur se connecte. Les liens (vers une animation ou un simulateur mis à l'état initial) sont également acceptés, voire encouragés. Si la sortie n'est pas visible dans quelques cycles, l'entrée doit spécifier après quel cycle le résultat sera visible.


Modifier:

Il peut y avoir une légère tolérance dans la phrase à générer. Cela peut être " Hello, World!", " hello, world" " HELLO WORLD!" etc.

vsz
la source
ne devrait-il pas y avoir une virgule quelque part dans cette phrase?
ardnew
@ardnew: Quelle phrase?
vsz
la phrase à générer:Hello, world!
ardnew
@ardnew: merci, j'ai édité un addendum. J'ai délibérément laissé un léger flou, car finalement les électeurs décident . Si vous pensez que vous n'avez pas violé directement l'une des règles principales et que les électeurs apprécieront votre interprétation des détails mineurs, n'hésitez pas à le faire comme vous le souhaitez!
vsz
1
Vous pouvez utiliser mon simulateur (importe RLE et Plaintext). Ce n'est pas bon pour le développement, mais au moins il exécute de gros motifs arbitraires à une vitesse décente. Je peux également télécharger des modèles et les rendre liés si demandé
copie le

Réponses:

50

Ma première tentative, une solution relativement simple. Il tire quelques barils de planeur. Chaque paire de planeurs se transforme en bloc, qui forme ensuite le texte. Ce processus prend environ 16 000 générations (vous pouvez définir un saut de trame ou utiliser le bouton superstep dans mon simulateur).

Lien direct . Déplacez-vous avec la souris droite, zoomez avec la molette de la souris.

Lien vers le fichier .rle (fonctionne également avec Golly)

Image du motif 32: 1:

Image du motif 32: 1

copie
la source
4
Si vous avez un navigateur prenant en charge le canevas et ne voyez pas le motif de départ, effectuez un zoom arrière avec la molette de défilement. Cela m'a pris un certain temps pour comprendre cela.
Peter Taylor
Excellent! Je m'attendais à ce que vous publiez une solution à ce défi après avoir vu codegolf.stackexchange.com/a/5946/3527 et votre site Web.
Cristian Lupascu
1
@ w0lf créer un motif est un type de défi très différent de la simulation. Mais ouais, je m'amuse avec ça
copie le
2
Toutes nos félicitations! Étrange, que personne n'ait pris le courage de soumettre une autre solution. En fait, s'il n'y avait pas de solution publiée, j'aurais fait quelque chose de très similaire (des planeurs convergeant pour former des blocs), bien que beaucoup plus petits et moins détaillés. Puis-je vous demander comment vous l'avez fait? Généré avec un programme, ou calculé les positions manuellement?
vsz
1
@vsz Le modèle est généré à partir d'un petit script python. Je pense qu'une semaine aurait pu être une courte échéance pour certaines personnes (c'est pourquoi personne d'autre n'a essayé)
copie