WireWorld has 1 type of wire, WireWorldRgb adds two more types of wire, for a total of three types: red, green and blue.

Similar to WireWorld:

- Particular combinations of neighbor heads (from the 8 possible neighbors) make a wire become head
- Heads become tails.
- Tails become wire again.

In WireWorldRgb, wires, heads and tails always remain within their color (green head becomes green tail, etc...).

The rules to become head are:

- Red wire becomes red head if it touches either 1 or 2 red heads, or 1 or 2 blue heads, and ignores green heads.
- Green wire becomes green head if it touches either exactly 1 green head, or exactly 1 red head, and ignores blue heads.
- Blue wire becomes blue head if it touches either exactly 2 blue heads, or exactly 1 green head, and ignores red heads.

With these rules, red behaves like original WireWorld, and since the numerical values of those cell types match, regular WireWorld maps can be loaded into WireWorldRgb. Each color ignores one other color, so in WireWorldRgb, signals can stay within their color or flow through different colors in the cycle red->green->blue->red->... but not in the opposite direction, like diodes.

New thanks to these rules is the ability to create more compact logic gates, and have everything (logic gates, wire crossings, RS latches, half adders, full adders, ...) work with 3-cycle logic, the shortest possible since a signal takes at least 3 cells (head, tail, wire). In addition, each of those introduces zero delay compared to signal going through straight wire.

To make compact fast logic gates, OR can be made with 2 blues to red, AND can be made with 2 blues to blue, ANDNOT can be made with a blue and green to blue, XOR can be made either with 2 reds to green, or with 2 greens to blue, NOT can be made with a 3-cycle "rgb" clock on 1 input of a XOR.

The small wire crossing can be made like this:

g "X->" rrrr brrrr "->Y" g "Y->" rrrr brrrr "->X" g

The small half adder can be made like this (c = carry, s = sum):

rg "a->" rrrrr brrrr "->c" gb "b->" rrrrr rrrrr "->s"

A 3-cycle serial (infinitely streaming) full adder, RS latch based, can be made like this (the capital S is a red tail, the capital G a green head, those are part of a NOT gate clock):

rrr r rg r b brrrrrr rrrrrr rrr SG g gb r b g rrrrrr br rrg bg rg r r r rrgb r

To run in Golly, which is a great cellular automaton simulation program that includes WireWorld as well, download the files below, place WireWorldRgb.rule in the Rules directory, and the mc file in the Patterns directory.

The full specification can be found in the comments in WireWorldRgb.rule. The map wireworldrgb.mc shows how to make logic gates, streaming adders, wire crossings and flip flops.

Screenshot:

The WireWorldRgb above is not very symmetrical, red, green and blue act in very different ways, only red acts like original wireworld.

WireWorldRYGB has one more color, 4 in total, but is more symmetrical. Within the same pure wire color, each wire color works like standard wireworld. Between different colors, red to yellow acts like or, yellow to green acts like xor, green to blue acts like or, blue to red acts like xor. In the other direction, yellow to red acts like and, red to blue only suppresses, blue to green acts like and, green to yellow only suppresses. Mixed color heads suppress, except pure red and pure green ignore each other, and pure yellow and pure blue ignore each other. Here acting like or means 1 or 2 heads, acting like xor means 1 head only, acting like and means 2 heads only. The exact rules are:

- A head becomes tail of its color.
- A tail becomes wire of its color.
- red wire becomes head if it touches 1 to 2 red and 0 to 7 green heads, or it touches 1 blue head, or it touches 2 yellow heads (and no other heads)
- yellow wire becomes head if it touches 1 to 2 yellow and 0 to 7 blue heads, or it touches 1 or 2 red heads (and no other heads)
- green wire becomes head if it touches 1 to 2 green and 0 to 7 red heads, or it touches 1 red head, or it touches 2 blue heads (and no other heads)
- blue wire becomes head if it touches 1 to 2 blue and 0 to 7 yellow heads, or it touches 1 or 2 blue heads (and no other heads)

A whole circuit could have all red and green swapped, and all blue and yellow swapped, and it'd behave the same as before.

Just like WireWorldRgb, it allows to create 3-cycle logic. 3-cycle serial adder has the same size and shape as the one from WireWorldRgb. It allows very similar circuits with very similar size, plus in addition there's a convenient way to cross many wires thanks to green/red ignoring each other, or yellow/blue ignoring each other (so long as no other colors are mixed at least). See the attached Golly pattern or its screenshot for that.

Screenshot:

Here's another WireWorld variant (non-RGB): standard wireworld, but with von Neumann neighborhood instead of Moore neighborhood (4 instead of 8 neighbors). This one works very similar to standard WireWorld, but everything is larger:

Screenshot:

Copyright (c) 2017-2020 by Lode Vandevenne. All rights reserved.