All pastes #383255 Raw Edit

Stuff

public text v1 · immutable
·published 2007-03-06 06:02 UTC
rendered paste body
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  contract: encontra_substring : string string - > boolean

;;  pourpose: descobrir se uma determinada string ├® substring de outra

;; example: 
;Welcome to DrScheme, version 360.
;Language: Standard (R5RS).
;> (encontra_substring "cat" "t")
;#t
;> (encontra_substring "cat" "s")
;#f
;> 

;; definition:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (encontra_substring substring1 string1)
   (cond((< (string-length substring1) (string-length string1))#f)
        ((string=? (substring substring1 0 (string-length string1)) string1)#t)
        (else (encontra_substring (substring substring1 1) string1))
    )
 )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  contract: substitui_substring : substring1 substring2 string1 string2 - > string

;;  pourpose: descobrir se uma determinada string &#9500;® substring de outra e substitu&#9500;¡-la
;;            foi usada a fun&#9500;º&#9500;úo encontra_substring como modelo, alterando-se o resultado
;;            das verifica&#9500;º&#9500;Áes.

;; example: 
;Welcome to DrScheme, version 360.
;Language: Standard (R5RS).
;> (substitui_substring "cat" "" "a" "o")
;"cot"
;> 

;; definition:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (substitui_substring substring1 substring2 string1 string2)
   (cond((< (string-length substring1) (string-length string1)) 
              (string-append substring2 substring1)
        )
        ((string=? (substring substring1 0 (string-length string1)) string1)
              (string-append substring2 string2 (substring substring1 (string-length string1)))
        )
        (else (substitui_substring (substring substring1 1) (string-append substring2 (substring substring1 0 1)) string1 string2))
    )
 )


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  contract: compara_listas : lista(string) lista(string) - > boolean

;;  pourpose: descobrir se uma lista &#9500;® id&#9500;¬ntica &#9500;á outra por compara&#9500;º&#9500;úo e retornar 
;;            booleano para a resposta

;; example: 
;Welcome to DrScheme, version 360.
;Language: Standard (R5RS).
;> (compara_listas '("c") '("c" "b"))
;#f
;> (compara_listas '("c") '("c"))
;#t

;; definition:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (compara_listas lista1 lista2)
    (cond ((and (null? lista1) (null? lista2)) #t)
          ((and (not (null? lista1)) (null? lista2)) #f)
          ((and (null? lista1) (not (null? lista2))) #f)
          ((string=? (car lista1) (car lista2))
               (compara_listas (cdr lista1) (cdr lista2))
          )
          (else #f)
    )
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  contract: substitui_substring : substring1 substring2 string1 string2 - > string

;;  pourpose: descobrir se uma determinada string &#9500;® substring de outra e substitu&#9500;¡-la
;;            foi usada a fun&#9500;º&#9500;úo encontra_substring como modelo, alterando-se o resultado
;;            das verifica&#9500;º&#9500;Áes.

;; example: 
;Welcome to DrScheme, version 360.
;Language: Standard (R5RS).
;> (substitui_substring "cat" "" "a" "o")
;"cot"
;> 

;; definition:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (define regra  '( ("s"."M") ("M"."aMa") ("M"."bMb") ("M"."aa") ("M"."bb") ("M"."a") ("M"."b") ))
(define (gera_cadeia cadeia_entrada cadeia_saida)
   (cond((compara_listas (cadeia_entrada) (cadeia_saida)) (cadeia_entrada))
        (else (begin 
             (= cadeia_entrada cadeia_saida)
             (= cadeia_saida (troca_strings cadeia_entrada)
             (gera_cadeia cadeia_entrada cadeia_saida)
         ))
   )
)

  
(define (troca_strings entradas)
   (for-each (substitui_substring (car entradas) "" 
             
)