He110!

From Esolang
Jump to navigation Jump to search

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, and e 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:

He110! Hello, World! 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

Hello, World! with other automata edge rules specified in the lines. CW from top: 110, 30, 184, 90
  • 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