Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; 1-str is a one-character-string from the set [A-Z] or [a-z]
- ; Word is either:
- ; empty
- ; (cons 1-str Word)
- ; List-of-word is either:
- ; (cons Word empty)
- ; (cons Word (List-of-word))
- ; word -> list-of word
- ; returns all possible combinations of word
- (define (arrangements w)
- (cond
- [(empty? w) (list empty)]
- [else (insert-everywhere/in-all-words (first w)
- (arrangements (rest w)))]))
- ; 1str list-of word -> list-of word
- ; inserts 1-str into all positions of all words in list-of-word
- (define (insert-everywhere/in-all-words a-1str a-low)
- (cond
- [(empty? a-low) a-low]
- [else (append (insert-everywhere/in-one-word a-1str (first a-low))
- (insert-everywhere/in-all-words a-1str (rest a-low)))]))
- ; 1str word -> list-of word
- ; inserts 1-str into all positions in word
- (define (insert-everywhere/in-one-word a-1str a-word)
- (cond
- [(empty? a-word) (list (list a-1str))]
- [else (create-combinations (first a-word)
- (insert-everywhere/in-one-word a-1str (rest a-word)))]))
- ; 1-str list-of-word -> list-of-word
- ; create combinations of word in list-of-word
- (define (create-combinations ins-ltr a-low)
- (cond
- [(empty? a-low) a-low]
- [else (append (create-new-words ins-ltr (first a-low) empty)
- (create-combinations ins-ltr (rest a-low)))]))
- ; 1-str word word -> list-of-word
- ; creates new combinations of word
- (define (create-new-words l w str-w)
- (cond
- [(empty? w) (list (cons l str-w))]
- [else (cons (create-new-word (move-letters str-w (first w))
- l
- (rest w))
- (create-new-words l (rest w) (move-letters str-w (first w))))]))
- ; word 1-str word -> word
- ; combines two word and 1-str to form new word
- (define (create-new-word l1 ins-ltr l2)
- (append l1 (list ins-ltr) l2))
- ; word 1-str -> word
- ; appends 1-str to word
- (define (move-letters w1 l1)
- (cond
- [(empty? w1) (cons l1 w1)]
- [else (append w1 (list l1))]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement