読んでます。
8クイーンが解けるなら、これも解けるだろう…
…と思ったまではよかったが。
Prologむずいよ。
コードの中でA, B, Cの値を生成すればいいのかもしれないと気がつくまで3、4日かかった。
とりあえず書いた。動いた。コードの検証は後日。
factorial(0, 1). factorial(X, F) :- X > 0, X1 is X - 1, factorial(X1, F1), F is X * F1. f_(N) :- factorial(N, F), Amin is F + 1, Amax is F * 2 - 1, for(A, Amin, Amax), Cmax is A div (A - F), for(C, 2, Cmax), B is C * (A -F), 0 =:= (A - B) mod C, N =:= (A - B) div C, 0 =:= B mod C, F =:= A - (B div C), write('\n'), write(A), write(','), write(B), write(','), write(C), write(','), write(N). f(N, M) :- for(X, N, M), f_(X).
実行結果。
GNU Prolog 1.4.0 By Daniel Diaz Copyright (C) 1999-2011 Daniel Diaz
?- f(4, 10). |
- 作者: Bruce A. Tate,まつもとゆきひろ,田和勝
- 出版社/メーカー: オーム社
- 発売日: 2011/07/23
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 230回
- この商品を含むブログ (64件) を見る