私はprologに掃海艇のようなものを書く必要があります。私は "普通の"言語でそれを行うことができますが、プロローグでコーディングを開始しようとすると、私は完全に始める方法がわかりません。 私はある種のヒントが必要です。 入力仕様:Prolog:地雷除去器のようなパズルを解く場所はどこですか?
基板サイズ:メートル×N(メートル、N∈{1、...、16})、トリプルのリスト(I、J、 K)、I∈{1、...、メートル}、J∈{1、...、N}、K∈{1、...、8})である。例えば
:
5
5
[(1,1,1), (2,3,3), (2,5,2), (3,2,2), (3,4,4), (4,1,1), (4,3,1), (5,5,2)].
出力:数字と(宝用)*
と(ブランクフィールドの)原子のリスト。これは、パズルソリューションの表現です。
このパズルのルール: ボードの20のフィールドには隠された宝があります。フィールド内の数字は、宝を持っている近隣フィールドの数を表します。桁のある欄には財宝はありません。すべてのフィールドに宝をマークしてください。
あなたは対角線に隠されている宝の数を推測する必要があります。
私はどんなヒントにも感謝します。私は完全な解決策を望んでいない、私は自分でそれを書いてみたいが、手がかりがなければ私はそれをすることができない。
'build_matrix(のRowSize、ColSize、マット)であることを覚えて、行列の範囲外のインデックスを心配していない、シンプルなコードを維持するために: - 長さ(C 、ColSize)、length(Mat、RowSize)、maplist(copy_term(C)、Mat).'はfindallの解決策よりも好ましいでしょう。 – m09
はい、いいです。そしてcopy_term/2それはISO標準です、知っておいてよかった! – CapelliC
私は自分が自分のデータ構造を設定したいときにそれを定期的に使用していることがわかります。ラムダがロードされている場合は、別のポストbtwで嘘のように言いすぎてもコピーを実行します。 – m09