1Math::PlanePath::CellulUasreRrulCeo1n9t0r(i3b)uted PerlMDaotchu:m:ePnltaanteiPoanth::CellularRule190(3)
2
3
4

NAME

6       Math::PlanePath::CellularRule190 -- cellular automaton 190 and 246
7       points
8

SYNOPSIS

10        use Math::PlanePath::CellularRule190;
11        my $path = Math::PlanePath::CellularRule190->new;
12        my ($x, $y) = $path->n_to_xy (123);
13

DESCRIPTION

15       This is the pattern of Stephen Wolfram's "rule 190" cellular automaton
16
17           <http://mathworld.wolfram.com/Rule190.html>
18
19       arranged as rows,
20
21           66 67 68    69 70 71    72 73 74    75 76 77    78 79 80      9
22              53 54 55    56 57 58    59 60 61    62 63 64    65         8
23                 41 42 43    44 45 46    47 48 49    50 51 52            7
24                    31 32 33    34 35 36    37 38 39    40               6
25                       22 23 24    25 26 27    28 29 30                  5
26                          15 16 17    18 19 20    21                     4
27                              9 10 11    12 13 14                        3
28                                 5  6  7     8                           2
29                                    2  3  4                              1
30                                       1                             <- Y=0
31
32           -9 -8 -7 -6 -5 -4 -3 -2 -1 X=0 1  2  3  4  5  6  7  8  9
33
34       Each row is 3 out of 4 cells.  Even numbered rows have one point on its
35       own at the end.  Each two-row group has a step of 6 more points than
36       the previous two-row.
37
38       The of rightmost N=1,4,8,14,21,etc are triangular plus quarter square,
39       ie.
40
41           Nright = triangular(Y+1) + quartersquare(Y+1)
42             triangular(t)    = t*(t+1)/2
43             quartersquare(t) = floor(t^2/4)
44
45       The rightmost N=1,8,21,40,65,etc on even rows Y=0,2,4,6,etc are the
46       octagonal numbers k*(3k-2).  The octagonal numbers of the "second kind"
47       N=5,16,33,56,85, etc, k*(3k+2) are a straight-ish line upwards to the
48       left.
49
50   Mirror
51       The "mirror => 1" option gives the mirror image pattern which is "rule
52       246".  It differs only in the placement of the gaps on the even rows.
53       The point on its own is at the left instead of the right.  The
54       numbering is still left to right.
55
56           66 67 68    69 70 71    72 73 74    75 76 77    78 79 80      9
57              53    54 55 56    57 58 59    60 61 62    63 64 65         8
58                 41 42 43    44 45 46    47 48 49    50 51 52            7
59                    31    32 33 34    35 36 37    38 39 40               6
60                       22 23 24    25 26 27    28 29 30                  5
61                          15    16 17 18    19 20 21                     4
62                              9 10 11    12 13 14                        3
63                                 5     6  7  8                           2
64                                    2  3  4                              1
65                                       1                             <- Y=0
66
67           -9 -8 -7 -6 -5 -4 -3 -2 -1 X=0 1  2  3  4  5  6  7  8  9
68
69       Sometimes this small change to the pattern helps things line up better.
70       For example plotting the Klaner-Rado sequence gives some unplotted
71       lines up towards the right in the mirror 246 which are not visible in
72       the plain 190.
73
74   Row Ranges
75       The left end of each row, both ordinary and mirrored, is
76
77           Nleft = ((3Y+2)*Y + 4)/4     if Y even
78                   ((3Y+2)*Y + 3)/4     if Y odd
79
80       The right end is
81
82           Nright = ((3Y+8)*Y + 4)/4    if Y even
83                    ((3Y+8)*Y + 5)/4    if Y odd
84
85                  = Nleft(Y+1) - 1   ie. 1 before next Nleft
86
87       The row width Xmax-Xmin = 2*Y but with the gaps the number of visited
88       points in a row is less than that,
89
90           rowpoints = 3*Y/2 + 1        if Y even
91                       3*(Y+1)/2        if Y odd
92
93       For any Y of course the Nleft to Nright difference is the number of
94       points in the row too
95
96           rowpoints = Nright - Nleft + 1
97
98   N Start
99       The default is to number points starting N=1 as shown above.  An
100       optional "n_start" can give a different start, in the same pattern.
101       For example to start at 0,
102
103           n_start => 0
104
105           21 22 23    24 25 26    27 28 29          5
106              14 15 16    17 18 19    20             4
107                  8  9 10    11 12 13                3
108                     4  5  6     7                   2
109                        1  2  3                      1
110                           0                     <- Y=0
111
112           -5 -4 -3 -2 -1 X=0 1  2  3  4  5
113
114       The effect is to push each N rightwards by 1, and wrapping around.  So
115       the N=0,1,4,8,14,etc on the left were on the right of the default
116       n_start=1.  This also has the effect of removing the +1 in the Nright
117       formula given above, so
118
119           Nleft = triangular(Y) + quartersquare(Y)
120

