首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prolog打印出二维表

Prolog打印出二维表
EN

Stack Overflow用户
提问于 2010-12-20 20:03:10
回答 1查看 1.4K关注 0票数 0

我有一个正方形的起点和终点,也是我不能去的地方。我的节目必须找到一种方法来完成:

代码语言:javascript
复制
ar_galima([], _, _):-!.
ar_galima([Prad|Galas],Kelias, X) :- not(Prad == X), not(member(X, Kelias)), ar_galima(Galas, Kelias, X). 

gener(Stac_M, Stac_K, k(A,B), k(Y,B)) :-  Y is A + 1, Y > 0, Y =< Stac_M, B =< Stac_K.
gener(Stac_M, Stac_K, k(A,B), k(Y,B)) :-  Y is A - 1, Y > 0, Y =< Stac_M, B =< Stac_K.
gener(Stac_M, Stac_K, k(A,B), k(A,Y)) :-  Y is B + 1, Y > 0, Y =< Stac_K, A =< Stac_M.
gener(Stac_M, Stac_K, k(A,B), k(A,Y)) :-  Y is B - 1, Y > 0, Y =< Stac_K, A =< Stac_M.

paieska(_, _,_,Tikslas,Tikslas,[], _):-!.
paieska(Stac_M, Stac_K, Draudziama, Prad, Tikslas, [K|Kelias], Kelias2) :- 
      gener(Stac_M, Stac_K, Prad, K), ar_galima(Draudziama, Kelias2, K), 
      paieska(Stac_M, Stac_K, Draudziama, K, Tikslas, Kelias, [K|Kelias2]).

trasa(Ilgis, Aukstis, Draudziama, k(X,Y), Tikslas, Kelias) :-
      paieska(Ilgis,Aukstis, Draudziama, k(X,Y), Tikslas,Kelias, []).

我找到了要完成的路线,现在我把路由(一个列表)卡在终端中的二维表中(嗯,一个简单的路径图形显示)。

列表输出示例:X = [k(2, 1), k(3, 1), k(4, 1), k(4, 2), k(4, 3), k(4, 4)] ;

有人能建议我如何将二维表输出到终端吗?

编辑:

X应打印如下:

代码语言:javascript
复制
 + + + *
 + + + *
 + + + *
 + * * *

印刷笔录可能如下所示:

printTable(N,M,X) :- .

其中N是行数,M是列数,X是坐标列表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-20 22:29:30

你可以这样做:

代码语言:javascript
复制
print_table(H, W, L):-
  succ(W, W1),
  print_table(4, 1, H, W1, L).

print_table(1, W, _, W, _):- !.
print_table(Y, W, H, W, L):-
  succ(NY, Y),
  nl,
  !,
  print_table(NY, 1, H, W, L).
print_table(Y, X, H, W, L):-
  (member(k(X, Y), L)->C='* ';C='+ '),
  write(C),
  succ(X, NX),
  !,
  print_table(Y, NX, H, W, L).
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4493404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档