Lisp – Esercizi vari – Parte Uno

23 05 2007

Giusto per condividere con il resto della rete un po’ di cosette direttamente farina del mio sacco (e di un mio collega), posto degli esercizi in Lisp, fatti in vista del progettone finale!!! ^^”

N.b. WordPress si mangia gli spazzi! Scusatemi! Vabè copiate/incollate il tutto!


; Somma di Nk numero passati in input come lista
; es. (somma `(1 2 3 4))
(defun somma(L)
(cond
((null (CAR L)) 0)
(T (+ (CAR L) (somma (CDR L) )))
)
)


; Somma in profondità arbitraria
(defun sommaLista(L)
; debug stampa della chiamata
; (print L)
(cond
; per l'ultimo elemento della lista
((null (CAR L)) 0)
; si è raggiunti una foglia
((ATOM (CAR L)) (+ (CAR L) (sommaLista (CDR L))))
; doppia ricorsione sulla lista del CAR e eventuale lista del CDR L
(T (+ (sommaLista (CAR L)) (sommaLista (CDR L))))
)
)


; Calcola il fattoriale dell'argomento
(defun fatt(a)
(cond
((= a 0) 1)
(T (* a (fatt (- a 1))))
)
)


; Calcola l'n-mo numero di Fibonacci
(defun fibo(n)
(cond
((eq n 0) 1)
((eq n 1) 1)
(T (+ (fibo (- n 1)) (fibo (- n 2))))
)
)

P.s. Fatemi sapere se per voi vanno bene o se pensate a soluzioni alternative + performanti! 😀

Annunci

Azioni

Information

One response

7 07 2011
fjjf

Per il fattoria ci sono soluzioni migliori in termini di efficienza

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...




%d blogger hanno fatto clic su Mi Piace per questo: