;;; -*- Mode:LISP; Package:HEARTS; Readtable:CL; Base:10 -*- (defun CARD-VALUE-LESS (card1 card2) (< (find-position-in-list (card-value card1) *card-values*) (find-position-in-list (card-value card2) *card-values*))) (defun CARD-VALUE-GREATER (card1 card2) (> (find-position-in-list (card-value card1) *card-values*) (find-position-in-list (card-value card2) *card-values*))) (defun suit-strength (hand suit) (let* ((suit-fun (selectq suit (spades 'hand-spade-cards) (hearts 'hand-heart-cards) (clubs 'hand-club-cards) (diamonds 'hand-diamond-cards))) (suit-cards (mapcar 'card-value (apply suit-fun (list hand))))) (+ (* 5 (count 'a suit-cards)) (* 4 (count 'k suit-cards)) (* 3 (count 'q suit-cards)) (* 2 (count 'j suit-cards)) (* 1 (count 10 suit-cards)))))