2009-05-20 22 views
14

Questa domanda probabilmente ha una risposta imbarazzante, ma esiste un modo giusto per formattare/disegnare alberi in Common Lisp? Ho provato alcuni libri oltre a cercare su Google, ma il problema sembra cadere tra le crepe dei termini di ricerca.Disegno di alberi in Common Lisp

Grazie in anticipo!

risposta

26

Che tipo di alberi si vuole disegnare?

SDRAW disegna le strutture di cella su un terminale. Simile: Draw Cons Tree.

Se si dispone di McCLIM, CLIM o Macchina Lisp, è possibile chiamare la funzione CLIM CLIM:FORMAT-GRAPH-FROM-ROOT o CLIM: FORMAT-GRAPH-FROM-ROOTS.

Se si utilizza LispWorks, c'è un graph pane.

Se si desidera disegnare piante utilizzare questo: L-Lisp.

plant drawing

+1

Impressionante, SDRAW era esattamente quello che stavo cercando: un modo pulito per rappresentare le celle di cellule nidificate. Grazie ancora. – wvoq

+0

COSA - AN - IMPRESSIONANTE - RISPOSTA. Wow. Non hai risposto solo OP ma un intero flusso di utenti di Google. – MaiaVictor

+1

Un'altra opzione è (ql: quickload: draw-cons-tree) – Baggers

4

Se non si trova una soluzione migliore, sarei propenso a emettere un file .dot e quindi inviarlo a uno degli strumenti Graphviz (come il punto). Il formato del file è molto semplice e gli strumenti possono generare una varietà di formati tra cui PNG, SVG, PostScript e persino mappe di immagini (per creare grafici cliccabili su pagine Web).

Questo approccio probabilmente funziona solo per te se vuoi questi grafici per uso personale (ad esempio: debugging) o li stai generando su un server. La chiamata a uno strumento separato in un'app client potrebbe avere problemi di usabilità e/o di licenza.

Questa soluzione non è propriamente comune, ma ho utilizzato questo approccio da alcune lingue in passato.

+0

Ciao, grazie mille per la risposta. Speravo di stampare direttamente sulla console, ma il tuo suggerimento sembra molto più flessibile per alberi di grandi dimensioni. Grazie ancora per il tuo tempo! – wvoq

1

ho usato lisp2dot (uno script awk che genera i comandi Dot) negli ultimi anni nelle applicazioni medico di famiglia, ma al momento non sembra funzionare. Ogni volta che lo alimento con un'espressione Lisp valida, restituisce strani file Dot con messaggi di errore senza senso. Tuttavia, vale la pena menzionarlo.

+0

Ho avuto l'opportunità di controllare [lisp2dot] (http://www.cs.ucl.ac.uk/staff/W.Langdon/lisp2dot) e sembra ancora funzionare, ma fai attenzione ai nomi delle funzioni e all'aritmo dei nodi di funzione che possono essere complicati in Awk. – oakenshield1