I've only just had time to finish it. If it's not too late, here's what I've 
done:

Bishopt = [
              "BB------", # 0
              "B--B----", # 1
              "B----B--", # 2
              "B------B", # 3
              "-BB-----", # 4
              "--BB----", # 5
              "--B--B--", # 6
              "--B----B", # 7
              "-B--B---", # 8
              "---BB---", # 9
              "----BB--", # 10
              "----B--B", # 11
              "-B----B-", # 12
              "---B--B-", # 13
              "-----BB-", # 14
              "------BB" # 15
              ]
Kingt =    [
              "QNNRKR", # 0
              "NQNRKR", # 16
              "NNQRKR", # 32
              "NNRQKR", # 48
              "NNRQKR", # 64
              "NNRKRQ", # 80
              "QNRNKR", # 96
              "NQRNKR", # 112
              "NRQNKR", # 128
              "NRNQKR", # 144
              "NRNKQR", # 160
              "NRNKRQ", # 176
              "QNRKNR", # 192
              "NQRKNR", # 208
              "NRQKNR", # 224
              "NRKQNR", # 240
              "NRKNQR", # 256
              "NRKNRQ", # 272
              "QNRKRN", # 288
              "NQRKRN", # 304
              "NRQKRN", # 320
              "NRKQRN", # 336
              "NRKRQN", # 352
              "NRKRNQ", # 368
              "QRNNKR", # 384
              "RQNNKR", # 400
              "RNQNKR", # 416
              "RNNQKR", # 432
              "RNNKQR", # 448
              "RNNKRQ", # 464
              "QRNKNR", # 480
              "RQNKNR", # 496
              "RNQKNR", # 512
              "RNKQNR", # 528
              "RNKNQR", # 544
              "RNKNRQ", # 560
              "QRNKRN", # 576
              "RQNKRN", # 592
              "RNQKRN", # 608
              "RNKQRN", # 624
              "RNKRQN", # 640
              "RNKRNQ", # 656
              "QRKNNR", # 672
              "RQKNNR", # 688
              "RKQNNR", # 704
              "RKNQNR", # 720
              "RKNNQR", # 736
              "RKNNRQ", # 752
              "QRKNRN", # 768
              "RQKNRN", # 784
              "RKQNRN", # 800
              "RKNQRN", # 816
              "RKNRQN", # 832
              "RKNRNQ", # 848
              "QRKRNN", # 864
              "RQKRNN", # 880
              "RKQRNN", # 896
              "RKRQNN", # 912
              "RKRNQN", # 928
              "RKRNNQ", # 944
              "QNNRKR", # 960
              ]

pieces = %w(K Q R R B B N N)
row = [*("A".."H")]

loop do
  pieces = pieces.sort_by { rand }
  break if pieces.to_s =~ /.*R.*K.*R.*/ and pieces.to_s =~ /.*B(..)*B.*/
end

bCombo = pieces.to_s.gsub(/[KQRN]/,'-')
bishopComboNo = Bishopt.index(bCombo)

kCombo = pieces.to_s.gsub(/B/,'')
kingComboNo = (Kingt.index(kCombo) == 0) ? 0 : Kingt.index(kCombo) + 
(15*Kingt.index(kCombo))

puts "Starting position: #{kingComboNo + bishopComboNo}"
puts
puts "Black Pieces"
puts row.map { |square| square + "8" }.join(" ")
puts pieces.join("   ")
4.times { puts }
puts pieces.join("   ")
puts row.map { |square| square + "1" }.join(" ")
puts "White Pieces"

_________________________________________________________________
MSN Hotmail is evolving check out the new Windows Live Mail 
http://ideas.live.com