Advertisement
Guest User

xdddd

a guest
Mar 27th, 2017
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. #lang racket
  2.  
  3. (define tlsyst.angle
  4. (lambda (lsystem)
  5. ((lsystem "get-angle"))))
  6.  
  7. (define tlsyst.lsystem
  8. (lambda (_axiom _prod-rules _prod-rules-proba _term-rules _term-rules-proba _angle)
  9. (define axiom _axiom)
  10. (define prod-rules _prod-rules)
  11. (define prod-rules-proba _prod-rules-proba)
  12. (define term-rules _term-rules)
  13. (define term-rules-proba _term-rules-proba)
  14. (define angle _angle)
  15. (define lsystem
  16. (lambda (method)
  17. (define get-axiom
  18. (lambda () axiom))
  19. (define get-prod-rules
  20. (lambda () prod-rules))
  21. (define get-prod-rules-proba
  22. (lambda () prod-rules-proba))
  23. (define get-term-rules
  24. (lambda () term-rules))
  25. (define get-term-rules-proba
  26. (lambda () term-rules-proba))
  27. (define get-angle
  28. (lambda () angle))
  29. (if (equal? method "get-axiom")
  30. get-axiom
  31. (if (equal? method "get-prod-rules")
  32. get-prod-rules
  33. (if (equal? method "get-prod-rules-proba")
  34. get-prod-rules-proba
  35. (if (equal? method "get-term-rules")
  36. get-term-rules
  37. (if (equal? method "get-term-rules-proba")
  38. get-term-rules-proba
  39. (if (equal? method "get-angle")
  40. get-angle
  41. (null)))))))
  42. lsystem))
  43.  
  44. (define lsystem-rules-mapping
  45. (lambda (rules rules-proba string)
  46. (define mapping-string string)
  47. (define is-special-char "true")
  48.  
  49. (if (not (equal? string ""))
  50. (begin
  51. (for ([rule rules])
  52. (if (equal? (substring string 0 1) (car rule))
  53. (begin
  54. (set! is-special-char "false")
  55. (set! mapping-string
  56. (string-append (cdr rule) (lsystem-rules-mapping rules (substring string 1)))))
  57. null))
  58. (if (equal? is-special-char "true")
  59. (set! mapping-string
  60. (string-append (substring string 0 1) (lsystem-rules-mapping rules (substring string 1))))
  61. null)
  62. mapping-string)
  63. "")))
  64.  
  65. (define lsystem.generate-string
  66. (lambda (lsystem order)
  67. (define prod-string ((lsystem "get-axiom"))) ; default production string value
  68. (for ([i order]) ; loops n times the production rule(s) (mapping)
  69. (set! prod-string (lsystem-rules-mapping ((lsystem "get-prod-rules")) prod-string)))
  70. (lsystem-rules-mapping ((lsystem "get-term-rules")) prod-string))) ; termination rule(s) (mapping)
  71.  
  72. (define lsystem (tlsyst.lsystem
  73. "A-B[x]-A>[]" (list (cons "A" "AB") (cons "B" "BB"))
  74. (list (cons "B" "B") (cons "A" "A"))
  75. 60))
  76.  
  77. (lsystem.generate-string lsystem 2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement