【问题标题】:Drawing trees in Common Lisp在 Common Lisp 中绘制树
【发布时间】:2010-10-27 19:15:22
【问题描述】:

这个问题可能有一个令人尴尬的简单答案,但是在 Common Lisp 中是否有正确的方法来格式化/绘制树?我已经尝试了几本书以及谷歌搜索,但问题似乎落在搜索词的裂缝之间。

提前致谢!

【问题讨论】:

    标签: tree lisp common-lisp


    【解决方案1】:

    你想画什么样的树?

    SDRAW 将 cons 单元结构绘制到终端。类似:Draw Cons Tree

    如果您有McCLIM、CLIM 或 Lisp 机器,则可以调用 CLIM 函数 CLIM:FORMAT-GRAPH-FROM-ROOT 或 CLIM:FORMAT-GRAPH-FROM-ROOTS。

    如果你使用 LispWorks,有一个graph pane

    如果你想画植物,请使用这个:L-Lisp

    【讨论】:

    • 太棒了,SDRAW 正是我想要的:一种表示嵌套 cons 单元格的简洁方式。再次感谢。
    • 什么 - 一个 - 真棒 - 答案。哇。您不仅回答了 OP,还回答了整个 google 搜索者流。
    • 另一个选项是 (ql:quickload :draw-cons-tree)
    【解决方案2】:

    如果您决定使用 GraphViz,请查看http://common-lisp.net/project/cl-graphviz

    【讨论】:

      【解决方案3】:

      近年来,我在 GP 应用程序中使用了lisp2dot(一个生成点命令的 Awk 脚本),但目前它似乎不起作用。每次我用有效的 Lisp 表达式输入它时,它都会返回奇怪的 Dot 文件,其中充满了无意义的错误消息。尽管如此,还是值得一提的。

      【讨论】:

      • 我有机会回来查看lisp2dot,它似乎仍在工作,但要注意函数名称和函数节点的数量,这在 Awk 中可能会很棘手。
      【解决方案4】:

      如果您找不到更好的解决方案,我倾向于发出一个 .dot 文件,然后将其提供给 Graphviz 工具之一(如 dot)。文件格式非常简单,工具可以生成多种格式,包括 PNG、SVG、PostScript 甚至图像映射(用于在网页上创建可点击的图形)。

      如果您希望这些图表供您自己使用(例如:调试)或者您在服务器上生成它们,这种方法可能只适用于您。在客户端应用程序中调用单独的工具可能存在可用性和/或许可问题。

      这实际上并不是一个特定于 common-lisp 的解决方案,但我过去曾在几种语言中使用过这种方法。

      【讨论】:

      • 您好,非常感谢您的回复。我希望直接打印到控制台,但你的建议对于大树来说听起来要灵活得多。再次感谢您的宝贵时间!
      猜你喜欢
      • 1970-01-01
      • 2018-11-26
      • 2016-03-18
      • 2013-01-24
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 2020-08-16
      相关资源
      最近更新 更多