Sorry to bump this old topic, but I haven't checked the forums in a while and forgot to turn on notifications for this thread! But I would like to respond to a few comments.
testitemqlstudop wrote: ↑June 17th, 2019, 5:29 am
Bringing timing to a rule with no timing:
<snip>
Aha, this is an unintended behavior of NTAA that I couldn't work around. In order to be timing-independent, all 2-input gates must have the inputs enter 180 degrees apart with the output in the middle. Otherwise if the center input arrives first it will be treated as a split rather than a gate, and the signal will not wait.
Sphenocorona wrote: ↑June 14th, 2019, 6:02 pm
I think the concept is good - and being able to have fully p1 logic is quite nice. However, the fact that signals take up space and cannot be cleanly (let alone selectively) deleted in-line seems like a considerable disadvantage to me - it's like the circuit has memory leaks everywhere that can't be fixed. A Y-shaped gate using diagonals which deletes both signals cleanly if they don't match (and passes them through if they do) might solve that issue in a fairly symmetric fashion, and I don't think it'd be too detrimental to wire packing.
I agree that this is the biggest problem with NTAA, and also why I do not think it is well-suited for universal construction (at least not using the Hutton32/WWEJ3 model of a single wire with signals). And the fact that a crossover jams if given an unequal number of signals on its inputs makes it very hard to build a practical computer in NTAA. I tried to build a successor with construction and a proper p1 crossover, but the number of states required for the crossover was too great and I couldn't easily repurpose them, and there were too many edge cases. Golly's ruletable format is also not very good at representing two separate behaviors overlaid. (You can try making a ruletable for two or three non-interacting layers of CGOL to see what I mean.) Eventually I gave up and decided that the only way to build an elegant p1 crossover was by (literally!) sidestepping the problem using a 3D CA, so for the last year or so I've been working on a new
CA simulator supporting 3D, which I will post on the forums once it's ready for use.
A Y-shaped gate wouldn't work without bumping the neighborhood up to Moore, by the way. _zM posted a Moore-neighborhood spinoff, LTIA (Little Time If Any) on the Discord a while ago, which might have some signal-killing features.
googoIpIex wrote: ↑May 22nd, 2020, 2:56 pm
Does NoTimeAtAll support construction?
See above.
MarkJ wrote: ↑May 22nd, 2020, 3:37 pm
No but I'm investigating an extended version
I know it's been several months, but I'm excited to see anything you've come up with!
lodyihyuaan wrote: ↑July 28th, 2020, 6:37 am
I found that the calculation of the rule is from a binary operation and a ternary operation (quaternary operation cannot be output), so we can expand the rule by changing these two operations.
I use the NTAA-B.../T... notation that similar to life-like's B.../S... to indicate these rules. Your original rules can be written as NTAA-B1/T1.
I studied rule NTAA-B01/T03, the binary operation can be considered as a NAND-gate, and the ternaryoperation can be considered as a XNOR-gate.
<snip>
Due to the characteristics of NAND-gate, it is not necessary to use “stagnant” signals to represent all gates.
Indeed, it can be generalized. I chose a one-hot gate because my top priority was easy crossovers, but XOR alone is not universal. I do like the lack of loops using NAND though. Cool!
lodyihyuaan wrote: ↑July 28th, 2020, 6:42 am
I made icons for this rule. I hope you like it
<snip>
I do like it! I've actually changed the color for state #1 to `0x555566` (`85 85 102`) since posting the rule, to improve contrast against the black background. I decided that contrast between wire and background is more important than contrast between wire and tail. Also, I think I prefer a solid color behind the head, even for icons. So here's an updated RULE file, using new colors and a modification of lodyihyuaan's icons (transition table is the same):
Code: Select all
@RULE NoTimeAtAll
********************************
**** COMPILED FROM NUTSHELL ****
**** v0.5.6 ****
********************************
by HactarCE
NTAA (NoTimeAtAll) is a von-Neumann wiring rule where signals, composed of a
head (state 2 or 3) and a tail (state 4) travel along wires (state 1), similar
to WireWorld. If a signal arrives at the middle line of a T-shaped fork, it will
split; at any other fork, however, signals will freeze and wait until there is
only one open exit, and then they will combine. If there is exactly one green
signal among the inputs of a fork, the output is green; otherwise the output is
red. With two inputs, this is an XOR gate. With three inputs, this is a one-hot
gate, which is universal.
Unlike other wiring rules, such as JvN or WireWorld, only the topology of a
circuit matters in NTAA, not its proportions or exact layout.
0: blank
1: wire
2: wire 0
3: wire 1
4: tail
@COLORS
0 0 0 0
1 85 85 102
2 255 51 51
3 51 255 51
4 170 170 170
@TABLE
neighborhood: vonNeumann
symmetries: rotate4reflect
n_states: 5
var any.0 = {0,1,2,3,4}
var any.1 = any.0
var any.2 = any.0
var h.0 = {2,3}
var _a0.0 = {0}
var _b0.0 = {0,1,2,4}
var _b0.1 = _b0.0
var _c0.0 = {0,1,4}
var _c0.1 = _c0.0
var _c0.2 = _c0.0
var _c0.3 = _c0.0
var _d0.0 = {0,2,3,4}
var _d0.1 = _d0.0
var _d0.2 = _d0.0
var _d0.3 = _d0.0
1, 4, any.0, any.1, any.2, 1
1, 1, _a0.0, 1, h.0, h.0
1, 1, 1, any.0, any.1, 1
1, 1, any.0, 1, any.1, 1
1, 3, 3, any.0, any.1, 2
1, 3, any.0, 3, any.1, 2
1, 2, _b0.0, _b0.1, h.0, h.0
1, 2, _b0.0, h.0, _b0.1, h.0
1, _c0.0, _c0.1, _c0.2, h.0, h.0
h.0, _d0.0, _d0.1, _d0.2, _d0.3, 4
4, _c0.0, _c0.1, _c0.2, _c0.3, 1
@ICONS
XPM
/* width height num_colors chars_per_pixel */
"31 124 5 1"
/* colors */
"W c #555566"
"T c #999999"
"G c #009900"
"R c #990000"
". c #FFFFFF"
/* wire */
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
/* wire 0 */
"RRRRRRRRRRRR.......RRRRRRRRRRRR"
"RRRRRRRRRR...........RRRRRRRRRR"
"RRRRRRRR...............RRRRRRRR"
"RRRRRRR......RRRRR......RRRRRRR"
"RRRRRR....RRRRRRRRRRR....RRRRRR"
"RRRRR....RRRRRRRRRRRRR....RRRRR"
"RRRRR....RRRRRRRRRRRRR....RRRRR"
"RRRR....RRRRRRRRRRRRR......RRRR"
"RRRR....RRRRRRRRRRRR.......RRRR"
"RRRR....RRRRRRRRRRR........RRRR"
"RRR....RRRRRRRRRRR.....R....RRR"
"RRR....RRRRRRRRRR.....RR....RRR"
"RRR....RRRRRRRRR.....RRR....RRR"
"RRR....RRRRRRRR.....RRRR....RRR"
"RRR....RRRRRRR.....RRRRR....RRR"
"RRR....RRRRRR.....RRRRRR....RRR"
"RRR....RRRRR.....RRRRRRR....RRR"
"RRR....RRRR.....RRRRRRRR....RRR"
"RRR....RRR.....RRRRRRRRR....RRR"
"RRR....RR.....RRRRRRRRRR....RRR"
"RRR....R.....RRRRRRRRRRR....RRR"
"RRRR........RRRRRRRRRRR....RRRR"
"RRRR.......RRRRRRRRRRRR....RRRR"
"RRRR......RRRRRRRRRRRRR....RRRR"
"RRRRR....RRRRRRRRRRRRR....RRRRR"
"RRRRR....RRRRRRRRRRRRR....RRRRR"
"RRRRRR....RRRRRRRRRRR....RRRRRR"
"RRRRRRR......RRRRR......RRRRRRR"
"RRRRRRRR...............RRRRRRRR"
"RRRRRRRRRR...........RRRRRRRRRR"
"RRRRRRRRRRRR.......RRRRRRRRRRRR"
/* wire 1 */
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGG......GGGGGGGGGGGGG"
"GGGGGGGGGGG.......GGGGGGGGGGGGG"
"GGGGGGGGG.........GGGGGGGGGGGGG"
"GGGGGGG...........GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGGGGGGGG.....GGGGGGGGGGGGG"
"GGGGGGG.................GGGGGGG"
"GGGGGGG.................GGGGGGG"
"GGGGGGG.................GGGGGGG"
"GGGGGGG.................GGGGGGG"
/* tail */
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
XPM
/* width height num_colors chars_per_pixel */
"15 60 5 1"
/* colors */
"W c #555566"
"T c #999999"
"G c #009900"
"R c #990000"
". c #FFFFFF"
/* wire */
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
"WWWWWWWWWWWWWWW"
/* wire 0 */
"RRRRR.....RRRRR"
"RRRR.......RRRR"
"RRR...RRR...RRR"
"RRR..RRRRR..RRR"
"RR..RRRRR....RR"
"RR..RRRR.....RR"
"RR..RRR...R..RR"
"RR..RR...RR..RR"
"RR..R...RRR..RR"
"RR.....RRRR..RR"
"RR....RRRRR..RR"
"RRR..RRRRR..RRR"
"RRR...RRR...RRR"
"RRRR.......RRRR"
"RRRRR.....RRRRR"
/* wire 1 */
"GGGGGG...GGGGGG"
"GGGGG....GGGGGG"
"GGG......GGGGGG"
"GGGGGG...GGGGGG"
"GGGGGG...GGGGGG"
"GGGGGG...GGGGGG"
"GGGGGG...GGGGGG"
"GGGGGG...GGGGGG"
"GGGGGG...GGGGGG"
"GGGGGG...GGGGGG"
"GGGGGG...GGGGGG"
"GGGGGG...GGGGGG"
"GGGGGG...GGGGGG"
"GGG.........GGG"
"GGG.........GGG"
/* tail */
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
"TTTTTTTTTTTTTTT"
XPM
/* width height num_colors chars_per_pixel */
"7 28 5 1"
/* colors */
"W c #555566"
"T c #999999"
"G c #009900"
"R c #990000"
". c #FFFFFF"
/* wire */
"WWWWWWW"
"WWWWWWW"
"WWWWWWW"
"WWWWWWW"
"WWWWWWW"
"WWWWWWW"
"WWWWWWW"
/* wire 0 */
"RR...RR"
"R.RRR.R"
"R.RR..R"
"R.R.R.R"
"R..RR.R"
"R.RRR.R"
"RR...RR"
/* wire 1 */
"GGG.GGG"
"GG..GGG"
"GGG.GGG"
"GGG.GGG"
"GGG.GGG"
"GGG.GGG"
"GG...GG"
/* tail */
"TTTTTTT"
"TTTTTTT"
"TTTTTTT"
"TTTTTTT"
"TTTTTTT"
"TTTTTTT"
"TTTTTTT"
Although it looks a little messed up when zoomed out and I'm not sure why. :/
EDIT: Fixed, thank you lodyihyuaan!