Comment detail
与えた条件を満たす候補 (Nested Flatten)すみません、使い方を書き忘れましたが、こんな感じで使います gosh> (print (solve '(and or not and))) ((#t #t #t #t) (#t #t #f #t) (#t #f #f #t) (#f #t #f #t) (#f #f #f #t))
手抜きをしてパラメータ(x1, x2, x3, x4)の個数が4個限定だったのを修正しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | (use srfi-1)
(use util.match)
(use util.combinations)
(define (solve expr)
(define (op-apply expr stack)
(match expr
(()
(car stack))
(('not rest ...)
(op-apply rest (cons (not (car stack)) (cdr stack))))
((op 'not rest ...)
(op-apply (cons op rest) (list* (car stack) (not (cadr stack)) (cddr stack))))
(('and rest ...)
(op-apply rest (cons (and (car stack) (cadr stack)) (cddr stack))))
(('or rest ...)
(op-apply rest (cons (or (car stack) (cadr stack)) (cddr stack))))))
(filter (cut op-apply expr <>)
(cartesian-product (make-list
(+ (length (filter (cut memq <> '(and or)) expr)) 1)
'(#t #f)))))
|



koguro #3133() [ Scheme ] Rating1/1=1.00
Rating1/1=1.00-0+
1 reply [ reply ]