8queen問題
追記2
el = [1,2,3,4,5,6,7,8]
だとして
今の値±(リストのidxの差)だと斜めにいるとみなせるから
これをコードにしたらできそう
追記2終わり
追記
だめだ
よく理解してないからできないのだろう
他のサイトを参考に実装しよう
追記終わり
お気楽 OCaml プログラミング入門
を参考に8クイーン問題をocamlで解いてみる
方針
順列を作る
filtterで絞る
順列について
8×8ではなく数字がダブらなければ良いから8!
条件部はすべてがぶつからないを満たす
だからfilterとallとisSafeを組み合わせればいける
実装途中
/* lstの要素すべてがfを満たせばtrue*/ let rec all = (f, lst) => switch (lst) { | [] => false | [x] => f(x) | [hd, ...rest] => f(hd) == true ? all(f, rest) : false }; /* 8queenのルールを書く */ let isSafe = el => { let func = () => false; /*ここを実装*/ all(func, el); }; /* 作成した順列を8queenの条件でフィルタリング */ let filterQueen = lst => List.filter(isSafe, lst);