Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
25
Task/Knights-tour/Clojure/knights-tour.clj
Normal file
25
Task/Knights-tour/Clojure/knights-tour.clj
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
(defn isin? [x li]
|
||||
(not= [] (filter #(= x %) li)))
|
||||
|
||||
(defn options [movements pmoves n]
|
||||
(let [x (first (last movements)) y (second (last movements))
|
||||
op (vec (map #(vector (+ x (first %)) (+ y (second %))) pmoves))
|
||||
vop (filter #(and (>= (first %) 0) (>= (last %) 0)) op)
|
||||
vop1 (filter #(and (< (first %) n) (< (last %) n)) vop)]
|
||||
(vec (filter #(not (isin? % movements)) vop1))))
|
||||
|
||||
(defn next-move [movements pmoves n]
|
||||
(let [op (options movements pmoves n)
|
||||
sp (map #(vector % (count (options (conj movements %) pmoves n))) op)
|
||||
m (apply min (map last sp))]
|
||||
(first (rand-nth (filter #(= m (last %)) sp)))))
|
||||
|
||||
(defn jumps [n pos]
|
||||
(let [movements (vector pos)
|
||||
pmoves [[1 2] [1 -2] [2 1] [2 -1]
|
||||
[-1 2] [-1 -2] [-2 -1] [-2 1]]]
|
||||
(loop [mov movements x 1]
|
||||
(if (= x (* n n))
|
||||
mov
|
||||
(let [np (next-move mov pmoves n)]
|
||||
(recur (conj mov np) (inc x)))))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue