anagrams.scm 323 B

123456789101112
  1. ;; using a trie, tries to produce a word made out of given letters
  2. (define (anagrams t letters acc)
  3. (if (null? letters)
  4. (list (reverse acc))
  5. (select letters '()
  6. (lambda (letter rest)
  7. (let ((t^ (lookup-trie t (list letter))))
  8. (if t^
  9. (anagrams t^ rest (cons letter acc))
  10. '()))))))