FUNCTIONS

122       See "FUNCTIONS" in Math::PlanePath for behaviour common to all path
123       classes.
124
125       "$path = Math::PlanePath::CellularRule190->new ()"
126       "$path = Math::PlanePath::CellularRule190->new (mirror => 1, n_start =>
127       $n)"
128           Create and return a new path object.
129
130       "($x,$y) = $path->n_to_xy ($n)"
131           Return the X,Y coordinates of point number $n on the path.
132
133       "$n = $path->xy_to_n ($x,$y)"
134           Return the point number for coordinates "$x,$y".  $x and $y are
135           each rounded to the nearest integer, which has the effect of
136           treating each cell as a square of side 1.  If "$x,$y" is outside
137           the pyramid or on a skipped cell the return is "undef".
138
139       "($n_lo, $n_hi) = $path->rect_to_n_range ($x1,$y1, $x2,$y2)"
140           The returned range is exact, meaning $n_lo and $n_hi are the
141           smallest and biggest in the rectangle.
142

OEIS

144       This pattern is in Sloane's Online Encyclopedia of Integer Sequences in
145       a couple of forms,
146
147           <http://oeis.org/A037576> (etc)
148
149           A037576     whole-row used cells as bits of a bignum
150           A265688       and in binary
151           A071039     1/0 used and unused cells across rows
152           A118111       same
153           A071041     1/0 used and unused of mirrored rule 246
154
155           n_start=0
156             A006578   N at left of each row (X=-Y),
157                         and at right of each row when mirrored,
158                         being triangular+quartersquare
159

SEE ALSO

161       Math::PlanePath, Math::PlanePath::CellularRule,
162       Math::PlanePath::CellularRule54, Math::PlanePath::CellularRule57,
163       Math::PlanePath::PyramidRows
164
165       Cellular::Automata::Wolfram
166
167       <http://mathworld.wolfram.com/Rule190.html>
168

HOME PAGE

170       <http://user42.tuxfamily.org/math-planepath/index.html>
171

LICENSE

173       Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020
174       Kevin Ryde
175
176       This file is part of Math-PlanePath.
177
178       Math-PlanePath is free software; you can redistribute it and/or modify
179       it under the terms of the GNU General Public License as published by
180       the Free Software Foundation; either version 3, or (at your option) any
181       later version.
182
183       Math-PlanePath is distributed in the hope that it will be useful, but
184       WITHOUT ANY WARRANTY; without even the implied warranty of
185       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
186       General Public License for more details.
187
188       You should have received a copy of the GNU General Public License along
189       with Math-PlanePath.  If not, see <http://www.gnu.org/licenses/>.
190
191
192
193perl v5.38.0                      2023-07-20Math::PlanePath::CellularRule190(3)
Impressum