User:Aadenboy/Windle

From Esolang
Jump to navigation Jump to search

Windle is a 2D esoteric programming language.

Programs are laid out spatially. as disjoint orthogonal lines. Each line is either single or double struck. Programs start at S and end at E.

One-path straight

S-- --E S>> >>E S== --E S>> >>E

S-- ==E S>> >>E S== ==E S>> >>E

One-path turn

S---  S>>>  S===    S>>>
    |     v     |       v
    E     E     E       E

S---   S>>>  S===   S>>>
    H      v     H      v
    E      E     E      E

T-junction from straight

000 B     100 A
001 A     101 B
010 B     110 A
011 A     111 B
S--- ---E S>>> ---E S=== ---E S>>> >>>E
    |         v         |         |
    E         E         E         E
S--- ---E S>>> >>>E S=== ---E S>>> ---E
    H         H         H         v
    E         E         E         E
S--- ===E S>>> ===E S=== ===E S>>> >>>E
    |         v         |         |
    E         E         E         E
S--- ===E S>>> >>>E S=== ===E S>>> ===E
    H         H         H         v
    E         E         E         E

T-junction from split

000 AB     100 AB
001 B      101 B
010 A      110 A
011 AB     111 AB
    E     E     E     E
    |     ^     |     ^
S---  S>>>  S===  S>>>
    |     v     |     v
    E     E     E     E
    E     E     E     E
    H     ^     H     ^
S---  S>>>  S===  S>>>
    |     |     |     |
    E     E     E     E
    E     E     E     E
    H     ^     H     ^
S---  S>>>  S===  S---
    H     v     H     v
    E     E     E     E

Four-way junction

0000 B     1000 B
0001 B     1001 C
0010 B     1010 B
0011 A     1011 C
0100 B     1100 A
0101 B     1101 B
0110 C     1110 A
0111 B     1111 B
    E         E         E         E
    |         |         |         |
S--- ---E S>>> >>>E S=== ---E S>>> >>>E
    |         |         |         |
    E         E         E         E
    E         E         E         E
    |         |         |         |
S--- ===E S>>> >>>E S=== ===E S>>> >>>E
    |         |         |         |
    E         E         E         E
    E         E         E         E
    H         H         H         ^
S--- ---E S>>> >>>E S=== ---E S>>> ---E
    |         |         |         |
    E         E         E         E
    E         E         E         E
    H         H         H         ^
S--- ===E S>>> ===E S=== ===E S>>> ===E
    |         v         |         |
    E         E         E         E
    E         E         E         E
    H         H         H         H
S--- ---E S>>> >>>E S=== ---E S>>> >>>E
    H         H         H         H
    E         E         E         E
    E         E         E         E
    H         H         H         H
S--- ===E S>>> >>>E S=== ===E S>>> >>>E
    H         H         H         H
    E         E         E         E

Static example:

S== --- -- ==E S>> >>> -- >>E
   |   |  |       |   v  ^
  -     ==       <     ==
 H |   |  |     v ^   v  ^
 H  --- ==      v  <<< >>
 H     H        v     ^
  =====          >>>>>

When a pointer travels over a line, the line is toggled between single and double struck. All S's turn into E's after the first tick. The update order for each pointer is chronological.

The left configuration turns into the right configuration after 41 ticks:

S== --- -- ==E E== === -- --E
   |   |  |       |   H  H
  -     ==       =     --
 H |   |  |     | H   H  H
 H  --- ==      |  === --
 H     H        |     |
   =====         -----