私は多くのプログラミング言語で多くのことをプログラミングしてきましたが、Prologはそれらの言語の1つではありません。入力としてパズル表現を与えられたときに数独パズルを解くプログラムを書くことになっています。
私のアイデア:
提供されたすべての数値をリストのリスト(行のリスト)に保存し、可能なオプションを1つに収まるまでブルートフォースします(これは最もエレガントではありませんが、書くのに多くの時間を費やす時間はありません)従来の方法でパズルを解くためのロジックを作成します)。しかし、Prologに慣れていないので、物事の進め方を理解するのに少し苦労しています。入力は、次のような行の形式でテキストファイルに入力されます。
1-2---34-
-34--1-5-
などなど。ファイルを読み取って印刷するための私のコードは次のとおりです。
readPuzzle(File) :-
see(File),
repeat,
get_char(X),
(X = end_of_file, !
;
write(X),
fail
),
seen.
これはすべてうまく機能します。W = []
したがって、すぐ上に追加してこのリストを作成しsee(File)
、を置き換えようwrite(X)
としているとしましょうW = [W|X]
。私の経験から、これはテキストファイルから提供されたすべての文字の長いリストを作成するはずです。
そうではありません。誰かお願いします
- 私の前のタスクを達成するためのより良いよりプロロジカルな方法を教えてください
- これを回避する方法を説明してください。