Essa aqui é sobre árvores: 14.1.5

0 views
Skip to first unread message

eduardo malaguti

unread,
Apr 14, 2009, 7:01:53 PM4/14/09
to htdp-...@googlegroups.com
Esses são os dados da árvore:

(define-struct child (father mother name date eyes))

;; Oldest Generation:
(define Carl (make-child empty empty 'Carl 1926 'green))
(define Bettina (make-child empty empty 'Bettina 1926 'green))

;; Middle Generation:
(define Adam (make-child Carl Bettina 'Adam 1950 'yellow))
(define Dave (make-child Carl Bettina 'Dave 1955 'black))
(define Eva (make-child Carl Bettina 'Eva 1965 'blue))
(define Fred (make-child empty empty 'Fred 1966 'pink))

;; Youngest Generation:
(define Gustav (make-child Fred Eva 'Gustav 1988 'brown))




;;Exercise 14.1.5.   Develop the function eye-colors, which consumes a family tree node and produces a list of all eye colors in the tree. An eye color may occur more than once in the list.

;;Hint: Use the Scheme operation append, which consumes two lists and produces the concatenation of the two lists. For example:

;;  (append (list 'a 'b 'c) (list 'd 'e))
;;= (list 'a 'b 'c 'd 'e)


;; eye-colors : a-ftree -> list
;; data :
;empty?
;else

;; Example :
;(eye-colors Carl)

;; Definition :
(define (eye-colors a-ftree)
  (cond
    [(empty? a-ftree) empty]
    [else (cond
            [(and (empty? (child-father a-ftree))
                    (empty? (child-mother a-ftree)))
             (list (child-eyes a-ftree))]
            [else (append (list (child-eyes a-ftree))
                                (list (eye-colors (child-father a-ftree)))
                                (list (eye-colors (child-mother a-ftree))))])]))
           
;; Tests :
(eye-colors Carl)
(eye-colors Bettina)
(eye-colors Gustav)

Esse é o resultado dos 3 testes, respectivamente:
(cons 'green empty)
(cons 'green empty)
(cons 'brown (cons (cons 'pink empty) (cons (cons 'blue (cons (cons 'green empty) (cons (cons 'green empty) empty))) empty)))

--
Eduardo "Barbosa" Santaella Malaguti

Renato Dutra Luciano

unread,
Apr 14, 2009, 7:58:35 PM4/14/09
to htdp-...@googlegroups.com
Cara... teu Desgin Recipe tem que ser mais claro. Tens que pensar nos passos que vais fazer antes de começar o codigo. Vale mais a pena começar todo o exercicio de novo do que ficar tentando fazer enxertos no codigo.

1 - passo Identificar se a Arvore é vazia
 1.1 se nao é... entao ja manda pra lista a cor do olho (cons (child-eyes a-ftn)
 1.2 perguntar pra mae (eye-colors (child-mother a-ftree)) - recursividade
 1.3 perguntar pro pai (eye-colors (child-father a-ftree)) - recursividade

Estes sao os passos. Entretanto para criar o elemento na lista exige-se o cons  mais 2 argumentos (por exemplo (cons 'bola empty) 'bola e empty sao argumentos)
Só que só possivel por o (cons (child-eyes a-ftn) mais uma das chamadas (cons (child-eyes a-ftn) (eye-colors (child-mother a-ftn)))
E a chamada do pai??? Ai entra o append
No segundo argumentos da criação do elemento na lista que é o (eye-colors (child-mother a-ftn)) você tem que usar o append e chamar o pai também:

(append (eye-colors (child-mother a-ftree))
              (eye-colors (child-father a-ftree)))

Vai ficar (cons (child-eyes a-ftn) seguido do append como segundo argumento contendo 2 chamadas (pro pai e pra mae)

Faz o teste!




Date: Tue, 14 Apr 2009 20:01:53 -0300
Subject: Essa aqui é sobre árvores: 14.1.5
From: eduardo....@gmail.com
To: htdp-...@googlegroups.com

Imagem de exibição animada? Só com o novo Messenger. Baixe agora!

ebel...@gmail.com

unread,
Apr 15, 2009, 11:05:03 AM4/15/09
to htdp-...@googlegroups.com
Concordo com a opiniao do Renato sobre a analise que voce esta fazendo Eduardo.
O data definition e critico, e vai ficar cada vez mais critico daqui em diante.
Por isso e tao importante pensar a respeito de quais condiçoes o dado vai causar.

--
Eduardo Bellani

www.cnxs.com.br

For small creatures such as we the vastness is bearable only through love. - Carl Sagan

signature.asc

eduardo malaguti

unread,
Apr 15, 2009, 2:09:06 PM4/15/09
to htdp-...@googlegroups.com
Valeu rapeizi!

2009/4/15 <ebel...@gmail.com>
Reply all
Reply to author
Forward
0 new messages