@RULE Wireworld++

Rule by Vladislav Gladkikh and Alexandr Nigay

Wireworld++ is like 2 WireWorld's mashed together. There are 2 separate WireWorlds inside Wireworld++ - the 'strong' world (states 1, 2, 3) and the 'weak' world (states 4, 5, 6).

Independently, any circuit built entirely out of cells from only one world behave identicaly to regular WireWorld - since it takes 1 or 2 adjacent 'weak' heads (state 4) to turn a weak wire (state 6) into a weak head, and the same goes for the strong wire (state 3) and its heads (state 1).

The power of Wireworld++ arises when one puts the two worlds together. A strong wire will turn to a strong head when exactly two of its neighbors are weak heads, while a weak wire will turn to a weak head if exactly one of its neighbors is a strong head.

With this, it is very easy to construct very small AND and XOR gates. To make an AND gate, connect two weak wires (inputs) to one strong wire (output). To make an XOR gate, connect two strong wires to a weak wire.

Fore more information, read this article:
https://wpmedia.wolfram.com/uploads/sites/13/2018/07/27-1-2.pdf

---------------------------------------------------------
The following script was used with the standard script 'make-ruletree.py' to generate the TREE section of this file:

name = "Wireworld++"
n_states = 7
n_neighbors = 8
def transition_function(a):
    nw, ne, sw, se, n, w, e, s, c = a #unpack
    neigh = n, ne, e, se, s, sw, w, nw #repack
    
    BG=0;SH=1;ST=2;SW=3;WH=4;WT=5;WW=6

    shc = 0
    whc = 0
    for n in neigh:
        if n == SH: shc += 1
        if n == WH: whc += 1

    if c==BG: return BG
    elif c==SH: return ST
    elif c==ST: return SW
    elif c==WH: return WT
    elif c==WT: return WW
    elif c==SW:
        if shc==1 or shc==2 or whc==2: return SH
        else: return SW
    elif c==WW:
        if whc==1 or whc==2 or shc==1: return WH
        else: return WW
    else: raise ValueError("invalid state: " + str(c))

@TREE

num_states=7
num_neighbors=8
num_nodes=81
1 0 2 3 3 5 6 6
1 0 2 3 1 5 6 4
1 0 2 3 3 5 6 4
2 0 1 0 0 2 0 0
1 0 2 3 1 5 6 6
2 1 4 1 1 1 1 1
2 2 1 2 2 1 2 2
3 3 5 3 3 6 3 3
2 4 0 4 4 1 4 4
2 1 1 1 1 1 1 1
3 5 8 5 5 9 5 5
2 1 1 1 1 0 1 1
3 6 9 6 6 11 6 6
4 7 10 7 7 12 7 7
2 0 0 0 0 2 0 0
2 1 2 1 1 1 1 1
3 8 14 8 8 15 8 8
3 9 15 9 9 9 9 9
4 10 16 10 10 17 10 10
2 0 1 0 0 0 0 0
3 11 9 11 11 19 11 11
4 12 17 12 12 20 12 12
5 13 18 13 13 21 13 13
2 2 2 2 2 1 2 2
3 14 14 14 14 23 14 14
2 1 1 1 1 4 1 1
3 15 23 15 15 25 15 15
4 16 24 16 16 26 16 16
3 9 25 9 9 5 9 9
4 17 26 17 17 28 17 17
5 18 27 18 18 29 18 18
3 19 5 19 19 19 19 19
4 20 28 20 20 31 20 20
5 21 29 21 21 32 21 21
6 22 30 22 22 33 22 22
3 23 23 23 23 11 23 23
4 24 24 24 24 35 24 24
2 4 0 4 4 4 4 4
3 25 11 25 25 37 25 25
4 26 35 26 26 38 26 26
5 27 36 27 27 39 27 27
3 5 37 5 5 5 5 5
4 28 38 28 28 41 28 28
5 29 39 29 29 42 29 29
6 30 40 30 30 43 30 30
4 31 41 31 31 31 31 31
5 32 42 32 32 45 32 32
6 33 43 33 33 46 33 33
7 34 44 34 34 47 34 34
2 0 0 0 0 0 0 0
3 11 11 11 11 49 11 11
4 35 35 35 35 50 35 35
5 36 36 36 36 51 36 36
3 37 49 37 37 37 37 37
4 38 50 38 38 53 38 38
5 39 51 39 39 54 39 39
6 40 52 40 40 55 40 40
4 41 53 41 41 41 41 41
5 42 54 42 42 57 42 42
6 43 55 43 43 58 43 43
7 44 56 44 44 59 44 44
5 45 57 45 45 45 45 45
6 46 58 46 46 61 46 46
7 47 59 47 47 62 47 47
8 48 60 48 48 63 48 48
3 49 49 49 49 49 49 49
4 50 50 50 50 65 50 50
5 51 51 51 51 66 51 51
6 52 52 52 52 67 52 52
4 53 65 53 53 53 53 53
5 54 66 54 54 69 54 54
6 55 67 55 55 70 55 55
7 56 68 56 56 71 56 56
5 57 69 57 57 57 57 57
6 58 70 58 58 73 58 58
7 59 71 59 59 74 59 59
8 60 72 60 60 75 60 60
6 61 73 61 61 61 61 61
7 62 74 62 62 77 62 62
8 63 75 63 63 78 63 63
9 64 76 64 64 79 64 64

@COLORS

0 0 0 0
1 255 255 0
2 127 127 0
3 102 32 0
4 255 255 255
5 136 136 136
6 34 34 34