我有下一个矩阵:
map(1,[[1,0,0,0,0,0,0,0,0,0],
[1,1,0,0,1,1,0,0,0,0],
[0,1,0,0,1,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,1,0,0,0,1,0,0,0],
[0,1,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]]).
我想打印这样的矩阵:
- 如果矩阵元素值为0 - >打印('〜')
- 如果矩阵元素值是1 - >打印( '#')。
我尝试这样做,但我的方法每次打印都是假的。这是我的代码:
print_encoded([H|T]) :-
H==0 ->
write('~');
H==1 ->
write('#');
print_encoded(T).
showEncoded :-
map(_,Map),
print_encoded(Map).
也许这是一个简单的问题,但prolog是一种新的编程语言。在此先感谢您的帮助。
答案 0 :(得分:3)
print_encoded的[]没有基本情况。 它可能是
print_encoded([]) :-
nl.
你可以使用"功能精神"使用SWI-Prolog的模块lambda
:- use_module(library(lambda)).
print_encoded(M) :-
maplist(\X^(maplist(\Y^(Y = 0
-> write('~')
; write('#')),
X),
nl),
M).
答案 1 :(得分:0)
maplist似乎是建立在这些任务的目的......
encode_map(M) :- maplist(maplist(encode_cell), M).
encode_cell(0) :- write('~').
encode_cell(1) :- write('#').