<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CodeDump &#187; processing</title>
	<atom:link href="http://codedump.tsdme.nl/category/processing/feed" rel="self" type="application/rss+xml" />
	<link>http://codedump.tsdme.nl</link>
	<description>A little blog where I write about my experiences while coding.</description>
	<lastBuildDate>Fri, 08 Jan 2010 16:08:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Conway&#8217;s Game of Life</title>
		<link>http://codedump.tsdme.nl/processing/conways-game-of-life</link>
		<comments>http://codedump.tsdme.nl/processing/conways-game-of-life#comments</comments>
		<pubDate>Fri, 27 Jun 2008 22:52:23 +0000</pubDate>
		<dc:creator>Ezra</dc:creator>
				<category><![CDATA[processing]]></category>
		<category><![CDATA[javascript web processing]]></category>

		<guid isPermaLink="false">http://codedump.tsdme.nl/?p=3</guid>
		<description><![CDATA[Every time I try to learn a new programming language as a &#8216;Hello World&#8217; world program I write Conway&#8217;s Game of Life. So when John Resig created processing.js I started building again. I&#8217;m not sure why, but the program is using a LOT of cpu cycles, I tried to optimize as much as I can, [...]<p>This is a post from <a href="http://codedump.tsdme.nl" title="CodeDump">CodeDump</a><br/><br/><a href="http://codedump.tsdme.nl/processing/conways-game-of-life">Conway&#8217;s Game of Life</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Every time I try to learn a new programming language as a &#8216;Hello World&#8217; world program I write <a title="Conway's Game of Life" href="http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life" target="_blank">Conway&#8217;s Game of Life.</a></p>
<p>So when John Resig created <a title="Processing.js" href="http://ejohn.org/blog/processingjs/" target="_blank">processing.js</a> I started building again.</p>
<p>I&#8217;m not sure why, but the program is using a LOT of cpu cycles, I tried to optimize as much as I can, but i&#8217;m not sure if it worked as they were javascript optimization and I don&#8217;t know if they apply to processing too. Also I found out that some things still don&#8217;t work, most processing functions are working natively in javascript but some also don&#8217;t exist and are not put into processing.js yet. Like the function round, that like the name implies rounds the number to it&#8217;s closest integer value. I tried to submit a bug at the <a title="Processing-js at GitHub" href="http://github.com/jeresig/processing-js/" target="_blank">github page</a> for processing but there is no such thing. The way I solved my problem is by simply adding 1 to the number and using the floor function that <strong>is</strong> implemented.</p>
<p>I&#8217;ve tried numerous ways of optimizing the program and been timing everything with the awesome <a title="Firebug add-on for Firefox" href="http://getfirebug.com/" target="_blank">add-on Firebug</a>. The test results are noted in the code and if anyone knows any ways to optimize it better please let me know.</p>
<p>But let&#8217;s not ramble on too much about the code and just show it.</p>
<div class="codecolorer-container processing blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br /></div></td><td><div class="processing codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #777755;">/** A little test to see if processing.js is really that good...<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;So, not to break with tradition I wrote my usual Hello World<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - Conway's Game of Life<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - It has a couple of optimizations, namely calculating the new<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - matrix and visualizing them is done at the same time.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - The matrix consists of a ring of 'death'cells as a safe sandbox<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - to avoid memory errors<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - The 2 matrices are not copied over after calculating, but they<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - are swapped.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; Loops are run in reverse because it's faster to check a value to<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; zero than to another value (w&amp;amp;h).<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Author: Ezra Pool (ezra@tsdme.nl);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Version: 0.4<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; */</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #993300; font-weight: bold;">int</span> a,b,w,h<span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #993300; font-weight: bold;">int</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> m<span style="color: #000000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993300; font-weight: bold;">void</span> <span style="color: #996600;">setup</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; h=<span style="color: #000000;">250</span><span style="color: #000000;">;</span>w=<span style="color: #000000;">250</span><span style="color: #000000;">;</span>a=<span style="color: #000000;">0</span><span style="color: #000000;">;</span>b=<span style="color: #000000;">1</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; m = <span style="color: #996600;">new</span> <span style="color: #993300; font-weight: bold;">int</span><span style="color: #000000;">&#91;</span>2<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>w+1<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>h+1<span style="color: #000000;">&#93;</span><span style="color: #000000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">size</span><span style="color: #000000;">&#40;</span>w, h<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc0000;">frameRate</span><span style="color: #000000;">&#40;</span>5<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; spawn<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #993300; font-weight: bold;">void</span> <span style="color: #996600;">draw</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">background</span><span style="color: #000000;">&#40;</span>255<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lifedeathandshow<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #993300; font-weight: bold;">void</span> spawn<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993300; font-weight: bold;">int</span> i,j<span style="color: #000000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #777755;">/**<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; Apparantly it's faster to run a loop in reverse because checking to see<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; if a value is zero is faster than checking another value (w &amp;amp; h).<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; Testing results:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; normalloop: 148ms<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; reverseloop: 145ms<br />
//*/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">for</span><span style="color: #000000;">&#40;</span>i=<span style="color: #000000;">1</span><span style="color: #000000;">;</span>i0<span style="color: #000000;">;</span>i--<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">for</span><span style="color: #000000;">&#40;</span>j=h-<span style="color: #000000;">1</span><span style="color: #000000;">;</span>j<span style="color: #000000;">&amp;</span>gt<span style="color: #000000;">;</span><span style="color: #000000;">0</span><span style="color: #000000;">;</span>j--<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> = <span style="color: #996600;">floor</span><span style="color: #000000;">&#40;</span><span style="color: #996600;">random</span><span style="color: #000000;">&#40;</span>0,2<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993300; font-weight: bold;">void</span> lifedeathandshow<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993300; font-weight: bold;">int</span> c,i,j,n<span style="color: #000000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #777755;">/**<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; Apparantly it's faster to run a loop in reverse because checking to see<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; if a value is zero is faster than checking another value (w &amp;amp; h).<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; Testing results don't show much improvement, some rounds are faster<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; some are slower, but this is mostly due to the complexity of some of<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; the iterations. (More alive or dead cells).<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; for(i=1;i&amp;lt; 2 || n &amp;gt; 3){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m[b][i][j] = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else{<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m[b][i][j] = m[a][i][j];<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; point(i,j);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else{<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(n == 3){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m[b][i][j] = 1;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; point(i,j);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else{<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m[b][i][j] = m[a][i][j];<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; //*/</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">for</span><span style="color: #000000;">&#40;</span>i=w-<span style="color: #000000;">1</span><span style="color: #000000;">;</span>i<span style="color: #000000;">&amp;</span>gt<span style="color: #000000;">;</span><span style="color: #000000;">0</span><span style="color: #000000;">;</span>i--<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">for</span><span style="color: #000000;">&#40;</span>j=h-<span style="color: #000000;">1</span><span style="color: #000000;">;</span>j<span style="color: #000000;">&amp;</span>gt<span style="color: #000000;">;</span><span style="color: #000000;">0</span><span style="color: #000000;">;</span>j--<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; n = neighbours<span style="color: #000000;">&#40;</span>i,j<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">if</span><span style="color: #000000;">&#40;</span>m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> == 1<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">if</span><span style="color: #000000;">&#40;</span>n <span style="color: #000000;">&amp;</span>lt<span style="color: #000000;">;</span> 2 || n <span style="color: #000000;">&amp;</span>gt<span style="color: #000000;">;</span> 3<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>b<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> = <span style="color: #000000;">0</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><span style="color: #996600;">else</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>b<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> = m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">point</span><span style="color: #000000;">&#40;</span>i,j<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><span style="color: #996600;">else</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">if</span><span style="color: #000000;">&#40;</span>n == 3<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>b<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> = <span style="color: #000000;">1</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">point</span><span style="color: #000000;">&#40;</span>i,j<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><span style="color: #996600;">else</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>b<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> = m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #777755;">/** I don't know which of the two versions is faster in javascript/processing...<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - is the temp variable one faster or the XOR swap??<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; Testing with Firebug in Mozilla/5.0 Gecko/2008062505 GranParadiso/3.0.1pre<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; Results<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; tempvar: 171ms (10.000 iterations)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; xorswap: 203ms (10.000 iterations)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; */</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; c=b<span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; b=a<span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; a=c<span style="color: #000000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #777755;">//a ^= b;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #777755;">//b ^= a;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #777755;">//a ^= b;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #993300; font-weight: bold;">int</span> neighbours<span style="color: #000000;">&#40;</span><span style="color: #993300; font-weight: bold;">int</span> i, <span style="color: #993300; font-weight: bold;">int</span> j<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #996600;">return</span> m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i-1<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j-1<span style="color: #000000;">&#93;</span> +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j-1<span style="color: #000000;">&#93;</span> +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i+1<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j-1<span style="color: #000000;">&#93;</span> +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i-1<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i+1<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i-1<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j+1<span style="color: #000000;">&#93;</span> +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j+1<span style="color: #000000;">&#93;</span> +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m<span style="color: #000000;">&#91;</span>a<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>i+1<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j+1<span style="color: #000000;">&#93;</span><span style="color: #000000;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div></td></tr></tbody></table></div>
<p>This is a post from <a href="http://codedump.tsdme.nl" title="CodeDump">CodeDump</a><br/><br/><a href="http://codedump.tsdme.nl/processing/conways-game-of-life">Conway&#8217;s Game of Life</a></p>
]]></content:encoded>
			<wfw:commentRss>http://codedump.tsdme.nl/processing/conways-game-of-life/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
