2
我想打印一个9x9网格,其中显示了行和列的编号,我希望元素左对齐。 像这样:Prolog - 格式化网格表的输出
> L\C | 1 | 2 | 3 | ... | 9 |
> ---------------------------
> 1 | a | b | a | ... | b |
> ---------------------------
> 2 | a | b | a | ... | b |
> ...
> 9 | a | b | a | ... | b |
表的内容具有可变大小(元素的最大尺寸是9字符的),所以如果没有使用标签\ t表可能没有正确对齐像这样:
> L\C | 1 | 2 | 3 | ... | 9 |
> ---------------------------
> 1 | aaaaa | bb | aa | ... | bbbbb |
> ---------------------------
> 2 | a | bbbbb | aaa | ... | bb |
> ...
> 9 | aaaaaaa | bbbb | a | ... | bb |
我保存在lists.Like这个名单表的内容:
initialBoard([[sunTile, free, free, free, sunTile, free, free, free, sunTile],
[free, sunTile, free, free, free, free, free, sunTile, free],
[free, free, sunTile, free, free, free, sunTile, free, free],
[free, free, free, free, free, free, free, free, free],
[sunTile, free, free, free, free, free, free, free, sunTile],
[free, free, free, free, free, free, free, free, free],
[free, free, sunTile, free, free, free, sunTile, free, free],
[free, sunTile, free, free, free, free, free, sunTile, free],
[sunTile, free, free, free, sunTile, free, free, free, sunTile]]).
对于我在prolog文档中研究的内容,我必须使用格式/ 2。
任何想法如何做到这一点,简单而快速?
您是否详细阅读过'format/2'格式的文档,特别是格式参数?我快速浏览了SCISTUS文档,并为每个格式字符串选项提供了大量示例。尤其要注意'〜N |','〜N +'和'〜Nt',列对齐给出了几个例子。我认为这很清楚。您是否在Prolog命令界面中尝试了'format/2'来查看它的行为? – lurker
@lurker是的,我确实尝试过!但我无法弄清楚如何正确地做到这一点。 我试图用制表符打印一行元素: 'format('|〜s〜t-5 ||〜s〜t〜5 |',[free,free])' 这是一个错误,我只是不明白这个谓词 –
你将需要让你的列足够宽,以保持你想要的最大值。另外,你显示的'format'('format('|〜s〜t-5 ||〜s〜t〜5 |',[free,free])。)有语法错误:'-5'应该是'〜5'。您需要准确显示您在问题中所尝试的内容(编辑您的问题以添加信息),并准确显示您看到的错误。您还需要准确显示第二个示例在正确完成时的样子(*例如*,列应该居中还是左对齐或?)。 – lurker