--------------000307020708020909010405
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Err... uhhh... it seems I missed the deadline. Merrhh. Oh well, here's 
my incomplete chess program. :)

I was basically completing the rules from top to bottom on the web page, 
and so I haven't yet done castling, or validating for check, stalemate, 
or (seems hardest to me) mate.

But it does to a little REP loop and draw a board and all that.

Probably the most significant thing about this "solution" is that I 
decided to ignore your initial statement about introducing plugins & 
whatnot for the purpose of expansion. Rather, I used this as an 
opportunity to practice TDD, refactoring, and YAGNI. I was hoping to see 
this pay off when I had to implement the variants.

There are a bunch of cute tricks in the code (at least, for a ruby nuby 
such as I).

I am proud of:
- doing all sorts of metaprogramming without resorting to 'eval'
- TDDing the whole d*mn thing (almost)
- producing so much code, so quickly, on a language so foreign to me, 
and still understanding what I wrote afterwards

I am not proud of:
- well, check the code. chances are, if there's a comment, it's a 
description of some code debt.
- I don't like using 'break' to get out of loops. Too much like GOTO. 
But I did. Twice.

TDD, by the way, proved to be incredibly successful, not because it 
helped with design (in fact, I found it quite difficult -- often, I 
would write the code I wanted in a comment, and then struggle to write 
tests to make that code appear), but because it was really easy to make 
sure I didn't break anything, and it really felt good to see all the 
tests pass.

Hope there's something of value here for somebody out there! It was 
certainly valuable practice for me, and I'll probably go on to finish 
the code.

Devin


--------------000307020708020909010405
Content-Type: application/x-zip-compressed;
 nameubyquiz35.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filenameubyquiz35.zip"

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
AHIFAABydWJ5cXVpejM1L2ZpeHR1cmVzL21vY2tfaW8ucmJQSwECFAsUAAAACAC4us8yJODU
cr0EAACLDAAAEgAAAAAAAAABACAAAAAyBgAAcnVieXF1aXozNS9nYW1lLnJiUEsBAhQLFAAA
AAgA767NMoDKiuwmAAAAKAAAABgAAAAAAAAAAQAgAAAAHwsAAHJ1YnlxdWl6MzUvZ2FtZV9l
cnJvci5yYlBLAQIUCxQAAAAIAFazzzKvSkOqqwQAAKgMAAAcAAAAAAAAAAEAIAAAAHsLAABy
dWJ5cXVpejM1L3Bhd25fdmFsaWRhdG9yLnJiUEsBAhQLFAAAAAgAo7nNMrSfLuswAAAAPAAA
ABUAAAAAAAAAAQAgAAAAYBAAAHJ1YnlxdWl6MzUvUkVBRE1FLnR4dFBLAQIUCxQAAAAIAEa+
zDLhx8l8HgAAACIAAAARAAAAAAAAAAEAIAAAAMMQAABydWJ5cXVpejM1L3J1bi5yYlBLAQIU
CxQAAAAIANsOzzIOUEGmeQIAACMFAAAUAAAAAAAAAAEAIAAAABARAABydWJ5cXVpejM1L3J1
bm5lci5yYlBLAQIUCxQAAAAIAFCozzJ3UvK7QgAAAHwAAAASAAAAAAAAAAEAIAAAALsTAABy
dWJ5cXVpejM1L3Rlc3QucmJQSwECFAsKAAAAAAAjuc8yAAAAAAAAAAAAAAAAEQAAAAAAAAAA
ABAAAAAtFAAAcnVieXF1aXozNS90ZXN0cy9QSwECFAsUAAAACAC6q84yS7MEIuYCAAAOCQAA
GQAAAAAAAAABACAAAABcFAAAcnVieXF1aXozNS90ZXN0cy9ib2FyZC5yYlBLAQIUCxQAAAAI
AGW1zzKUzUPM1QIAAPMOAAAYAAAAAAAAAAEAIAAAAHkXAABydWJ5cXVpejM1L3Rlc3RzL2dh
bWUucmJQSwECFAsUAAAACABBvc0yzpgls/sBAAD7CQAAHwAAAAAAAAABACAAAACEGgAAcnVi
eXF1aXozNS90ZXN0cy9nYW1lX2Jpc2hvcC5yYlBLAQIUCxQAAAAIACO5zzKWz2bceAIAAC0N
AAAdAAAAAAAAAAEAIAAAALwcAABydWJ5cXVpejM1L3Rlc3RzL2dhbWVfa2luZy5yYlBLAQIU
CxQAAAAIAGkGzjKgZ+G3CgIAABsMAAAfAAAAAAAAAAEAIAAAAG8fAABydWJ5cXVpejM1L3Rl
c3RzL2dhbWVfa25pZ2h0LnJiUEsBAhQLFAAAAAgA7rPPMi/8LNWeBQAAICwAAB0AAAAAAAAA
AQAgAAAAtiEAAHJ1YnlxdWl6MzUvdGVzdHMvZ2FtZV9wYXduLnJiUEsBAhQLFAAAAAgA1APO
Mux8F/PgAQAAXgkAAB4AAAAAAAAAAQAgAAAAjycAAHJ1YnlxdWl6MzUvdGVzdHMvZ2FtZV9x
dWVlbi5yYlBLAQIUCxQAAAAIAEyjzjL+kMdSgwEAANcFAAAdAAAAAAAAAAEAIAAAAKspAABy
dWJ5cXVpejM1L3Rlc3RzL2dhbWVfcm9vay5yYlBLAQIUCxQAAAAIAJixzzKtcupKpwIAANQG
AAAiAAAAAAAAAAEAIAAAAGkrAABydWJ5cXVpejM1L3Rlc3RzL3Bhd25fdmFsaWRhdG9yLnJi
UEsBAhQLFAAAAAgAe6PPMo3F25a3AgAAtAgAABoAAAAAAAAAAQAgAAAAUC4AAHJ1YnlxdWl6
MzUvdGVzdHMvcnVubmVyLnJiUEsFBgAAAAAWABYAFwYAAD8xAAAAAA--------------000307020708020909010405--