RosettaCodeData/Task/24-game-Solve/Racket/24-game-solve-2.rkt
2023-07-01 13:44:08 -04:00

15 lines
549 B
Racket

(define (find-solutions numbers (goal 24))
(define in-operations (list + - * /))
(remove-duplicates
(for*/list ([n1 numbers]
[n2 (remove-from numbers n1)]
[n3 (remove-from numbers n1 n2)]
[n4 (remove-from numbers n1 n2 n3)]
[o1 in-operations]
[o2 in-operations]
[o3 in-operations]
[(res expr) (in-variants n1 o1 n2 o2 n3 o3 n4)]
#:when (= res goal))
expr)))
(define (remove-from numbers . n) (foldr remq numbers n))