Skip to content

Instantly share code, notes, and snippets.

View kunishi's full-sized avatar

Takeo Kunishima kunishi

View GitHub Profile
@kunishi
kunishi / bintree.sml
Created July 2, 2012 03:00
Binary Tree, a simplified version of the codes in 'Elements of ML Programming (ML97 Edition)'
datatype 'label btree =
Empty |
Node of 'label * 'label btree * 'label btree;
fun lower(nil) = nil
| lower(c::cs) = (Char.toLower c)::lower(cs);
fun lt(x, y) =
implode(lower(explode(x))) < implode(lower(explode(y)));
@kunishi
kunishi / gist:3030777
Created July 2, 2012 03:13
ACM International Collegiate Programming Contest, Asia Regional (Tokyo), 2007, 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
@kunishi
kunishi / gist:3030781
Created July 2, 2012 03:14
ACM International Collegiate Programming Contest, Asia Regional (Tokyo), 2007, Problem B
exception NotFoundException
fun get_primes n =
let
val l = List.tabulate (n, fn n => n + 2)
fun get_primes_sub nil result = result
| get_primes_sub (x::xs) result =
get_primes_sub (List.filter (fn n => n mod x <> 0) xs) (x::result)
in
List.rev (get_primes_sub l nil)
@kunishi
kunishi / gist:3030791
Created July 2, 2012 03:16
ACM International Collegiate Programming Contest, Asia Regional (Tokyo), 2009, Problem A
fun sort _ nil = nil
| sort f (xl as x::xs) = sort f (List.filter (fn y => f y x = LESS) xs)
@ (List.filter (fn y => f y x = EQUAL) xl)
@ sort f (List.filter (fn y => f y x = GREATER) xs);
fun compare x y =
if x < y then LESS
else if x > y then GREATER
else EQUAL;
@kunishi
kunishi / gist:3030794
Created July 2, 2012 03:17
ACM International Collegiate Programming Contest, Asia Regional (Tokyo), 2009, Problem B
fun subst src dst s =
let
open Substring
fun subst_sub src dst ss =
let
val (pref, suff) = position src ss
in
if isEmpty suff (* not found *)
then [pref]
else pref :: (full dst) ::
@kunishi
kunishi / gist:3030947
Created July 2, 2012 03:52
ACM International Collegiate Programming Contest, Asia Regional (Tokyo), 1998, Problem A
open List;;
let generate_isprime x =
let rec generate_isprime x =
match x with
1 -> []
| n -> n :: generate_isprime (n-1)
in
rev (generate_isprime x);;
@kunishi
kunishi / gist:3030952
Created July 2, 2012 03:53
ACM International Collegiate Programming Contest, Asia Regional (Tokyo), 2004, Problem C
open List;;
open Int64;;
let binary_list_of_int n =
let rec binary_list_of_int n bit =
if bit = 1 then [n]
else (rem n (of_int 2)) :: binary_list_of_int (div n (of_int 2)) (bit-1)
in
binary_list_of_int n 32;;
@kunishi
kunishi / gist:3030980
Created July 2, 2012 03:56
ACM International Collegiate Programming Contest, Asia Regional (Tokyo), 2004, Problem A
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Asia2004A {
public static void main(String[] args) throws FileNotFoundException {
int a, b, d;
Scanner s = new Scanner(new File(args[0]));
while (true) {
@kunishi
kunishi / gist:3030994
Created July 2, 2012 03:59
ACM International Collegiate Programming Contest, Asia Regional (Tokyo), 2005, Problem A
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class Asia2005A {
public static void main(String[] args) throws FileNotFoundException {
boolean[] isprime = new boolean[10000];
ArrayList<Integer> prime = new ArrayList<Integer>();
@kunishi
kunishi / gist:3031016
Created July 2, 2012 04:05
Fibonacci
fun fib n =
let
fun fib1 1 = (1, 0)
| fib1 n =
let
val (l, m) = fib1 (n-1)
in
(l + m, l)
end
in