Advertisement
JuanFelipeArango28

Punto 2 del taller completado

Sep 15th, 2020
1,850
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 6.97 KB | None | 0 0
  1. (define-struct arbol (valor izq der))
  2. (define arbol3 (make-arbol 5
  3.                            (make-arbol 10
  4.                                        (make-arbol 2
  5.                                                    (make-arbol 4
  6.                                                                empty
  7.                                                                empty)
  8.                                                    (make-arbol 8
  9.                                                                empty
  10.                                                                empty))
  11.                                        (make-arbol 6
  12.                                                    (make-arbol 3
  13.                                                                empty
  14.                                                                empty)
  15.                                                    empty))
  16.                            (make-arbol 30
  17.                                        (make-arbol 15
  18.                                                    empty
  19.                                                    empty)
  20.                                        (make-arbol 25
  21.                                                    (make-arbol 1
  22.                                                                empty
  23.                                                                empty)
  24.                                                    (make-arbol 9
  25.                                                                empty
  26.                                                                empty)))
  27.                                                    
  28.                                                    )
  29.   )
  30.  
  31.  
  32. (define arbol1 (make-arbol 20
  33.                            (make-arbol 10
  34.                                        (make-arbol 5 empty
  35.                                                    (make-arbol 7 empty empty)
  36.                                                    )
  37.                                        empty)
  38.                            (make-arbol 24
  39.                                        (make-arbol 22 empty empty)
  40.                                        (make-arbol 30 empty empty))))
  41.  
  42. (define arbol2 (make-arbol 20
  43.                   (make-arbol 10
  44.                      (make-arbol 5 empty
  45.                          (make-arbol 7 empty empty)
  46.                                                    )
  47.                      empty)
  48.                   (make-arbol 24
  49.                       (make-arbol 22 empty empty)
  50.                       (make-arbol 30 empty empty))))
  51. (define arbol5
  52.   (make-arbol 9
  53.               (make-arbol 8
  54.                           (make-arbol 7
  55.                                       (make-arbol 12
  56.                                                   empty
  57.                                                   empty)
  58.                                       (make-arbol 13
  59.                                                   empty
  60.                                                   empty))
  61.                           (make-arbol 11
  62.                                       (make-arbol 5
  63.                                                   empty
  64.                                                   empty)
  65.                                       (make-arbol 6
  66.                                                   empty
  67.                                                   empty))
  68.                           )
  69.              
  70.               (make-arbol 10
  71.                           (make-arbol 11
  72.                                       (make-arbol 15
  73.                                                   empty
  74.                                                   empty)
  75.                                       (make-arbol 19
  76.                                                   empty
  77.                                                   empty))
  78.                           (make-arbol 19
  79.                                       (make-arbol 15
  80.                                                   empty
  81.                                                   empty)
  82.                                       (make-arbol 0
  83.                                                   empty
  84.                                                   empty))
  85.                           )
  86.               )
  87.   )
  88. (define lista1 (list 1 2 3 4 5 6))
  89. (define lista2 (list 3 6 9 12))
  90. (define lista3 (list 5 10 2 4 8 6 3 30 15 25 1 9))
  91. ;Primer Punto
  92. ;Autores: Juan Felipe Arango Guzman, 202060066.  Diego Fernando Llanos Mondragón, 202060029. Juan Sebastian Grajales Samudio, 202059897.
  93. ;Fecha: 14/09/2020
  94. ;Contrato: iguales: arbol, arbol -> booleano
  95. ;Proposito: identificar si dos arboles tienen los mismos campos
  96. ;Ejemplos:
  97. ;(iguales (preorden arbol1) (preorden arbol2)) #true
  98. ;(iguales (preorden arbol1) (preorden arbol3)) #false
  99. ;(iguales (preorden arbol3) (preorden arbol5)) #false
  100. ;(iguales (preorden arbol5) (preorden arbol5)) #true
  101. ;Definiciones:
  102. (define (iguales arb1 arb2)
  103.     (cond
  104.        [(and (empty? arb1) (empty? arb2)) #T]
  105.        [(or (empty? arb1) (empty? arb2)) #F]
  106.        [(equal? (first arb1)  (first arb2)) (iguales (rest arb1) (rest arb2))]
  107.        [else #F]
  108.    )
  109. )
  110. ;Contrato: preorden: arbol-> lista
  111. (define (preorden arbol)
  112.   (cond
  113.     [(empty? arbol) empty]
  114.     [else (append
  115.            (cons (arbol-valor arbol) empty)
  116.            (preorden (arbol-izq arbol))
  117.            (preorden (arbol-der arbol))
  118.            )]))
  119. ;Pruebas:
  120. (check-expect (iguales (preorden arbol1) (preorden arbol2)) #true)
  121. (check-expect(iguales (preorden arbol1) (preorden arbol3)) #false)
  122. (check-expect(iguales (preorden arbol3) (preorden arbol5)) #false)
  123. (check-expect(iguales (preorden arbol5) (preorden arbol5)) #true)
  124.  
  125.  
  126.  
  127. ;Segundo Punto
  128. ;Autores: Juan Felipe Arango Guzman, 202060066. Diego Fernando Llanos Mondragon, .
  129. ;Juan Sebastian Grajales Samudio; .
  130. ;Fecha: 14/09/2020
  131. ;Contrato: contener: listanumerica, arbol -> booleano
  132. ;Proposito: Determinar si los elementos de una lita estan contenidos dentro de un arbol
  133. ;Ejemplos:
  134. ;(comparar lista1 (preorden arbol3)) #true
  135. ;(comparar lista2 (preorden arbol3)) #false
  136. ;(comparar lista3 (preorden arbol3)) #true
  137. ;Definiciones:
  138. (define (contener lst arb)
  139.   (cond
  140.     [(empty? lst)#T]
  141.     [(conteneraux arb (first lst))
  142.      (contener (rest lst) arb)]
  143.     [(not(conteneraux arb (first lst)))
  144.      #F]
  145.     )
  146.   )
  147. ;Contrato: compararaux: lst, num -> booleano
  148. (define (conteneraux lst num)
  149.   (cond
  150.     [(empty? lst) #F]
  151.     [(equal? (first lst) num) #T]
  152.     [else (conteneraux (rest lst) num)]
  153.     )
  154.   )
  155. ;Contrato: preorden: arbol-> lista
  156. ; (define (preorden arbol)
  157. ;   (cond
  158. ;     [(empty? arbol) empty]
  159. ;     [else (append
  160. ;            (cons (arbol-valor arbol) empty)
  161. ;            (preorden (arbol-izq arbol))
  162. ;            (preorden (arbol-der arbol))
  163. ;            )]))
  164. ; Dejamos esta comentada porque daria problemas ya que esta definida previamente
  165.  
  166. ;Pruebas:
  167. (check-expect (contener lista1 (preorden arbol3)) #true)
  168. (check-expect (contener lista2 (preorden arbol3)) #false)
  169. (check-expect (contener lista3 (preorden arbol3)) #true)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement