[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.lisp

Re: Strings

William James

10/2/2015 9:28:00 AM

Pascal Bourguignon wrote:

> (defun format-columns (column-width column-data)
> (format nil "~{~VA~}" (mapcar (function list) column-width column-data)))
>
> (list (format-columns '(10 4 6 8) '("aaaaaaa" "bb" "cccc" "dddddd"))
> (format-columns '(10 4 6 8) '("aaaa" "bbb" "cc" "dd")))
>
> ("aaaaaaa bb cccc dddddd "
> "aaaa bbb cc dd ")

Why do you need to specify the widths?
Just calculate them.

MatzLisp (Ruby):

def form *lists
widths = lists.transpose.map{|col| col.map(&:size).max}
puts lists.map{|row| row.zip(widths).map{|s,w| s.ljust(w)}.join " "}
end

form( ["aaaaaaa", "bb", "cccc", "dddddd"],
["aaaa", "bbb", "cc", "dd"],
["aaa", "bbbb", "ccc", "dddd"])

aaaaaaa bb cccc dddddd
aaaa bbb cc dd
aaa bbbb ccc dddd

--
Man is a social animal just like ants or bees or wolves. All have their living
space, which they defend to the very end. --- Kai Murros