2012-04-28 85 views
3

它們存在嗎?我寫了一個解決數獨謎題的程序,它需要3個步驟才能運行。Prolog中的命令行參數向量?

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

我正在尋找一種方法來像做

> prolog puzzle 

,並用它做。有沒有辦法在Prolog中執行此操作?或者我將不得不寫一些幫助程序在C或其他語言使用像

> ./solve puzzle 

任何幫助,將不勝感激。對於Prolog來說還是新手,並且無法找到好的文檔。

回答

3

這取決於您正在使用的Prolog系統。大多數Prolog系統都有一個命令行 開始,其中可以提供一個初始的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 

最好的問候

+0

謝謝!可能是有史以來最好的答案。哈哈,我喜歡你的項目名稱Jekejeke。 – 2012-04-29 04:36:40

+0

嘿,我正在使用siwpl,'swipl -t ['sudoku.p']'得到它來編譯模塊,但'puzzle'會拋出一個錯誤,因爲它沒有得到它的參數,這應該是一個文件名。嘗試了其他一些東西,如......,解決(謎題)和......,解決[謎題]。無法實現。如果沒有一種很好的方法可以將命令傳遞給命令行中的函數,但是如果存在的話,那將是更好的選擇。 – 2012-04-29 04:42:13

+0

問題可能是諮詢。也許擴展名不是.p,而是.pl。或者您需要提供更長的路徑,並注意平臺特定的路徑分隔符。然後你可以使用['path/soduku.pl'],解決(拼圖)所有在一個沒有空格。由於連接不再被識別爲一個命令行參數,所以空格不起作用。 – 2012-04-29 09:28:07

2

使用-g標誌,您可以在進入最高級別之前讓Prolog執行您選擇的目標。默認是打印歡迎消息的謂詞。此外,您可能希望使用-t標誌作爲交互式頂級選項替換默認目標序言/ 0。請參閱the manual