Votre tâche consiste à créer une simulation Game of Life représentant une horloge numérique, qui satisfait les propriétés suivantes:
L'horloge affiche les heures et minutes décimales (par exemple
12:00
,3:59
,7:24
) avec un état différent pour chacun des 1.440 minutes de la journée - soit les heures vont de 0 à 23 ou de 1 à 12 avec un indicateur PM.Le schéma est périodique et l’état est mis en boucle sans interaction extérieure.
Les minutes sont mises à jour à intervalles réguliers - d'un changement de minute à l'autre prend le même nombre de générations.
Un témoin anonyme est en mesure de dire en un coup d'œil que l'affichage est censé être une horloge numérique. Cela implique notamment:
Les chiffres sont visibles et clairement distinguables. Vous devez être capable de dire avec certitude d'un coup d'œil quelle heure est affichée.
Les chiffres sont mis à jour en place. Chaque nouveau numéro apparaît au même endroit que le numéro précédent et les boîtes de sélection des chiffres ne bougent quasiment pas. (En particulier, un chiffre ne contient pas 10 chiffres différents à des endroits différents qui sont découverts chaque fois que les chiffres changent.)
Les chiffres apparaissent côte à côte, sans espace excessif entre eux.
Votre programme sera noté dans l'ordre suivant (les critères les plus bas jouant le rôle de bris d'égalité pour les critères les plus élevés):
Taille de la boîte englobante - la boîte rectangulaire avec la plus petite surface qui contient complètement la solution donnée l'emporte.
L'exécution la plus rapide - le moins de générations à avancer d'une minute gagne.
Nombre initial de cellules vivantes - le plus petit nombre gagne.
Premier post - post précédent gagne.
la source
Réponses:
11 520 générations par compte d'horloge / 10 016 x 6 796 boîtes / 244 596 pop
Voilà ... c'était amusant.
Eh bien, le design n’est certainement pas optimal. Ni du point de vue de la boîte englobante (ces chiffres à 7 segments sont énormes ), ni du décompte de population initial (il y a des trucs inutiles, et des trucs qui pourraient certainement être simplifiés), et la vitesse d'exécution - eh bien ... I ne suis pas sûr.
Mais, hé, c'est beau. Regardez:
Exécuter!
Obtenez la conception de cet élément essentiel . Copiez tout le texte du fichier dans le presse-papiers.
Nouveau : voici une version avec les indicateurs AM et PM pour les plus exigeants.
Accédez au simulateur de vie JavaScript en ligne de Conway . Cliquez sur importer , collez le texte de conception. Vous devriez voir la conception. Ensuite, allez dans les paramètres et définissez l' étape de génération sur 512, ou quelque chose autour de ces lignes, ou vous devrez attendre indéfiniment pour voir la mise à jour de l'affichage de l'horloge.
Cliquez sur Exécuter , attendez un peu et soyez surpris!
Lien direct vers la version dans le navigateur.
Notez que le seul algorithme qui rend cette conception énorme utilisable est hashlife. Mais avec cela, vous pouvez réaliser l’ensemble de l’horloge en quelques secondes. Avec d'autres algorithmes, il n'est même pas pratique de voir l'heure changer.
Comment ça fonctionne
Il utilise la technologie p30. Juste des choses basiques, des planeurs et des vaisseaux spatiaux légers. Fondamentalement, la conception va de haut en bas:
Quoi qu'il en soit, il n'y a rien d'extraordinaire dans cette conception. Aucune réaction étonnante n’a été découverte dans ce processus, et aucune combinaison vraiment intelligente à laquelle personne n’avait pensé auparavant. Juste des morceaux pris ici et là et mis ensemble (et je ne suis même pas sûr de l'avoir fait de la "bonne" façon - j'étais en fait complètement nouveau à cela). Cela demandait cependant beaucoup de patience. Mettre tous ces planeurs au bon moment dans la bonne position était un casse-tête.
Optimisations possibles:
la source