首页 > 其他 > 详细

Scheme N皇后

时间:2014-08-12 16:24:34      阅读:282      评论:0      收藏:0      [点我收藏+]
(define (range n)
    (define (recur n)
        (if (= n -1)
            ()
            (cons n (recur (- n 1)))))
    (recur (- n 1)))

(define (flatten a)
    (if (null? a)
        ()
        (append (car a) (flatten (cdr a)))))

(define (safe? x y sln)
    (if (null? sln)
        #t
        (let ((px (car (car sln))) (py (cadr (car sln))))
            (if (or (= y py) (= (- py y) (- px x)) (= (- py y) (- x px)))
                #f 
                (safe? x y (cdr sln))))))

(define (nqueen n)
    (define (recur x)
        (if (= x -1)
            (list ())
            (flatten (map (lambda (y) (map (lambda (sln) (cons (list x y) sln)) (filter (lambda (sln) (safe? x y sln)) (recur (- x 1))))) (range n)))))
    (recur (- n 1)))

(define (pl a)
    (if (null? a)
        ()
        (begin (display (car a)) (display "\n") (pl (cdr a)))))

(pl (nqueen 4))

 

Scheme N皇后,布布扣,bubuko.com

Scheme N皇后

原文:http://www.cnblogs.com/xiangnan/p/3907175.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!