您好我有以下代码:在序言
show_result(Squares,MaxRow,MaxCol) :-
show_result(Squares,MaxRow,MaxCol,1), nl.
show_result(_,MaxRow,_,Row) :- Row > MaxRow, !.
show_result(Squares,MaxRow,MaxCol,Row) :-
show_result(Squares,MaxRow,MaxCol,Row,1), nl,
Row1 is Row+1, show_result(Squares,MaxRow,MaxCol,Row1).
show_result(_,_,MaxCol,_,Col) :- Col > MaxCol, !.
show_result(Squares,MaxRow,MaxCol,Row,Col) :-
(memberchk(sq(Row,Col,X),Squares), !, write(X); write('#')),
Col1 is Col+1, show_result(Squares,MaxRow,MaxCol,Row,Col1).
当我运行代码,它在屏幕上显示正确的输出。
但我想它写了,我已经以这种方式修改的代码的文件:
show_result(Squares,MaxRow,MaxCol,SolutionFile) :-
show_result(Squares,MaxRow,MaxCol,1,SolutionFile),
open(SolutionFile,write,Stream),
nl(Stream), close(Stream).
show_result(_,MaxRow,_,Row,SolutionFile) :- Row > MaxRow, !.
show_result(Squares,MaxRow,MaxCol,Row,SolutionFile) :-
show_result(Squares,MaxRow,MaxCol,Row,1,SolutionFile),
open(SolutionFile,write,Stream),nl(Stream), close(Stream),
Row1 is Row+1,
show_result(Squares,MaxRow,MaxCol,Row1,SolutionFile).
show_result(_,_,MaxCol,_,Col,SolutionFile) :- Col > MaxCol, !.
show_result(Squares,MaxRow,MaxCol,Row,Col,SolutionFile) :-
( memberchk(sq(Row,Col,X),Squares),
!,
open(SolutionFile,write,Stream), write(Stream,X), close(Stream)
; open(SolutionFile,write,Stream), write(Stream,'#'), close(Stream)
),
Col1 is Col+1,
show_result(Squares,MaxRow,MaxCol,Row,Col1,SolutionFile).
这个返回“true”,但并不写入任何文件。 我需要更改哪些内容才能将输出写入文件?
我只是改变了“写”到“追加”,它工作得很好。写基本上覆盖已写入的文件。因此,最终的产出没有任何内容。改变它追加工作正常。 – 2014-10-19 12:21:10