pl_2f_bf_ac_bd_c0_b9_ae_c1_a6
'전자 정보 공학부 200012911 박동희
'
fun timeit (f: int->int, n:int) = let open Time open Timer val start = startRealTimer() val result = f(n) val finish = checkRealTimer(totalRealTimer()) in print(toString(finish)); print "\n"; result end; fun fact 0 = 1 | fact(n) = if n=0 then 1 else n*fact(n-1)
fun timeit (f: 'a list->'a list list, n:'a list) = let open Time open Timer val start = startRealTimer() val result = f(n) val finish = checkRealTimer(totalRealTimer()) in print(toString(finish)); print "\n"; result end fun pre(x, nil) = nil | pre( x, L::LS) = (x::L)::pre(x,LS) fun pow([]) = [[]] |pow(X::XS)= let val ps = pow(XS) in ps@pre(X,ps) end
fun rev(x: 'a * 'a * 'a) = (#3(x), #2(x), #1(x)) fun rev(a, b, c) = (c, b, a);(* *) fun min3(a,b,c) = if a<b then if a<c then a else c else if b<c then c else c fun maxtuple(x:int*int*int) = if #1(x) > #2(x) then if #1(x) > #3(x) then #1(x) else #3(x) else if #2(x) < #3(x) then #3(x) else #3(x); fun sortedList(l:int*int*int) = (* sort the list *) if #1(l) <= #2(l) then if #2(l) <= #3(l) then l else if #1(l) <= #2(l) then (#1(l),#3(l),#2(l)) else (#3(l),#1(l),#2(l)) else if #2(l) <= #3(l) then if #1(l) <= #3(l) then (#2(l),#1(l),#3(l)) else (#2(l), #3(l), #1(l)) else (#3(l), #2(l), #1(l)) fun sortedList(a,b,c) = (* sort the list *) if a <=b then if b <=c then (a,b,c) else if a <=c then (a,c,b) else (c,a,b) else if b <=c then if a <=c then (b,a,c) else (b,c,a) else (c, b, a); fun round(n:real) = (* round real number *) if n < real(floor(n+0.5)) then real(ceil(n)) else real(floor(n)); (* fun round(n:string) = if hd(explode n) = #"." then (floor((real(implode(tl(explode n))))/100 + 0.05)) else round((implode(tl(explode n)))) *) fun lengthlist(l) = if l = nil then 0 else 1 + lengthlist(tl(l)); (* fun lengthiter(list) = (* length- iter version *) fun iter(l, c) = if l = nil then c else iter(tl(l), 1+c) iter(list, 0); *) fun removeElement(h::t, 0) = t | removeElement(h::t, n) = if lengthlist(h::t) > n then h::removeElement(t,n-1) else h::t fun cycleList(h::nil) = h::nil | cycleList(h::t) = tl(h::t)@[hd(h::t)]; fun cycleListith(h::t, 0) = h::t | cycleListith(h::t, i) = cycleListith(tl(h::t)@[hd(h::t)], i-1); fun cycleListith(h::t, 0) = h::t (* high-order function version *) | cycleListith(h::t, i) = cycleListith(cycleList(h::t), i-1); fun cycleListith(h::t, 0) = h::t | cycleListith(h::t, i) = if lengthlist(h::t) = i then h::t else cycleListith(tl(h::t)@[hd(h::t)], i-1) fun cycleList(h::t,i) = (* recursive version *) if i = 0 then h::t else cycleList(t@[h], i-1);
pl_2f_bf_ac_bd_c0_b9_ae_c1_a6.txt · Last modified: 2018/07/18 14:10 by 127.0.0.1