
Untitled
By: a guest on Feb 12th, 2012 | syntax:
None | size: 1.56 KB | hits: 35 | expires: Never
fun crossSum(a:int (*a>=0*)):int =
if a < 1 then 0 else crossSum(a div 10) + a mod 10
fun decimal2(x:real):real =
Real.realRound(x*100.00)/100.00
fun firstDigit(a:int):char =
String.sub(Int.toString a, 0)
fun isDate2009(d:int, m:int):bool =
let
val monate = #[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
in
if m > 0 andalso m < 13 then
if d > 0 andalso d <= Vector.sub(monate, m-1) then true else false
else false
end
fun isLeapYear(n:int):bool =
if n <= 1582 then false
else
if (n mod 4 = 0 andalso n mod 100 <> 0) orelse n mod 400 = 0 then true
else false
fun isPalindrome(s:string):bool =
explode(s) = rev(explode(s))
(* isPrimeHelper ist eine Hilfsfunktion für isPrime, die die zu überprüfende
* Zahl n und einen Zähler z übergeben bekommt. Falls z ein Teiler von n ist,
* ist n nicht prim, wenn z doch ein Teiler von n ist, dann wird z in eine
* Rekursion um 1 inkrementiert. Sobald z mindestens sqrt(n) gross ist wie n,
* ist n prim, denn z kann nun nicht mehr Teiler von n sein.
*)
fun isPrimeHelper(n:int, z:int):bool =
if z > floor(Math.sqrt(real n)) then true
else
if n mod z = 0 then false else isPrimeHelper(n, z+1)
fun isPrime(n:int):bool =
isPrimeHelper(n, 2)
fun tierpark(erm:bool, dauer:int, dnacht:bool, bday:bool):real =
let
val grundP = if erm then 8.50 else 14.50
val rabattP = if dauer < 2 then grundP - 4.00 else grundP
val dnachtP = if dnacht then rabattP + 1.50 else rabattP
in
if bday then dnachtP / 2.0 else dnachtP
end