Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang eopl
- ;;Gramática del arbol ternario
- ;; <arbol-ternario> ::= <hoja> numero
- ;; ::= <nodo> simbolo <arbol-ternario> <arbol-ternario> <arbol-ternario>
- ;;Procedimientos constructores
- (define hoja
- (lambda (num)
- (list 'hoja num)
- )
- )
- (define nodo
- (lambda (key hi1 hi2 hi3)
- (list 'nodo key hi1 hi2 hi3)))
- ;;Procedimentos observadores
- ;;Predicados
- (define hoja?
- (lambda (exp)
- (eqv? (car exp) 'hoja)))
- (define nodo?
- (lambda (exp)
- (eqv? (car exp) 'nodo)))
- ;;Extractores
- (define hoja->valor
- (lambda (exp)
- (cadr exp)))
- (define nodo->key
- (lambda (exp)
- (cadr exp)))
- (define nodo->hij1
- (lambda (exp)
- (caddr exp)))
- (define nodo->hij2
- (lambda (exp)
- (cadddr exp)))
- (define nodo->hij3
- (lambda (exp)
- (car (cddddr exp))))
- ;;;Area del programador
- ;;;Ejemplos
- (define suma
- (lambda (arb)
- (cond
- [(hoja? arb) (hoja->valor arb)]
- [(nodo? arb) (+ (suma (nodo->hij1 arb))
- (suma (nodo->hij2 arb))
- (suma (nodo->hij3 arb)))]
- [else (eopl:error "Esto no es un árbol")]
- )))
- (define arbol1
- (nodo 'k
- (nodo 'p (hoja 3) (hoja 5) (hoja 7))
- (nodo 'l (hoja 8) (hoja 6) (hoja 11))
- (hoja 12)
- ))
- #lang eopl
- ;;Gramática del arbol ternario
- ;; <arbol-ternario> ::= <hoja> numero
- ;; ::= <nodo> simbolo <arbol-ternario> <arbol-ternario> <arbol-ternario>
- ;;Procedimientos constructores
- (define hoja
- (lambda (num)
- (lambda (signal)
- (cond
- [(= signal 1) num]
- [(= signal 2) 'hoja]
- [(= signal 3) num]
- [else (eopl:error "Señal no válida")]
- )
- )
- )
- )
- (define nodo
- (lambda (key hi1 hi2 hi3)
- (lambda (signal)
- (cond
- [(= signal 1) (+
- (suma hi1)
- (suma hi2)
- (suma hi3))]
- [(= signal 2) 'nodo]
- [(= signal 3) key]
- [(= signal 4) hi1]
- [(= signal 5) hi2]
- [(= signal 6) hi3]
- [else (eopl:error "Señal no válida")])
- )
- )
- )
- ;;Procedimentos observadores
- ;;Predicados
- (define hoja?
- (lambda (exp)
- (eqv? (exp 2) 'hoja)))
- (define nodo?
- (lambda (exp)
- (eqv? (exp 2) 'nodo)))
- ;;Extractores
- (define hoja->valor
- (lambda (exp)
- (exp 3)))
- (define nodo->key
- (lambda (exp)
- (exp 3)))
- (define nodo->hij1
- (lambda (exp)
- (exp 4)))
- (define nodo->hij2
- (lambda (exp)
- (exp 5)))
- (define nodo->hij3
- (lambda (exp)
- (exp 6)))
- ;;;Area del programador
- ;;;Ejemplos
- (define sumaAntigua
- (lambda (arb)
- (cond
- [(hoja? arb) (hoja->valor arb)]
- [(nodo? arb) (+ (suma (nodo->hij1 arb))
- (suma (nodo->hij2 arb))
- (suma (nodo->hij3 arb)))]
- [else (eopl:error "Esto no es un árbol")]
- )))
- (define suma
- (lambda (arb)
- (arb 1)))
- (define arbol1
- (nodo 'k
- (nodo 'p (hoja 3) (hoja 5) (hoja 7))
- (nodo 'l (hoja 8) (hoja 6) (hoja 11))
- (hoja 12)
- ))
- #lang eopl
- (define-datatype arbol-ternario arbol-ternario?
- (hoja (dato number?))
- (nodo (key symbol?)
- (hi1 arbol-ternario?)
- (hi2 arbol-ternario?)
- (hi3 arbol-ternario?)))
- (define suma
- (lambda (arbol)
- (cases arbol-ternario arbol
- (hoja (dato) dato)
- (nodo (key h1 h2 h3)
- (+
- (suma h1)
- (suma h2)
- (suma h3)))
- )
- )
- )
- (define arbol1
- (nodo 'k
- (nodo 'p (hoja 3) (hoja 5) (hoja 7))
- (nodo 'l (hoja 8) (hoja 6) (hoja 11))
- (hoja 12)
- ))
- ;;Ejercicio
- <cola> := <cola-vacia>
- := <cola-no-vacia> <cola> <int>
- (cola-no-vacia (cola-no-vacia
- (cola-no-vacia
- (cola-no-vacia (cola-vacia) 3)
- 4)
- 5)
- 6)
- ;;top (Devuelve el primero de la cola)
- ;;pop (Devuelve la cola sin el primero)
- ;;suma (suma los elementos de la cola)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement