Elementary cellular automaton: Difference between revisions
Content added Content deleted
m (J: show a bit more) |
m (→{{header|Sidef}}: modified the code to work with Sidef 2.30) |
||
Line 1,503: | Line 1,503: | ||
method init { |
method init { |
||
rule = sprintf("%08b", rule). |
rule = sprintf("%08b", rule).chars.map{.to_i}.reverse |
||
} |
} |
||
method next { |
method next { |
||
var previous = cells.map{_} |
var previous = cells.map{_} |
||
var len = previous.len |
var len = previous.len |
||
cells = |
cells[] = rule[ |
||
previous.range.map { |i| |
previous.range.map { |i| |
||
4*previous[i-1 % len] + |
4*previous[i-1 % len] + |
||
Line 1,515: | Line 1,515: | ||
previous[i+1 % len] |
previous[i+1 % len] |
||
} |
} |
||
] |
] |
||
} |
} |
||
method to_s { |
method to_s { |
||
cells.map { _ ? '#' : ' ' }.join |
cells.map { _ ? '#' : ' ' }.join |
||
} |
} |
||
} |
} |
||
var size = 20 |
var size = 20 |
||
var arr = size.of(0) |
var arr = size.of(0) |
||
arr[size/2] = 1 |
arr[size/2] = 1 |
||
var auto = Automaton(90, arr) |
var auto = Automaton(90, arr) |
||
(size/2).times { |
(size/2).times { |
||
print "|#{auto}|\n" |
print "|#{auto}|\n" |
||
auto.next |
auto.next |
||
}</lang> |
}</lang> |
||
{{out}} |
{{out}} |