它們存在嗎?我寫了一個解決數獨謎題的程序,它需要3個步驟才能運行。Prolog中的命令行參數向量?
> prolog
> consult(sudoku).
> solve(puzzle).
我正在尋找一種方法來像做
> prolog puzzle
,並用它做。有沒有辦法在Prolog中執行此操作?或者我將不得不寫一些幫助程序在C或其他語言使用像
> ./solve puzzle
任何幫助,將不勝感激。對於Prolog來說還是新手,並且無法找到好的文檔。
它們存在嗎?我寫了一個解決數獨謎題的程序,它需要3個步驟才能運行。Prolog中的命令行參數向量?
> prolog
> consult(sudoku).
> solve(puzzle).
我正在尋找一種方法來像做
> prolog puzzle
,並用它做。有沒有辦法在Prolog中執行此操作?或者我將不得不寫一些幫助程序在C或其他語言使用像
> ./solve puzzle
任何幫助,將不勝感激。對於Prolog來說還是新手,並且無法找到好的文檔。
這取決於您正在使用的Prolog系統。大多數Prolog系統都有一個命令行 開始,其中可以提供一個初始的Prolog文本供參考,並提供一個初始的Prolog目標。
這裏有一些例子,我已經聯合了磋商,並運行到一個連接性目標:
> swipl -t ['sudoku.p'],puzzle
> gprolog --entry-goal ['sudoku.p'],puzzle,halt
> java -jar interpreter.jar -t ['sudoku.p'],puzzle
最好的問候
使用-g
標誌,您可以在進入最高級別之前讓Prolog執行您選擇的目標。默認是打印歡迎消息的謂詞。此外,您可能希望使用-t
標誌作爲交互式頂級選項替換默認目標序言/ 0。請參閱the manual。
謝謝!可能是有史以來最好的答案。哈哈,我喜歡你的項目名稱Jekejeke。 – 2012-04-29 04:36:40
嘿,我正在使用siwpl,'swipl -t ['sudoku.p']'得到它來編譯模塊,但'puzzle'會拋出一個錯誤,因爲它沒有得到它的參數,這應該是一個文件名。嘗試了其他一些東西,如......,解決(謎題)和......,解決[謎題]。無法實現。如果沒有一種很好的方法可以將命令傳遞給命令行中的函數,但是如果存在的話,那將是更好的選擇。 – 2012-04-29 04:42:13
問題可能是諮詢。也許擴展名不是.p,而是.pl。或者您需要提供更長的路徑,並注意平臺特定的路徑分隔符。然後你可以使用['path/soduku.pl'],解決(拼圖)所有在一個沒有空格。由於連接不再被識別爲一個命令行參數,所以空格不起作用。 – 2012-04-29 09:28:07