Keimli

Keimli bit swap lattice

128-bit pixels mixed and inflated by a 73751-byte WebAssembly module

What you see. Every pixel is a 128-bit string. Each turn its bits are traded with the neighbours, a median filter settles some of them, and a decoder rewrites the whole cell from a dictionary. The colour is the average of the cell's 16 bytes through a palette, so like bytes make like colours. Click a cell to read it; Help, at the top of the controls, explains every section and control.

Turn
0
Bits moved last turn
0
Bits median-filtered last turn
0
Pixels rewritten last turn
0
Entropy of the byte distribution
–
Byte histogram
Render half-time
–
Segment influence bits of the other half's new content that change when one half is replaced by random bits
–
Link CPUs
off
Total set bits
0
Turn time
–
Swap order
UD0 LR0 UD1 LR1
Bits mutated last turn
0
This cell: what it holds and what it decodes to
Pixel
–
128 bits
–
Dictionary
–
Decoded
–
Decoder
–
Code
–
Byte LUT
byte 0 … 255: 256 colours spread as far apart as the RGB cube allows (257 points placed to maximise Σ ⁴√(distance to the nearest other colour), the eight corners pinned, white left out so every byte shows against the page; the closest two colours are 44 apart on the 0–255 scale). Which byte gets which colour is tuned to the dictionaries: the frequent bytes of each one (Latin letters, the UTF-8 bytes of Han, Armenian, Cyrillic, Georgian, Arabic, Devanagari, Hangul and kana text) are kept as far apart in colour as the palette allows. A pixel shows the average of its 16 bytes' colours, stretched 3× around the previous frame's mean colour. Bytes that occur in the dictionary:

Help, at the top of the controls, explains every section and control; the repository's docs folder goes deeper.