--Apple-Mail-2-726891214
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset-ASCII;
	formatðïwed

Well, this quiz is tougher than it seems, isn't it?  <laughs>

I played with it a little last night before I realized I was going 
about it all wrong.  I'll show what I did wrong and leave it to Bob to 
educate us about how to do it right.

My problem is 100% efficiency.  I was hoping to be able to generate the 
entire move tree for this game, expecting that the single piece and the 
small board might make this achievable.  I tried to avoid repeating 
positions using rotation and mirroring of the board.

Unfortunately, I was lazy and didn't want to deal with binary math for 
rotation and mirroring, so I used Strings.  I'm sure this is horribly 
inefficient.  I was hoping to simply generate the move tree once, 
Marhsal it, and work off of that in the future.  But after letting my 
tree builder run for hours, I had nothing to show for it.

Clearly, it's not the right approach.  I should have been less lazy and 
got the data structure right to begin with.  And the low number of 
positions probably makes the tree overkill.

Files in the zip:

tactics.rb         -- My flawed library for dealing with positions.
play_tactics.rb    -- A simple game implementation, with the opponent 
making random moves.
build_move_tree.rb -- A good reason to purchase some supercomputer 
time.  :(

James Edward Gray II


--Apple-Mail-2-726891214
Content-Transfer-Encoding: base64
Content-Type: application/zip;
	x-unix-mode44;
	nameonsolution.zip"
Content-Disposition: attachment;
	filenamensolution.zip

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
AwADANkAAAAGBgAAAAA-Apple-Mail-2-726891214--