Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,10 @@
|
|||
let longest xs ys = if List.length xs > List.length ys then xs else ys
|
||||
|
||||
let rec lcs a b = match a, b with
|
||||
[], _
|
||||
| _, [] -> []
|
||||
| x::xs, y::ys ->
|
||||
if x = y then
|
||||
x :: lcs xs ys
|
||||
else
|
||||
longest (lcs a ys) (lcs xs b)
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
let lcs xs ys =
|
||||
let cache = Hashtbl.create 16 in
|
||||
let rec lcs xs ys =
|
||||
try Hashtbl.find cache (xs, ys) with
|
||||
| Not_found ->
|
||||
let result =
|
||||
match xs, ys with
|
||||
| [], _ -> []
|
||||
| _, [] -> []
|
||||
| x :: xs, y :: ys when x = y ->
|
||||
x :: lcs xs ys
|
||||
| _ :: xs_rest, _ :: ys_rest ->
|
||||
let a = lcs xs_rest ys in
|
||||
let b = lcs xs ys_rest in
|
||||
if (List.length a) > (List.length b) then a else b
|
||||
in
|
||||
Hashtbl.add cache (xs, ys) result;
|
||||
result
|
||||
in
|
||||
lcs xs ys
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
let lcs xs' ys' =
|
||||
let xs = Array.of_list xs'
|
||||
and ys = Array.of_list ys' in
|
||||
let n = Array.length xs
|
||||
and m = Array.length ys in
|
||||
let a = Array.make_matrix (n+1) (m+1) [] in
|
||||
for i = n-1 downto 0 do
|
||||
for j = m-1 downto 0 do
|
||||
a.(i).(j) <- if xs.(i) = ys.(j) then
|
||||
xs.(i) :: a.(i+1).(j+1)
|
||||
else
|
||||
longest a.(i).(j+1) a.(i+1).(j)
|
||||
done
|
||||
done;
|
||||
a.(0).(0)
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
let list_of_string str =
|
||||
let result = ref [] in
|
||||
String.iter (fun x -> result := x :: !result)
|
||||
str;
|
||||
List.rev !result
|
||||
|
||||
let string_of_list lst =
|
||||
let result = String.create (List.length lst) in
|
||||
ignore (List.fold_left (fun i x -> result.[i] <- x; i+1) 0 lst);
|
||||
result
|
||||
Loading…
Add table
Add a link
Reference in a new issue