He110!
He110! (pronounced as in Hellloooo... in Coil's I don't get it 4:18 onwards) is a joke cellular automaton esolang by User:Salpynx.
Overview
- Every line of a He110! program begins with the token
He
- Lines ending with a single exclamation mark
!
have been encoded in Groan mode. - Lines ending with double exclamation marks
!!
have been encoded in Laugh mode. - Between these start and end tokens are combinations of characters
h
representing 1, ande
representing 0. - In Groan mode the data directly represents binary cell states. Source is to be read slowly, with repeated hs held as extended breath sounds.
- In Laugh mode the data is Manchester encoded binary cell states. Source should be read energetically, in an upbeat fashion.
Alternate characters
- 1 can be represented by
[Hh]
- 0 can be represented by any vowel,
[eEaiouAIOU]
Y/y is not considered a vowel.
Examples
Hello, World! Image output:
Hello, World!; Groan
Heheeheeeeeeheheeeeeeeeeheeeheeeeeeeeeeeheeeeheeh! Heheeheeeeeeheheeeeeeeeeheeeheeeeeeeeeeeheeeeheeh! Heheeheehheeheheehheeeeeheeeheehheehehheheeeeheeh! Hehhhheheeheheheheeheeeeheheheheehehheeeheehhheeh! Heheehehhhheheheheeheeeeheheheheeheheeeeheheeheeh! Heheeheheeeeheheheeheeeeheheheheeheheeeeheheeheee! Heheeheehhheheheehheeheeeheheeehheeheeeeheehhheeh!
Hello, World!; Laugh
Heheehehheehehehehehehheehheehehehehehehehehehheehehehheehehehehehehehehehehehheehehehehheehehhe!! Heheehehheehehehehehehheehheehehehehehehehehehheehehehheehehehehehehehehehehehheehehehehheehehhe!! Heheehehheehehheheehehheehheehehheheehehehehehheehehehheehehheheehehheehheheehheehehehehheehehhe!! Heheheheheehheehehheehheehheehheehehheehehehehheehheehheehheehehheehheheehehehheehehheheheehehhe!! Heheehehheehheheheheehheehheehheehehheehehehehheehheehheehheehehheehheehehehehheehheehehheehehhe!! Heheehehheehheehehehehheehheehheehehheehehehehheehheehheehheehehheehheehehehehheehheehehheeheheh!! Heheehehheehehheheheehheehheehehheheehehheehehehheehheehehehheheehehheehehehehheehehheheheehehhe!!
Other automata edge rules
Heheehehheehehehehehehheehheehehehehehehehehehheehehehheehehehehehehehehehehehheehehehehheehehhe!! Hheheheheheheheheheheeheehehheehehehehehehheehheehehehehehehehehehheehehehheehehehehehehehehehehehheehehehehheehehhe!! Heheehehheehehheheehehheehheehehheheehehehehehheehehehheehehheheehehheehheheehheehehehehheehehhe!! Hheheheheheheheheheheeheheheheehheehehheehheehheehheehehheehehehehheehheehheehheehehheehheheehehehheehehheheheehehhe!! EhehehehehehHeheehehheehheheheheehheehheehheehehheehehehehheehheehheehheehehheehheehehehehheehheehehheehehhe!! Heheehehheehheehehehehheehheehheehehheehehehehheehheehheehheehehheehheehehehehheehheehehheeheheh!! EhehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehehHeheehehheehehheheheehheehheehehheheehehheehehehheehheehehehheheehehheehehehehheehehheheheehehhe!!
Execution
He110! programs are executed by applying rule 110 to the edges in clockwise fashion starting from the last line, expanding the block of cells in every direction each cycle.
The cellular automaton expands in four directions and halts at the end of a cycle if a pair of opposite edges, left and right stripped of empty cells, are identical.
The last cell of each new line in each of the directions is overwritten by the first cell of the edge 90 degrees clockwise.
Output
Output can either be in image format (see Hello, World! example above) or in character format:
Hehhhhhh! Hehehheh! Hehheehh!
Character output:
██ ██ ████████ █ ██ █ ███ ███ ████ ███
Computational Class
He110! effectively implements four independent rule 110 automata, each of which is independent apart from interactions at the diagonal. The only known Turing-completeness construction for Rule 110 requires a specific cyclically repeating pattern in both directions beyond the boundaries of the tape (with one of the two such patterns specifying a sequential tag program, meaning that if a cyclic tag program is used the pattern becomes cyclically repeating). However, due to issues with the "cellular automaton speed of light", only a finite amount of data can be encoded in an expanding region at the interaction between two cellular automata; in this case, not nearly enough is available. Thus, Turing-completeness of He110! would require some other (currently unknown) Turing-completeness construction for rule 110.
Further development
- Enable other automata rules to be specified independently for each edge. Token
He
represents the default rule 110, variations on this can specify any other elementary automaton. Experimenting with other rules produces some very nice patterns. It will be interesting to see how different rules interact at the diagonal intersects, and with halt criteria.
Line begin token: {zeros}H{ones}e
The zeros and ones are encoded using the same characters and end-of-line !
/!!
encodings as before.
Edge | Rule |
---|---|
North | 110 + First row {zeros} - First row {ones} |
South | 110 + Last row {zeros} - Last row {ones} |
East | 110 + Odd row {zeros} - Even row {zeros} |
West | 110 + Even row {ones} - Odd row {ones} |
Example: EeeHe{data}!
in the first row encodes 110 + 3 = 113
- Experiment with the halt criteria. Substring matching / XOR / other comparison condtions. Perhaps combining different automaton rules can create interesting control mechanisms?
- Explore other avenues to meaningful output. Output the final result of each edge as a number, or string, or some other datatype that can be used or interpreted.
External resources
- Coil, I don't get it, pronunciation guide