Skip to content

Instantly share code, notes, and snippets.

@blackh
Created January 24, 2012 20:45
Show Gist options
  • Save blackh/1672467 to your computer and use it in GitHub Desktop.
Save blackh/1672467 to your computer and use it in GitHub Desktop.
TD Public
let tri e =
let tmp = ref 0 in
if (e.(0)<e.(2)) then (tmp:=e.(0); e.(0)<-e.(2); e.(2) <- !tmp);
if (e.(1)<e.(0)) then (tmp:=e.(0); e.(0)<-e.(1); e.(1) <- !tmp);
if (e.(2)<e.(1)) then (tmp:=e.(1); e.(1)<-e.(2); e.(2) <- !tmp);
e;;
let echange i j v =
let tmp = ref 0 in
tmp:=v.(i); v.(i)<-v.(j); v.(j)<-(!tmp);
v;;
let min v =
let n = vect_length v in let m = ref v.(0) in
for i=0 to (n-1) do
if (v.(i)<(!m)) then m:=v.(i);
done;
!m;;
let mirroir_vect v =
let n = vect_length v in let w = make_vect n v.(0) in
for i=0 to (n-1) do w.(i) <- v.(n-1-i); done;
w;;
let mirroir_list v =
let n = list_length v in let j = ref [] in let tmp = ref v in
for i=0 to (n-1) do
j:=(hd !tmp)::(!j);
tmp:=(tl !tmp);
done;
j;;
let perm v =
let n = vect_length v in let w = make_vect n v.(0) in
w.(0) <- v.(n-1);
for i = 1 to (n-1) do w.(i) <- v.(i-1); done;
w;;
let perm p v =
let n = vect_length v in let w = make_vect n v.(0) in
for i = 0 to (n-1) do w.((i+p) mod n) <- v.(i); done;
w;;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment