123456789101112131415161718192021222324252627282930313233343536 |
- #!/usr/bin/ruby
- class Automaton(rule, cells) {
- method init {
- rule = sprintf("%08b", rule).split(1).map{.to_i}.reverse;
- }
- method next {
- var previous = cells.map{_};
- var len = previous.len;
- cells[] = rule[
- previous.range.map { |i|
- 4*previous[i-1 % len] +
- 2*previous[i] +
- previous[i+1 % len]
- }
- ]
- }
- method to_s {
- cells.map { _ ? '#' : ' ' }.join('')
- }
- }
- var size = 20;
- var arr = size.of(0);
- arr[size/2] = 1;
- var auto = Automaton(90, arr);
- (size/2).times {
- print "|#{auto}|\n";
- auto.next;
- };
|