Advertisement
Guest User

Untitled

a guest
Jun 11th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 0.77 KB | None | 0 0
  1. #lang racket
  2.  
  3. (require racklog)
  4.  
  5. (define %edge
  6.   (%rel ()
  7.         [('a 'b)]
  8.         [('a 'g)]
  9.         [('b 'c)]
  10.         [('c 'a)]))
  11.  
  12.  
  13. (define %select
  14.   (%rel (x xs y ys)
  15.         [(x (cons x xs) xs)]
  16.         [(y (cons x xs) (cons x ys))
  17.          (%select y xs ys)]))
  18.  
  19. (define %hamilton
  20.   (%rel (x xs y z zs)
  21.         [(x (list y x))]
  22.         [(x (cons x (cons z xs)))
  23.          (%or
  24.           (%edge x z)
  25.           (%edge z x))
  26.          (%hamilton x (cons z xs))]
  27.         [(x (cons y (cons z xs)))
  28.          (%not (%select y xs zs))
  29.          (%not (%= x z))
  30.          (%or
  31.           (%edge y z)
  32.           (%edge z y))
  33.          (%hamilton x (cons z xs))]))
  34.  
  35. (eq? (%which () (%hamilton 'a '(a b c a))) '())
  36. (eq? (%which () (%hamilton 'a '(a b a g a))) #f)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement