Cellular automaton again

As we were doing some logic during the last few lectures (see the post about reasoner), I decided that I wanted to do something usefull with this highly interessting stuff. So as I already had an engine to evaluate propositional logic expressions it was an easy thing to accomplish the following idea:
Consider the following matrix constituting our “world” and initial population:

    \[F = \begin{pmatrix} c_{11} & \dots & c_{1j} \\ \vdots & \ddots & \vdots \\ c_{n0} & \dots & c_{nn} \end{pmatrix}\]


    \[c_{ij} \in \{0,1\}\]


    \[i,j \in [1,n]\]

To compute a new “generation” the aliveness (1 being alive, 0 dead) of each element is determined by evaluating a certain propsitional expression:

    \[c_{ij,\mbox{new}} = E(\beta)\]



being the valuation of the proposition and


being the proposition itself.

    \[\beta \rightarrow \{\top,\bot\}\]

    \[\beta(a) \mapsto c_{ij} = 1\]

    \[\beta(a_n) \mapsto f(i, j) = n\]


    \[f(u, v) = \sum^{u + 1}_{u - 1}\sum^{v + 1}_{v - 1}c_{uv} - c_{ij}\]

Have a look at the screenshot to get a better idea on what the program is doing or run it using Java webstart below (may not work on MacOSX or Windows).

Launch using webstart

Yet another game of life

I’ve always wanted to do something with Java and 3D. Therefore a few years ago, I bought myself a book called “Killer Game Programming in Java“, but honestly only came to like the fifth page. Doing OpenGL or similiar just sucks when don’t even know what a (spatial) vector or matrix is.

A few years later and another year of school later, I do know what those stuff is. And I’m not going to mess around with Java3D anymore. This time it’s the Java Monkey Engine. And just to get my hands on this thing I wrote a small Game of Life implementation. Nothing fancy, and actually it’s just a few GOLs stacked up to become a cube. But nice anyway.

You wanna see this thing? Click here then and hope you’ve got Java WebStart at your fingertips.

Ahh, I forgot the keybindings:

ESC Exit
G Add a glider
R Add some random population
C Clear the population (like kill everyone)
RETURN Let there be evolution

The screenshot is not as much fun as the real “product” is, as you can’t see things evolving.

Fork me on GitHub