Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

37 строки
820 B

  1. (import "sets.slime")
  2. (define (make-dfa Q S delta q0 F)
  3. (let ((q q0))
  4. (lambda (s)
  5. (mutate q (delta q s))
  6. `(,(if (set-contains? F q) :accept :fail) ,q))))
  7. (define (delta q s)
  8. (cond (s (case q
  9. (("q0") (case s (("M") "q1")))
  10. (("q1") (case s (("A") "q0")
  11. (("G") "q2")))
  12. (("q2") (case s (("E") "q0")))))
  13. (else q)))
  14. ;; (make-delta
  15. ;; ("q0" :: "M" -> "q1")
  16. ;; ("q1" :: "A" -> "q0"
  17. ;; "G" -> "q1")
  18. ;; ("q2" :: "E" -> "q0"))
  19. (define aut (make-dfa (make-set "q0" "q1" "q2")
  20. (make-set "M" "A" "G" "E")
  21. delta
  22. "q0"
  23. (make-set "q0")))
  24. (printf (aut "M"))
  25. (printf (aut "A"))
  26. (printf (aut "M"))
  27. (printf (aut "G"))
  28. (printf (aut "E"))