O procedimento junta-ordenado tem dois parâmetros, crescente-1 e crescente-2, que são duas listas com elementos numéricos ordenados do menor para o maior. Sabe-se que junta-ordenado devolve uma lista cujos elementos são os elementos das listas dadas, em ordem crescente.
; Resolvido por: Eduardo Pinto (eduardo.pinto@fe.up.pt) (define junta-ordenado (lambda (crescente-1 crescente-2) (cond ((null? crescente-1) crescente-2) ((null? crescente-2) crescente-1) ((<= (car crescente-1) (car crescente-2)) (cons (car crescente-1) (junta-ordenado (cdr crescente-1) crescente-2))) ((>= (car crescente-1) (car crescente-2)) (cons (car crescente-2) (junta-ordenado (cdr crescente-2) crescente-1))))))
Exemplo:
> (junta-ordenado '(1 2 7 8) '(1 3 4 5 9)) (1 1 2 3 4 5 7 8 9)
O procedimento junta-ordenado-sem-repetidos, com os mesmo parâmetros que junta-ordenado, não inclui elementos repetidos na lista que devolve.
; Resolvido por: Eduardo Pinto (eduardo.pinto@fe.up.pt) (define junta-ordenado-sem-repetidos (lambda (crescente-1 crescente-2) (cond ((null? crescente-1) crescente-2) ((null? crescente-2) crescente-1) ((< (car crescente-1) (car crescente-2)) (cons (car crescente-1) (junta-ordenado-sem-repetidos (cdr crescente-1) crescente-2))) ((> (car crescente-1) (car crescente-2)) (cons (car crescente-2) (junta-ordenado-sem-repetidos (cdr crescente-2) crescente-1))) ((= (car crescente-1) (car crescente-2)) (cons (car crescente-2) (junta-ordenado-sem-repetidos (cdr crescente-1) (cdr crescente-2)))))))
Exemplo:
> (junta-ordenado-sem-repetidos '(1 2 7 8) '(1 3 4 5 9)) (1 2 3 4 5 7 8 9)