32 lines
640 B
Plaintext
32 lines
640 B
Plaintext
ClearAll[KolakoskiGen]
|
|
KolakoskiGen[start_List, its_Integer] := Module[{c, s, k, cnext, sk},
|
|
s = {};
|
|
k = 1;
|
|
c = start;
|
|
Do[
|
|
cnext = First[c];
|
|
c = RotateLeft[c];
|
|
AppendTo[s, cnext];
|
|
sk = s[[k]];
|
|
If[sk > 1,
|
|
s = Join[s, ConstantArray[cnext, sk - 1]]
|
|
];
|
|
k += 1;
|
|
,
|
|
{its}
|
|
];
|
|
s
|
|
]
|
|
|
|
run = Take[KolakoskiGen[{1, 2}, 20], 20]
|
|
check = Length /@ Split[%];
|
|
check === Take[run, Length[check]]
|
|
|
|
run = Take[KolakoskiGen[{2, 1}, 20], 20]
|
|
check = Length /@ Split[%];
|
|
check === Take[run, Length[check]]
|
|
|
|
run = Take[KolakoskiGen[{1, 3, 1, 2}, 30], 30]
|
|
check = Length /@ Split[%];
|
|
check === Take[run, Length[check]]
|