2012-04-28 4 views
3

存在しますか?私はsudokuの困惑を解決するプログラムを書いた、そしてそれは走るために3つのステップを要する。Prologのコマンドライン引数ベクトル?

> prolog 
> consult(sudoku). 
> solve(puzzle). 

私は

> prolog puzzle 

のような何かをする方法を探していますし、それを使って行うこと。これをPrologで行う方法はありますか?あるいは、Cのようなヘルパープログラムや他の言語で書く必要がありますか?

> ./solve puzzle 

助けていただければ幸いです。まだPrologには新しく、良い文書を見つけるのが難しい。

答えて

3

使用しているPrologシステムによって異なります。ほとんどのPrologシステムはコマンドライン startを持っています。ここでは相談する最初のPrologテキストを提供し、実行する最初のPrologゴールはです。

SWI-Prolog

> swipl -t ['sudoku.p'],puzzle 

GNU Prolog

> gprolog --entry-goal ['sudoku.p'],puzzle,halt 

Jekejeke Prolog

> java -jar interpreter.jar -t ['sudoku.p'],puzzle 
ここ

は、いくつかの例があり、私が相談し、1つの接続詞ゴールに実行を組み合わせています

最高のお礼

+0

ありがとうございます!おそらく最高の答えでしょう。 Lol私はあなたのプロジェクト名Jekejekeが好きです。 –

+0

こんにちは私はsiwplを使い、 'swipl -t ['sudoku.p']'はモジュールをコンパイルするようにしますが、 'puzzle'は引数を取らないのでエラーを投げます。ファイル名'...、puzzle 'と' ...、puzzle'を解決するようないくつかのことを試してみました。それを得ることができませんでした。コマンドラインで関数に引数を渡す良い方法がない場合は大したことではありませんが、もしあれば、それはsweeetになります。 –

+0

問題がご相談になることがあります。拡張子は.pではなく.plであるかもしれません。または、より長いパスを指定し、プラットフォーム固有のパス区切り文字を監視する必要があります。それから、['path/soduku.pl']を使って、スペースを使わずにすべてを1つに解く(パズル)。連合体はもう1つのコマンドライン引数として認識されないので、スペースは機能しません。 –

2

フラグ-gフラグを使用すると、トップレベルに入る直前にPrologに目的の目標を実行させることができます。デフォルトは、ウェルカムメッセージを出力する述部です。さらに、-tフラグを使用して、デフォルトの目標のprolog/0を対話型トップレベルとして選択するフラグに置き換えることもできます。

the manualも参照してください。