Add amb and distinct?

This commit is contained in:
2024-12-16 10:35:33 -06:00
parent e209bfe130
commit 5b69379de1
2 changed files with 52 additions and 1 deletions

View File

@@ -80,3 +80,22 @@
(assert-equal 2 (number-generator))
(assert-equal 3 (number-generator))
(assert-equal 4 (number-generator))))
(define-test-suite "amb"
(define-test "liars"
(define (liars)
(amb-reset)
(let ([betty (amb 1 2 3 4 5)]
[ethel (amb 1 2 3 4 5)]
[joan (amb 1 2 3 4 5)]
[kitty (amb 1 2 3 4 5)]
[mary (amb 1 2 3 4 5)])
;; The "Liars" problem
(amb-require (distinct? betty ethel joan kitty mary))
(amb-require (or (= kitty 1) (= betty 3)))
(amb-require (or (= ethel 1) (= joan 2)))
(amb-require (or (= joan 3) (= ethel 5)))
(amb-require (or (= kitty 2) (= mary 4)))
(amb-require (or (= mary 4) (= betty 1)))
(list betty ethel joan kitty mary)))
(assert-equal '(3 5 2 1 4) (liars))))