Advertisement
k0mZ

Untitled

Dec 11th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1.  
  2. (defparameter *mapOldToNew* '())
  3.  
  4. (defun var? (s) (equal #\? (char (symbol-name s) 0)))
  5.  
  6. (defun createNewClausule (oldClausule)
  7. (cond
  8. ((null oldClausule)
  9. (progn
  10. (setq *mapoldtonew* '())
  11. '()))
  12. (t (cons (processClausule (car oldClausule)) (createNewClausule (cdr oldClausule)) ))
  13. ))
  14.  
  15.  
  16. (defun processClausule (clausule)
  17. (cond
  18. ((null clausule) '())
  19. ((not (var? (car clausule))) (cons (car clausule) (processClausule (cdr clausule)) ))
  20. (t (cond
  21.  
  22. ;; cold start for the symbol
  23. ((null (assoc (car clausule) *mapOldtonew* :test #'equal))
  24.  
  25. (progn
  26.  
  27. (let*
  28. (
  29. (newSymbol (list (car clausule) (gensym (symbol-name (car clausule)) )))
  30. )
  31. (setq *mapoldtonew* (cons newSymbol *mapOldtonew*))
  32. (cons (cadr newSymbol) (processClausule (cdr clausule)))
  33. ))
  34. )
  35. ;; new local symbol for this clausule
  36. ((consp (assoc (car clausule) *mapoldtonew* :test #'eql))
  37. (cons (cadr (assoc (car clausule) *mapoldtonew* :test #'eql))
  38. (processClausule (cdr clausule))
  39. )
  40. ))
  41. )))
  42.  
  43.  
  44. (defun replaceWithDiffVariables (clausuleSet)
  45. (cond
  46. ((null clausuleSet) '())
  47. (t (cons (createNewClausule (car clausuleSet))
  48. (replaceWithDiffVariables (cdr clausuleSet))) )
  49. ))
  50.  
  51.  
  52. (setq clausuleSet1
  53. '(
  54. ((not Hrana ?x) (Voli Sasha ?x))
  55. ((not Jede Srdjan ?x) (Jede Ceca ?x))
  56. ((not Jede ?x ?y) (Otruje_se ?x ?y) (Hrana ?y))
  57. ))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement