Keywords: CARuleComparison18-18R.png Evolution of elementary CA rule 18 and its second order counterpart from the same initial state Time runs downwards Note the up/down asymmetric triangles formed by the nonreversible rule 2006-03-20 own assumed Maksim Perl script This image was generated by combining two PBM images generated by the following Perl script which is released into the public domain under the same terms as the image itself The script if saved as capbm pl may be invoked as <tt>perl capbm pl ruleR width height line1 line0 >output pbm</tt> where rule is the Wolfram code for the rule with R appended for second-order rules width and height are the dimension of the output image in pixels/cells line1 is the starting configuration as a string of zeros and ones padded by zeros on both sides if necessary default 1 line0 is the previous generation for second-order rules in the same format as line1 default output pbm is the name of the image to create and square brackets denote optional parameters <source lang perl > /usr/bin/perl -w use strict; my rule shift 110; rule ~ / \d+ R /i and 1 < 256 or die Invalid rule ' rule'\n ; rule 1; my r 2; my map; map unpack B3 pack C _ << 5 rule >> _ 1 for 0 7; my w shift 200; my h shift w; w ~ /\D/ and die Invalid width ' w'\n ; h ~ /\D/ and die Invalid heigth ' h'\n ; my pat1 shift 1 ; pat1 ~ / 01/ and die Invalid pattern ' pat1'\n ; length pat1 > w and die Pattern too long \n ; my pat2 shift ; pat2 ~ / 01/ and die Invalid pattern 2 ' pat2'\n ; length pat2 > w and die Pattern 2 too long \n ; my buf1 my buf2 0 x w; substr buf1 w-length pat1 /2 length pat1 pat1 ; substr buf2 w-length pat2 /2 length pat2 pat2 ; print P1 w h\n ; h-- print buf2 \n if r and h; while h-- print buf1 \n ; unless r substr buf2 0 1 map substr buf1 -1 substr buf1 0 2 ; substr buf2 _ 1 map substr buf1 _-1 3 for 1 w-2; substr buf2 -1 1 map substr buf1 -2 substr buf1 0 1 ; else substr buf2 0 1 map substr buf1 -1 substr buf1 0 2 ; substr buf2 _ 1 map substr buf1 _-1 3 for 1 w-2; substr buf2 -1 1 map substr buf1 -2 substr buf1 0 1 ; last unless h--; print buf2 \n ; unless r substr buf1 0 1 map substr buf2 -1 substr buf2 0 2 ; substr buf1 _ 1 map substr buf2 _-1 3 for 1 w-2; substr buf1 -1 1 map substr buf2 -2 substr buf2 0 1 ; else substr buf1 0 1 map substr buf2 -1 substr buf2 0 2 ; substr buf1 _ 1 map substr buf2 _-1 3 for 1 w-2; substr buf1 -1 1 map substr buf2 -2 substr buf2 0 1 ; __END__ </source> Original file history on the English Wikipedia 19 53 29 August 2005 Ilmari Karonen Talk 200x100 5166 bytes Evolution of elementary CA rule 18 and its second order counterpart from the same initial state Time runs downwards Note the up/down asymmetric triangles formed by the nonreversible rule <nowiki> </nowiki>PD- Cellular automata rules Images with Perl source code |