Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/lsp4you/public_html/connect.php on line 2
object FunctionsDay2 {
println("Welcome to the Scala worksheet") //> Welcome to the Scala worksheet
// Mapreduce1
def mapreduce1(
map: Int =>Int,
reduce: (Int, Int) => Int,
iden: Int,
x: Int,
y: Int
) = {
def iter(n:Int, acc:Int) : Int =
if(n > y) acc else iter(n+1, reduce(map(n), acc))
iter(x,iden)
} //> mapreduce1: (map: Int => Int, reduce: (Int, Int) => Int, iden: Int, x: Int,
//| y: Int)Int
mapreduce1(a=>a, (a,b) => a+b,0,1,10)
//> res7: Int = 55
mapreduce1(a=>a*a, (a,b) => a+b,0,1,10)
//> res8: Int = 385
mapreduce1(a=>a, (a,b) => a*b,1,1,5)
//> res9: Int = 120
// Mapreduce2
def mapreduce2(
map: Int =>Int,
reduce: (Int, Int) => Int,
iden: Int)
(x: Int,
y: Int) = {
def iter(n:Int, acc:Int) : Int =
if(n > y) acc else iter(n+1, reduce(map(n), acc))
iter(x,iden)
} //> mapreduce2: (map: Int => Int, reduce: (Int, Int) => Int, iden: Int)(x: Int,
//| y: Int)Int
mapreduce2(a=>a, (a,b) => a+b,0)(1,10) //> res10: Int = 55
mapreduce2(a=>a*a, (a,b) => a+b,0)(1,10) //> res11: Int = 385
mapreduce2(a=>a, (a,b) => a*b,1)(1,5) //> res12: Int = 120
// Mapreduce3
def mapreduce3(
map: Int =>Int,
reduce: (Int, Int) => Int,
iden: Int)
:(Int,Int) => Int = {
def fn(x:Int, y:Int) = {
def iter(n:Int, acc:Int) : Int =
if(n > y) acc else iter(n+1, reduce(map(n), acc))
iter(x,iden)
}
fn
} //> mapreduce3: (map: Int => Int, reduce: (Int, Int) => Int, iden: Int)(Int, In
//| t) => Int
val sum2 = mapreduce3(a=>a, (a,b) => a+b,0) //> sum2 : (Int, Int) => Int = FunctionsDay2$$$Lambda$26/1531333864@7e0ea639
val sumSq2 = mapreduce3(a=>a*a, (a,b) => a+b,0) //> sumSq2 : (Int, Int) => Int = FunctionsDay2$$$Lambda$26/1531333864@7a0ac6e3
//|
val fact2 = mapreduce3(a=>a, (a,b) => a*b,1) //> fact2 : (Int, Int) => Int = FunctionsDay2$$$Lambda$26/1531333864@17f6480
sum2(1,10) //> res13: Int = 55
sumSq2(1,10) //> res14: Int = 385
fact2(1,5) //> res15: Int = 120
}