Created
June 16, 2016 08:41
-
-
Save nbkolchin/a90c2d0f3789a147fd6886b382e6c3bf to your computer and use it in GitHub Desktop.
Tic-Tac-Toe benchmark in Forth for https://github.com/BartMassey/ttt-bench
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
( Tic-Tac-Toe benchmark for https://github.com/BartMassey/ttt-bench ) | |
VARIABLE BOARD 9 CELLS ALLOT BOARD 9 CELLS ERASE | |
: B@ CELLS BOARD + @ ; | |
: B! CELLS BOARD + ! ; | |
: NEGALINE ( a b c - filled ) | |
B@ SWAP B@ + SWAP B@ + ABS 3 = | |
; | |
: GAMEVALUE | |
0 4 8 NEGALINE IF 0 B@ * EXIT THEN | |
2 4 6 NEGALINE IF 2 B@ * EXIT THEN | |
0 1 2 NEGALINE IF 0 B@ * EXIT THEN | |
3 4 5 NEGALINE IF 3 B@ * EXIT THEN | |
6 7 8 NEGALINE IF 6 B@ * EXIT THEN | |
0 3 6 NEGALINE IF 0 B@ * EXIT THEN | |
1 4 7 NEGALINE IF 1 B@ * EXIT THEN | |
2 5 8 NEGALINE IF 2 B@ * EXIT THEN | |
DROP | |
9 0 DO I B@ 0= IF UNLOOP -2 EXIT THEN LOOP | |
0 | |
; | |
: NEGAMAX ( a - a ) | |
DUP GAMEVALUE DUP -2 <> IF NIP EXIT THEN DROP | |
-1 | |
9 0 DO | |
I B@ 0= IF | |
OVER I B! | |
OVER NEGATE RECURSE NEGATE | |
OVER OVER < IF NIP ELSE DROP THEN | |
0 I B! | |
THEN | |
LOOP | |
NIP | |
; | |
: MAIN | |
1 NEGAMAX . CR | |
; | |
MAIN | |
BYE |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment