2012-04-28 2 views
3

존재합니까? 나는 스도쿠 퍼즐을 푸는 프로그램을 작성했으며, 실행하는 데 3 단계가 걸립니다.Prolog에 명령 줄 인수 벡터가 있습니까?

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

나는

> prolog puzzle 

처럼 뭔가를하고 함께 할 수있는 방법을 찾고 있어요. Prolog에서 이것을 수행 할 수있는 방법이 있습니까? 또는 C와 같은 다른 언어로 도우미 프로그램을 써야만합니다.

> ./solve puzzle 

도움이 될만한 의견이 있습니다. Prolog를 아직 사용하지 않아서 좋은 문서를 찾는 데 어려움이 있습니다.

답변

3

사용중인 Prolog 시스템에 따라 다릅니다. 대부분의 프롤로그 시스템은 명령 행 start를 가지고 있는데, 여기에서 컨설팅 될 초기 프롤로그 텍스트를 제공 할 수 있고 실행될 초기 프롤로그 목표는 입니다.

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 
,536,913 여기

은 내가 상담 한 접속어 목표로 실행 결합했다, 몇 가지 예입니다

최고 감사합니다.

+0

고마워요! 아마도 가장 좋은 대답 일거야. 롤 프로젝트 이름 Jekejeke을 좋아합니다. –

+0

안녕하세요, 저는 siwpl을 사용하고 있습니다.'swipl -t [ 'sudoku.p']'는 모듈을 컴파일하려고합니다. 그러나'puzzle'은 인수를 얻지 못하기 때문에 에러를 던집니다. 파일 이름 '..., 퍼즐 (퍼즐)'및 '..., 퍼즐 [퍼즐]'과 같은 몇 가지 다른 것들을 시도했습니다. 그것을 얻을 수 없었다. 커맨드 라인에서 함수에 arg를 전달하는 좋은 방법이 없다면 커다란 문제는 아니지만, 존재한다면 sweeet 일 것이다. –

+0

문제는 문의 할 수 있습니다. 아마도 확장자는 .p가 아니라 .pl 일 것입니다. 또는 더 긴 경로를 제공하고 플랫폼 별 경로 구분 기호에주의해야합니다. 그런 다음 [path/soduku.pl]을 사용하여 공백없이 한 번에 모든 것을 풀 수 있습니다 (퍼즐). 연결은 더 이상 하나의 명령 줄 인수로 인식되지 않으므로 공백이 작동하지 않습니다. –

2

-g 플래그를 사용하면 Prolog가 최상위 레벨에 들어가기 전에 선택한 목표를 실행할 수 있습니다. 기본값은 환영 메시지를 인쇄하는 술어입니다. 또한 기본 목표 프롤로그/0을 대화 형 최상위 수준으로 대체하는 -t 플래그를 사용하려고 할 수 있습니다.

도 참조하십시오. the manual.