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}}==