A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
|
|
@ -0,0 +1,7 @@
|
|||
longest xs ys = if length xs > length ys then xs else ys
|
||||
|
||||
lcs [] _ = []
|
||||
lcs _ [] = []
|
||||
lcs (x:xs) (y:ys)
|
||||
| x == y = x : lcs xs ys
|
||||
| otherwise = longest (lcs (x:xs) ys) (lcs xs (y:ys))
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
import Data.Array
|
||||
|
||||
lcs xs ys = a!(0,0) where
|
||||
n = length xs
|
||||
m = length ys
|
||||
a = array ((0,0),(n,m)) $ l1 ++ l2 ++ l3
|
||||
l1 = [((i,m),[]) | i <- [0..n]]
|
||||
l2 = [((n,j),[]) | j <- [0..m]]
|
||||
l3 = [((i,j), f x y i j) | (x,i) <- zip xs [0..], (y,j) <- zip ys [0..]]
|
||||
f x y i j
|
||||
| x == y = x : a!(i+1,j+1)
|
||||
| otherwise = longest (a!(i,j+1)) (a!(i+1,j))
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
*Main> lcs "thisisatest" "testing123testing"
|
||||
"tsitest"
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
import Data.List
|
||||
|
||||
longest xs ys = if length xs > length ys then xs else ys
|
||||
|
||||
lcs xs ys = head $ foldr(\xs -> map head. scanr1 f. zipWith (\x y -> [x,y]) xs) e m where
|
||||
m = map (\x -> flip (++) [[]] $ map (\y -> [x | x==y]) ys) xs
|
||||
e = replicate (length ys) []
|
||||
f [a,b] [c,d]
|
||||
| null a = longest b c: [b]
|
||||
| otherwise = (a++d):[b]
|
||||
Loading…
Add table
Add a link
Reference in a new issue