Elementary cellular automaton: Difference between revisions
Content added Content deleted
(→{{header|Python}}: Note which no longer fit the task description and why.) |
(C++) |
||
Line 60: | Line 60: | ||
---(output snipped)--- |
---(output snipped)--- |
||
</pre> |
</pre> |
||
=={{header|C++}}== |
|||
<lang cpp>#include <bitset> |
|||
#include <stdio.h> |
|||
#define SIZE 80 |
|||
#define RULE 30 |
|||
#define RULE_TEST(x) (RULE & 1 << (7 & (x))) |
|||
void evolve(std::bitset<SIZE> &s) { |
|||
int i; |
|||
std::bitset<SIZE> t(0); |
|||
t[SIZE-1] = RULE_TEST( s[0] << 2 | s[SIZE-1] << 1 | s[SIZE-2] ); |
|||
t[ 0] = RULE_TEST( s[1] << 2 | s[ 0] << 1 | s[SIZE-1] ); |
|||
for (i = 1; i < SIZE-1; i++) |
|||
t[i] = RULE_TEST( s[i+1] << 2 | s[i] << 1 | s[i-1] ); |
|||
for (i = 0; i < SIZE; i++) s[i] = t[i]; |
|||
} |
|||
void show(std::bitset<SIZE> s) { |
|||
int i; |
|||
for (i = SIZE; --i; ) printf("%c", s[i] ? '#' : ' '); |
|||
printf("\n"); |
|||
} |
|||
int main() { |
|||
int i; |
|||
std::bitset<SIZE> state(1); |
|||
state <<= SIZE / 2; |
|||
for (i=0; i<10; i++) { |
|||
show(state); |
|||
evolve(state); |
|||
} |
|||
return 0; |
|||
}</lang> |
|||
{{out}} |
|||
<pre> # | |
|||
### | |
|||
## # | |
|||
## #### | |
|||
## # # | |
|||
## #### ### | |
|||
## # # # | |
|||
## #### ###### | |
|||
## # ### # | |
|||
## #### ## # ### |</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |