38 lines
991 B
Bash
38 lines
991 B
Bash
#!/usr/bin/env bash
|
|
#{
|
|
# Thanks to http://rosettacode.org/wiki/Multiline_shebang#PicoLisp
|
|
exec pil $0 $1
|
|
# }#
|
|
|
|
(de safe (Q D S) (let (C (car S))
|
|
(case C
|
|
(NIL T)
|
|
(T (and (<> Q C) (<> Q (+ C D)) (<> Q (- C D)) (safe Q (+ D 1) (cdr S)) ))
|
|
)
|
|
)
|
|
)
|
|
|
|
(de appendS (Q S X) (cond ((<= Q 0) X)
|
|
((safe Q 1 S) (appendS (- Q 1) S (cons (cons Q S) X)))
|
|
(T (appendS (- Q 1) S X) )
|
|
)
|
|
|
|
)
|
|
|
|
(de extendS (Q A X) (let (S (car X))
|
|
(case S
|
|
(NIL A)
|
|
(T (extendS Q (appendS Q S A) (cdr X)))
|
|
)
|
|
)
|
|
)
|
|
|
|
(de findS (N Q) (cond ((= 0 Q) (cons (cons NIL NIL) NIL))
|
|
(T (extendS N NIL (findS N (- Q 1))))))
|
|
|
|
(de nqueens (N) (length (findS N N)))
|
|
|
|
(bye (println (nqueens (car (str (opt))))))
|
|
|
|
|