represented by the bits within one (or more) computer words. Here shown in C++: #include <stdint.h> #include <iostream> int main() { uint64_t state = 1u << 31; for (int i = 0; i < 32; ++i) { for (int j = 64; j--;) { std::cout << char(state >> j & 1 ? 'O' : '.'); } std::cout << '\n'; state = (state >> 1) ^ (state | state << 1); } } This program produces the following output: ................................O............................... ...............................OOO.............................. ..............................OO..O............................. .............................OO.OOOO............................ ............................OO..O...O........................... ...........................OO.OOOO.OOO.......................... ..........................OO..O....O..O......................... .........................OO.OOOO..OOOOOO........................ ........................OO..O...OOO.....O....................... .......................OO.OOOO.OO..O...OOO...................... ......................OO..O....O.OOOO.OO..O..................... .....................OO.OOOO..OO.O....O.OOOO.................... ....................OO..O...OOO..OO..OO.O...O................... ...................OO.OOOO.OO..OOO.OOO..OO.OOO.................. ..................OO..O....O.OOO...O..OOO..O..O................. .................OO.OOOO..OO.O..O.OOOOO..OOOOOOO................ ................OO..O...OOO..OOOO.O....OOO......O............... ...............OO.OOOO.OO..OOO....OO..OO..O....OOO.............. ..............OO..O....O.OOO..O..OO.OOO.OOOO..OO..O............. .............OO.OOOO..OO.O..OOOOOO..O...O...OOO.OOOO............ ............OO..O...OOO..OOOO.....OOOO.OOO.OO...O...O........... ...........OO.OOOO.OO..OOO...O...OO....O...O.O.OOO.OOO.......... ..........OO..O....O.OOO..O.OOO.OO.O..OOO.OO.O.O...O..O......... .........OO.OOOO..OO.O..OOO.O...O..OOOO...O..O.OO.OOOOOO........ ........OO..O...OOO..OOOO...OO.OOOOO...O.OOOOO.O..O.....O....... .......OO.OOOO.OO..OOO...O.OO..O....O.OO.O.....OOOOO...OOO...... ......OO..O....O.OOO..O.OO.O.OOOO..OO.O..OO...OO....O.OO..O..... .....OO.OOOO..OO.O..OOO.O..O.O...OOO..OOOO.O.OO.O..OO.O.OOOO.... ....OO..O...OOO..OOOO...OOOO.OO.OO..OOO....O.O..OOOO..O.O...O... ...OO.OOOO.OO..OOO...O.OO....O..O.OOO..O..OO.OOOO...OOO.OO.OOO.. ..OO..O....O.OOO..O.OO.O.O..OOOOO.O..OOOOOO..O...O.OO...O..O..O. .OO.OOOO..OO.O..OOO.O..O.OOOO.....OOOO.....OOOO.OO.O.O.OOOOOOOOO See also Rule 90 Rule 110 Rule 184 References Wolfram, Stephen, 1985, Cryptography with Cellular Automata, CRYPTO'85. External links Rule 30 in Wolfram's atlas of cellular automata Rule 30: Wolfram's Pseudo-random Bit Generator. Recipe 32 at David Griffeath's Primordial Soup Kitchen. Repeating Rule 30 patterns. A list of patterns that, when repeated to fill the cells of a Rule 30 automaton, repeat themselves after finitely many time steps. Frans Faase, 2003. Archived from the Original on 2013-08-08 Paving Mosaic Fractal. Basic introduction to the pattern of Rule 30 from the perspective of a LOGO software expert Olivier Schmidt-Chevalier. TED Talk from February 2010. Stephen Wolfram speaks about computing a theory of everything where he talks about rule 30 among other things. Cellular automaton rules 1983 introductions Wolfram code