Recent discussion of Pascal's triangle reminded me
of a cool 1-D Cellular Automata and Wolfram's famous
Rule 30.
Try $rule = 18, 22, 30, 45, 54, 110, or 150 for some snazzy
Pascal's Triangle variations.
RuleFoo
update: Also rules 122, 126, 129, 146, 151
#!/usr/bin/perl
use strict;
my $rule = shift || 30;
my $wide = shift || 80;
my $high = shift || 60;
my $binary = reverse(substr(sprintf("%8.8b", $rule), -8, 8));
$binary =~ tr/01/ */;
#print "$binary\n";
my (%rules, $key, $i);
for ($i = 7; $i >= 0; $i--) {
$key = sprintf("%3.3b", $i);
$key =~ tr/01/ */;
$rules{$key} = substr($binary, $i, 1);
#print "$key $rules{$key}\n";
}
my ($str, @chs);
for (1..$wide) {
if (rand(2) < 1) { $str .= ' '; }
else { $str .= '*'; }
}
for (1..$high) {
@chs = split('', $str);
print "$str\n";
$str = '';
for ($i = 0; $i < $wide; $i++) {
$key = "$chs[$i-1]$chs[$i]$chs[($i+1)%@chs]";
$str .= $rules{$key};
}
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.