One-dimensional cellular automata: Difference between revisions

Content added Content deleted
(+ second D version)
Line 921: Line 921:
___##_________________
___##_________________
___##_________________</pre>
___##_________________</pre>

===Alternative Version===
{{trans|Perl 6}}
<lang d>import std.stdio, std.algorithm, std.array, std.range;

T[] rot(T)(T[] a, in int n) pure nothrow {
return (n < 0) ? a[$ + n .. $] ~ a[0 .. $ + n] :
a[n .. $] ~ a[0 .. n];
}

void main() {
auto A = "_###_##_#_#_#_#__#__".map!q{a == '#'}.array;
auto B = A.dup;

do {
A.map!q{ "_#"[a] }.writeln;
//zip(A, A.rot(1), A.rot(-1)).map!(t=> [t[]].sum == 2).copy(B);
zip(A, A.rot(1), A.rot(-1)).map!q{a[0]+a[1]+a[2] == 2}.copy(B);
swap(A, B);
} while (A != B);
}</lang>
{{out}}
<pre>_###_##_#_#_#_#__#__
_#_#####_#_#_#______
__##___##_#_#_______
__##___###_#________
__##___#_##_________
__##____###_________
__##____#_#_________
__##_____#__________
__##________________</pre>


=={{header|DWScript}}==
=={{header|DWScript}}==