Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,33 @@
|
|||
#lang racket
|
||||
|
||||
(struct link (len letters))
|
||||
|
||||
(define (link-add li n letter)
|
||||
(link (+ n (link-len li))
|
||||
(cons letter (link-letters li))))
|
||||
|
||||
(define (memoize f)
|
||||
(local ([define table (make-hash)])
|
||||
(lambda args
|
||||
(dict-ref! table args (λ () (apply f args))))))
|
||||
|
||||
(define scs/list
|
||||
(memoize
|
||||
(lambda (x y)
|
||||
(cond
|
||||
[(null? x)
|
||||
(link (length y) y)]
|
||||
[(null? y)
|
||||
(link (length x) x)]
|
||||
[(eq? (car x) (car y))
|
||||
(link-add (scs/list (cdr x) (cdr y)) 1 (car x))]
|
||||
[(<= (link-len (scs/list x (cdr y)))
|
||||
(link-len (scs/list (cdr x) y)))
|
||||
(link-add (scs/list x (cdr y)) 1 (car y))]
|
||||
[else
|
||||
(link-add (scs/list (cdr x) y) 1 (car x))]))))
|
||||
|
||||
(define (scs x y)
|
||||
(list->string (link-letters (scs/list (string->list x) (string->list y)))))
|
||||
|
||||
(scs "abcbdab" "bdcaba")
|
||||
Loading…
Add table
Add a link
Reference in a new issue