Saturday, July 31, 2010

Casio FX-700P

This week I realized that it has been more than 25 years since I learned programming on the Casio FX-700P programmable calculator. This little computer is powered by a 455KHz HD61913 processor and features 2KB RAM, with exactly 1568 bytes available for BASIC programs. Output can be printed with the Casio FP-12 mini thermal printer and programs and data can be saved and loaded using the Casio FA-3 cassette interface.

I still use the FX-700P as my desktop calculator, but this week I also tried the printer and cassette interface. The internal battery of the FP-12 was exhausted, so I had to improvise an external battery holder. But after that, the printer still produces those little thermal listings! The FA-3 also still works after all those years, although I could not read my old programs back unfortunately. Time had taken its toll on those old cassettes.

Monday, July 19, 2010

One Deeper Perft for Checkers

I optimized the distributed implementation for 8x8 checkers with a transposition table (but one that stores full board positions to avoid the risk of "hard collisions"). The speed improvement enabled me to compute perft(23) on a cluster of machines in a relatively short time.

As before, the table below shows the perft breakdown per move (called "divide") from the start position, but now for depths 21 to 23.

move        divide(21)       divide(22)        divide(23)
12-16:  52945190026737  243598269855110  1123463594881857
11-16:  53527954221225  246743868125768  1131373985922218
11-15:  44775005468548  209016678583301   984253557821317
10-15:  46574865098865  215412869777867  1000606302770349
10-14:  39822944739732  184865466345796   856779998157523
09-14:  45530585259776  213736468971938  1003310451936358
09-13:  61923979665936  288999100078322  1337748969176591
       345100524480819 1602372721738102  7437536860666213

See my checkers page for more details.

Saturday, July 10, 2010

A Very Short Defeat

I got a kind email from Thorsten Czub, who is very active in testing chess programs in general and, currently, chess programs for Android in particular. He conducted a few tests with Chess for Android running on a Rockchip Android Tablet (600MHz ARM) with Android 1.5 against some programs running on other platforms. Below is a game between Shredder Java running on a Motorola ROKR Z6 (550 MHz ARM) with white and Chess for Android on the tablet with black.

[Event "average 30"]
[Date "2010.07.08"]
[White "Shredder Java"]
[Black "Chess for Android"]
[Result "1-0"]
1. e4 e5 2. Nc3 Nf6 3. g3 Be7 4. Nf3 Nc6 5. d4 exd4 6. Nxd4 Nxd4 7. Qxd4 O-O 8. e5 c5 9. Qc4 Ne8 10. Bd3 a5 11. O-O Nc7 12. Be3 Ne6 13. Nd5 f5 14. exf6 gxf6 15. Qg4+ Ng5 16. Rfe1 d6 17. Bxh7+ Kxh7 18. Qh5+ Kg7 19. Bxg5 Rf7 20. Bh6+ Kg8 21. Qg6+ 1-0
White will mate soon. Embarrassing how quickly king safety was lost.

Thursday, July 8, 2010

Perft for Checkers (yet again)

Rein Halbersma recently posted 8x8 checkers perft results for depth 22 with a request for confirmation (because he uses a hash table, he wanted to make sure no "hard collisions" occur). So I verified his results for depth 22 using a distributed, brute force implementation (no hash tables).

The table below shows the perft breakdown per move (called "divide") from the start position for depths 20 to 22.

move    divide(20)      divide(21)       divide(22)
12-16:  11531470109861  52945190026737  243598269855110
11-16:  11736729175821  53527954221225  246743868125768
11-15:   9515983205474  44775005468548  209016678583301
10-15:  10055597639275  46574865098865  215412869777867
10-14:   8600202424158  39822944739732  184865466345796
 9-14:   9698986164172  45530585259776  213736468971938
 9-13:  13406062152792  61923979665936  288999100078322
        74545030871553 345100524480819 1602372721738102

For more information, see my checkers page.