Skip to content

Instantly share code, notes, and snippets.

View kunishi's full-sized avatar

Takeo Kunishima kunishi

View GitHub Profile
@kunishi
kunishi / 2007_asia_b.sml
Created January 29, 2014 10:25
ICPC 2007 Asia Region, Problem B
exception NotFoundException
(*
fun get_primes n =
let
open Array
fun check array =
let
fun check_one n array =
if not (sub (!array, n)) then ()
@kunishi
kunishi / 2007_asia_a.sml
Created January 29, 2014 10:24
ICPC 2007 Asia Region, Problem A
fun remove_a_stone vec i =
let
open VectorSlice
val size = Vector.length vec - 1
val newvec =
if i = 0 then vector (slice (vec, 1, SOME size))
else if i = size then vector (slice (vec, 0, SOME size))
else concat [slice (vec, 0, SOME i),
slice (vec, i+1, SOME (size-i))]
in
(define factorial
(lambda (n)
(if (= n 0)
1
(* n (factorial (- n 1))))))
val sqrt = Math.sqrt;
fun simpleMap(f, nil) = nil
| simpleMap(f, x::xs) = f(x) :: simpleMap(f, xs);
fun vec_length(L) = simpleMap(fn (x, y) => sqrt(x * x + y * y), L);
val sqrt = Math.sqrt;
fun vec_length(nil) = nil
| vec_length((x, y)::zs) = sqrt(x * x + y * y)::vec_length(zs);
fun square(x:real) = x*x;
fun plus(x:real, y) = x+y;
fun length(nil) = 0.0
| length(x::xs) = 1.0 + length(xs);
fun variance(L) =
let
val n = length(L)
in
reduce(plus, map(square, L))/n -
square(reduce(plus, L)/n)
fun trap(a, b, n, F) =
if n <= 0 orelse b-a <= 0.0 then 0.0
else
let
val delta = (b-a)/real(n)
in
delta * (F(a) + F(a+delta))/2.0 +
trap(a+delta, b, n-1, F)
end;
fun testZero(0) = print("zero\n")
| testZero(_) = print("not zero\n");
fun swapNeighbor(nil) = nil
| swapNeighbor(x::nil) = x::nil
| swapNeighbor(x::y::zs) = y::x::swapNeighbor(zs);
fun swap nil = nil
| swap [x] = [x]
| swap (x::y::zs) = y::x::(swap zs);