(load "a4code") (load "connect4") (define (c4-eval board current-player max-player) (let ((winner (c4-end? board))) (cond ((equal? winner max-player) 1000) ((equal? winner (other-player max-player)) -1000) ((equal? winner 'draw) 0) (else (let ((max-c-threes (cadr (open-columns board max-player))) (min-c-threes (cadr (open-columns board (other-player max-player)))) (max-r-threes (apply + (map cadr (open-rows board max-player)))) (min-r-threes (apply + (map cadr (open-rows board (other-player max-player)))))) (+ max-c-threes max-r-threes (- min-c-threes) (- min-r-threes)))))))