Examen LPP

Anuncio
Pregunta 1
(define (alterna-f f1 f2)
(lambda (lista)
(if (null? lista)
‘()
(cons (f1 (car lista))
((alterna-f f2 f1) (cdr lista))))))
Pregunta 2
(define (diff-pt ptree1 ptree2)
(cond
((empty-ptree? ptree1) ptree1)
((leaf-ptree? ptree1)
(if (equal? ptree1 ptree2) '()
(list (cons ptree1 ptree2))))
(else
(append (diff-pt (car ptree1) (car ptree2))
(diff-pt (cdr ptree1) (cdr ptree2))))))
Pregunta 3
(define (anchura-forest forest)
(if (null? forest) 0
(max (length forest)
(anchura-forest (get-next-level forest)))))
(define (get-next-level forest)
(if (null? forest) ‘()
(append (children (car forest))
(get-next-level (cdr forest)))))
Pregunta 4
a)
(define (make-dlist)
(cons '*d-list* '()))
(define (add-dlist! dlist x)
(let ((node-x (cons x dlist)))
(set-cdr! dlist (cons node-x '()))))
b)
(define (insert-dlist! dlist x)
(if (empty-dlist? dlist)
(add-dlist! dlist x)
(let* ((node-x (cons x dlist))
(node-list (cons node-x (cdr dlist))))
(begin
(set-cdr! dlist node-list)
(set-cdr! (car (cdr node-list)) node-list)))))
c)
(define (list-to-dlist lista)
(if (null? lista)
(make-dlist)
(let ((dlist (list-to-dlist (cdr lista))))
(insert-dlist! dlist (car lista))
dlist)))
Pregunta 5
a)
(define (make-fecha dia mes año)
(list dia mes año))
(define (dia-fecha fecha)
(car fecha))
(define (mes-fecha fecha)
(cadr fecha))
(define (año-fecha fecha)
(caddr fecha))
(define (fecha-to-string fecha formato)
(let (proc (get-primitive formato))
(if proc
(proc fecha))))
b)
(define (añadir-formato formato proc)
(put-primitive formato proc))
(define (barras-4-digitos fecha)
(string-append (fecha-dia fecha)
(string-append "/"
(string-append (fecha-mes fecha)
(string-append "/"
(string-append (fecha-año fecha) ""))))))
(añadir-formato 'barras-4-digitos barras-4-digitos)
Pregunta 6
Documentos relacionados
Descargar