<?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>Dave&#039;s Programming Blog &#187; Projects</title>
	<atom:link href="http://dev.mcleish.id.au/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://dev.mcleish.id.au</link>
	<description>The Church of Alan Turing of Latter-Day Sorcerers</description>
	<lastBuildDate>Wed, 09 Feb 2011 12:09:59 +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>Sudoku speedup</title>
		<link>http://dev.mcleish.id.au/2010/11/sudoku-speedup/</link>
		<comments>http://dev.mcleish.id.au/2010/11/sudoku-speedup/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 02:24:13 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://dev.mcleish.id.au/?p=198</guid>
		<description><![CDATA[Previous version: 10 hours. With the latest improvement: 33 seconds. 1 &#160; &#160; &#160; &#160; 9 &#160; 15 5 12 &#160; 3 &#160; &#160; &#160; &#160; &#160; &#160; 2 &#160; 3 &#160; &#160; 7 &#160; 1 &#160; &#160; 10 &#160; 13 &#160; &#160; &#160; 13 7 &#160; &#160; &#160; &#160; &#160; 14 11 &#160; 9 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dev.mcleish.id.au/2010/11/4x4-sudoku/">Previous version</a>: 10 hours.</p>
<p>With the <a href="http://hg.mcleish.id.au/sudoku-java/rev/1bea104dd817">latest improvement</a>: 33 seconds.</p>
<table cellspacing="0" cellpadding="0" style="border: solid 2px #000000; font-size: 16px;">
<tr style="height: 24px;">
<td style="width: 24px; text-align: center; border-left: none; border-top: none;">1</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 2px #000000; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">9</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">15</td>
<td style="width: 24px; text-align: center; border-left: solid 2px #000000; border-top: none;">5</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">12</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">3</td>
<td style="width: 24px; text-align: center; border-left: solid 2px #000000; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">3</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">7</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">1</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">10</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">7</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">14</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">11</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">9</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">16</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">12</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">8</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">7</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">3</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 2px #000000;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">11</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">10</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">3</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">14</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">4</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">7</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">12</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">14</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">5</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">15</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">9</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">7</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">4</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">6</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">12</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">16</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">4</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">6</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">11</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">10</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 2px #000000;">15</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">14</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">8</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">9</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">16</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">2</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">12</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">7</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">1</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">5</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">6</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">15</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">10</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">9</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">11</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">8</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">14</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">4</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">16</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">16</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">9</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">14</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">10</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">5</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">6</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">5</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">8</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">12</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">15</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">5</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">1</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">11</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">8</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">1</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">3</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">15</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">9</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">15</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">11</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">7</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">5</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://dev.mcleish.id.au/2010/11/sudoku-speedup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4&#215;4 Sudoku</title>
		<link>http://dev.mcleish.id.au/2010/11/4x4-sudoku/</link>
		<comments>http://dev.mcleish.id.au/2010/11/4x4-sudoku/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 01:39:19 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://dev.mcleish.id.au/?p=178</guid>
		<description><![CDATA[The Java sudoku solver is coming along nicely. There are still a few obvious things missing; in particular there&#8217;s a simple strategy that should speed up solving quite a bit. (Which I won&#8217;t try to explain here.) After that&#8217;s done, there&#8217;s a plan in the back of my mind to make it multi-threaded, or possibly [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://hg.mcleish.id.au/sudoku-java/">Java sudoku solver</a> is coming along nicely. There are still a few obvious things missing; in particular there&#8217;s a simple strategy that should speed up solving quite a bit. (Which I won&#8217;t try to explain here.)</p>
<p>After that&#8217;s done, there&#8217;s a plan in the back of my mind to make it multi-threaded, or possibly even distributed. I&#8217;m not sure about the best place to split it up yet&#8230; For solving a puzzle that&#8217;s known to have one solution, or towards the end of generating a puzzle where only a few of the branches are valid, splitting up the brute force tasks should be fairly useful; but for choosing a value for the first cell of an empty puzzle, <em>every</em> branch has a valid solution, so having multiple threads exploring all of them is pointless. The most profitable time to split up the task would be early enough that the available branches are deep, and will take a while for each of the threads to explore; but late enough that only one of them is expected to be valid.</p>
<p>The interesting question is whether it&#8217;s possible to recognise that point.</p>
<p>Anyway, here&#8217;s a result from the current version. The 4&#215;4 (er, 16&#215;16) puzzle below took just over ten hours to generate. </p>
<table cellspacing="0" cellpadding="0" style="border: solid 2px #000000; font-size: 16px;">
<tr style="height: 24px;">
<td style="width: 24px; text-align: center; border-left: none; border-top: none;">6</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 2px #000000; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">2</td>
<td style="width: 24px; text-align: center; border-left: solid 2px #000000; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">15</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 2px #000000; border-top: none;">16</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">11</td>
<td style="width: 24px; text-align: center; border-left: solid 1px #7f7f7f; border-top: none;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">4</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">3</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">8</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">12</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">5</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">5</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">16</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">11</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">4</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">1</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">14</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">8</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">14</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">9</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">4</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">14</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">1</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">7</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">3</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">4</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">6</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">12</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">7</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">6</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">15</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">8</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">9</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">3</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">16</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">12</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">10</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">7</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">9</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">5</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">16</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">1</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">7</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">11</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">8</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">3</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">16</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">8</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">10</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">1</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">7</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">4</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">3</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">6</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">6</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">11</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">9</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">2</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">1</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">8</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">1</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">5</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">15</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">14</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">3</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">16</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">5</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 2px #000000;">12</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 2px #000000;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">4</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">14</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">12</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">7</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">9</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">1</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">16</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">11</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">13</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: center; border-left: none; border-top: solid 1px #7f7f7f;">2</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">11</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 2px #000000; border-top: solid 1px #7f7f7f;">&nbsp;</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">5</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">1</td>
<td style="text-align: center; border-left: solid 1px #7f7f7f; border-top: solid 1px #7f7f7f;">3</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://dev.mcleish.id.au/2010/11/4x4-sudoku/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zendo and inductive logic</title>
		<link>http://dev.mcleish.id.au/2010/01/zendo-and-inductive-logic/</link>
		<comments>http://dev.mcleish.id.au/2010/01/zendo-and-inductive-logic/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 11:51:22 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Zendo]]></category>

		<guid isPermaLink="false">http://dev.mcleish.id.au/?p=9</guid>
		<description><![CDATA[&#8230;is what I&#8217;m thinking about now. (Okay, technically, are what I&#8217;m thinking about now.) Don&#8217;t have time for a fully explanatory post right now; I just wanted to get something on here so that the new blog doesn&#8217;t stagnate before it&#8217;s even started. So here&#8217;s a bullet-point-form introduction: Zendo is a game where players try [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;is what I&#8217;m thinking about now. (Okay, technically, <em>are</em> what I&#8217;m thinking about now.)</p>
<p>Don&#8217;t have time for a fully explanatory post right now; I just wanted to get something on here so that the new blog doesn&#8217;t stagnate before it&#8217;s even started. So here&#8217;s a bullet-point-form introduction:</p>
<ul>
<li><a href="http://www.koryheath.com/games/zendo/">Zendo</a> is a game where players try to guess the Master&#8217;s secret rule by probing it with examples.</li>
<li><a href="http://en.wikipedia.org/wiki/Inductive_reasoning">Inductive logic</a> is&#8230; the same thing, really, except generalised to not necessarily include players, a Master, or&#8230; plastic pyramids.</li>
<li>Doing either of these things algorithmically is, in general, hard. But in an interesting way.</li>
</ul>
<p>Also: colours!</p>
<p style="text-align: center;"><a href="http://dev.mcleish.id.au/wp-content/uploads/2010/01/zendo.jpg"><img class="size-medium wp-image-11 aligncenter" title="Zendo" src="http://dev.mcleish.id.au/wp-content/uploads/2010/01/zendo-300x200.jpg" alt="" width="300" height="200" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.mcleish.id.au/2010/01/zendo-and-inductive-logic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
