Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
23
Task/N-queens-problem/Clojure/n-queens-problem-1.clj
Normal file
23
Task/N-queens-problem/Clojure/n-queens-problem-1.clj
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
(def size 8)
|
||||
|
||||
(defn extends? [v n]
|
||||
(let [k (count v)]
|
||||
(not-any? true?
|
||||
(for [i (range k) :let [vi (v i)]]
|
||||
(or
|
||||
(= vi n) ;check for shared row
|
||||
(= (- k i) (Math/abs (- n vi)))))))) ;check for shared diagonal
|
||||
|
||||
(defn extend [vs]
|
||||
(for [v vs
|
||||
n (range 1 (inc size)) :when (extends? v n)]
|
||||
(conj v n)))
|
||||
|
||||
|
||||
(def solutions
|
||||
(nth (iterate extend [[]]) size))
|
||||
|
||||
(doseq [s solutions]
|
||||
(println s))
|
||||
|
||||
(println (count solutions) "solutions")
|
||||
6
Task/N-queens-problem/Clojure/n-queens-problem-2.clj
Normal file
6
Task/N-queens-problem/Clojure/n-queens-problem-2.clj
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
(ns queens
|
||||
(:require [clojure.math.combinatorics :as combo]
|
||||
|
||||
(defn queens [n]
|
||||
(filter (fn [x] (every? #(apply distinct? (map-indexed % x)) [+ -]))
|
||||
(combo/permutations (range 1 (inc n)))))
|
||||
9
Task/N-queens-problem/Clojure/n-queens-problem-3.clj
Normal file
9
Task/N-queens-problem/Clojure/n-queens-problem-3.clj
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
(defn n-queens [n]
|
||||
(let[children #(map (partial conj %) (range n))
|
||||
no-conflict? (fn [x] (or (empty? x)
|
||||
(every? #(apply distinct? (map-indexed % x))
|
||||
[+ - (fn[_ v] v)])))]
|
||||
(filter (every-pred no-conflict? #(= n (count %)))
|
||||
(tree-seq (every-pred #(> n (count %))
|
||||
no-conflict?)
|
||||
children []))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue