Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Cell Automata Ventricle Puzzle in Elm and WebGL (cgmnt-achilles-tortoise-piglet.netlify.c...)
43 points by paliilap on March 9, 2019 | hide | past | favorite | 6 comments



WARNING: SPOILER BELOW...

I don't know why the "cheat code" works, but it does?

I only discovered it with simple trial and error.

  [spoiler codec=rot13]ZCZZCZZCZZZC[/spoiler]
I haven't found the HAVOC codon yet.

Also, it's confusing that after you "beat the game" the alleles cease to have an effect on the hypothetical organelle, so to speak.

EDIT: Never mind, just found the HAVOC codon. Actually, there seem to be multiple HAVOC codons, or different combinations for the same result, after you complete the initial challenge.

It's strange that previously disorderly combinations don't produce the same results, after you initially encode the ORDER codon. Why doesn't the pump revert to a chaotic state, when the gene inputs are returned to the default state?


You're on the right track! I think it's great how you're thinking about this.

Without spoiling too much, it's a cellular automata that you're manipulating parameters for as it runs - so the genome itself doesn't specify how the pump will beat, only how the state will change in the next generation (which will depend on the current state). That's why a genome doesn't give the same output every time - they only define how it will change, not what it will be.

There are multiple genomes that will give you the "ordered" pump, but we can guarantee there's only one Havoc codon that fulfils the criteria we specified. The solution is revealed after you submit a correct answer, and it definitely sounds like you're close (if you haven't found it already).


Okay, I think I get it now. Each four-sided polygon is a cell in the pump. There are twelve nucleotides, corresponding to four codons, one for each side of any hypothetical polygon cell.

The cells can only coordinate and synchronize, when at least one side of every cell feeds into a resonating feedback loop. This way, through self assembly, they can orient their facets to interface correctly and combine to create the properly functioning organ.

This is the manner of any automatic cellular system. Each member cell calculates its state according to the state of its neighbors for each round, generation or temporal frame of reference.

Solving the problem flips a flag in the simulation, which is simply an abstraction of the game system. Rolling the dice, to revert to the chaotic state, returns the game to its initialized settings.

Normally, in other automatic cellular systems, the operational state of all member cells is fully deterministic, but in this system, the evaluation to compute status for each round or generation is not whether the cells are healthy or not, but whether they’re capable of communicating an afinity for participation in coordinated tasks. Once synchronized behavior is achieved, the genome only modifies the already synchronized participation. Reversion to chaos, as an abstraction, does not make sense in living tissue, and since evolution solves for these realities, across iterative versions of tissue-organized multicellular creatures, this game introduces debug affordances to operate those concepts manually.


You're pretty much spot on, and this is exactly the type of thinking we're looking for during our puzzle hunt. There's a slight difference between our system and what you've specified, but the overall picture is the same and I think it's awesome how you've reasoned through it.


I don't get what this is, but it looks amazing!


Thanks! We're a student group running an open puzzle hunt for medical/biomedical students who want to learn or practise coding. This is one of our puzzles based on a simplified cell automata model of a single heart ventricle.

We use Elm on our frontend and plan on using it to make other interactive puzzles like this one - we originally got into Elm from HN and it's been a joy to work with, so we wanted to share it back!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: