joseph
Utente Master
Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
Inserito il - 14 novembre 2010 : 14:56:34
|
Rimanendo nel campo dell'ottimizzazione del codice, vi allego altre 2 modi (non sono farina del mio sacco) per spezzare (splittare) una lista generica in sottoliste di determinata lunghezza (in particolare una lista di coordinate in gruppi di 3), il primo un po' elaborato, il secondo molto più stringato. +++++++++ (defun SPLIT (elst n) (if elst (cons (sublist elst 0 n) (split (sublist elst n nil) n))))
(defun SUBLIST (lst start lung / n r) (if (or ( not lung) (< (- (length lst) start) lung)) (setq lung (- (length lst) start)) ) (setq n (+ start lung)) (repeat lung (setq r (cons (nth (setq n (1- n)) lst) r )) )) +++++++++++++++++
(defun parse_list (data n / item new) (foreach element (reverse data) (setq item (cons element item)) (if (= (length item) n) (setq new (cons item new) item nil) ) ) new ) +++++++++++++++ In particolare, se è proprio una lista di punti 3D, allora si può optare per:
(defun 3d-coord->pt-lst (lst) (if lst (cons (list (car lst) (cadr lst) (caddr lst)) (3d-coord->pt-lst (cdddr lst)) ) ) )
Buona Domenica Joseph |
Modificato da - joseph in data 14 novembre 2010 15:46:54 |
|
|