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}}== |