I’d like to claim this is “one line of C”, but actually it’s 98 characters, which is more than a regulation 80-character punched card.
char*s;main(int c,char**v){for(;;)for(s=v[1],puts(s),c=0;s[2];*s++=".##.###."[c&7],c=s[1]&1|c*2);} It computes successive states of rule 110; it works like this: : kra...@inexorable:~/devel/inexorable-misc ; ./rule110 ................................##........................... | head -20 ................................##........................... ...............................#.##.......................... ..............................###.##......................... .............................#..##.##........................ ............................####.##.##....................... ...........................#...##.##.##...................... ..........................###.#.##.##.##..................... .........................#..####.##.##.##.................... ........................####...##.##.##.##................... .......................#...##.#.##.##.##.##.................. ......................###.#.####.##.##.##.##................. .....................#..####...##.##.##.##.##................ ....................####...##.#.##.##.##.##.##............... ...................#...##.#.####.##.##.##.##.##.............. ..................###.#.####...##.##.##.##.##.##............. .................#..####...##.#.##.##.##.##.##.##............ ................####...##.#.####.##.##.##.##.##.##........... ...............#...##.#.####...##.##.##.##.##.##.##.......... ..............###.#.####...##.#.##.##.##.##.##.##.##......... .............#..####...##.#.####.##.##.##.##.##.##.##........ If you try to run it without a command-line argument, it will crash. As you can probably guess, both the state transition function and the graphical output are encoded in the `".##.###."` string. If you replace it with `v[2]`, then you can supply your own state transition function. If you decide to use other characters for the display, make sure that their low-order bits are different. This software is available via git clone http://canonical.org/~kragen/sw/inexorable-misc.git (or in <http://canonical.org/~kragen/sw/inexorable-misc>) in the file `rule110.c`. Like everything else posted to kragen-hacks without a notice to the contrary, this software is in the public domain. -- To unsubscribe: http://lists.canonical.org/mailman/listinfo/kragen-hacks