objecttest
extends
defvalues(fun: (int) => int, low: int, high: int) =
arr} println(values(x => x * x, -5, 5).mkstring)
}
objecttest
extends
valarr = array(3,2,6,8,4,6,9,3,6,7,1,2)
print(arr.reduceleft((a,b)=>if (a>b) a else b))
}
println(1 to 10 reduceleft(_ * _))
println((1 to -10).foldleft(1)(_ * _))
objecttest
extends
deflargest(fun:(int)=>int,inputs:seq[int])=
println(largest(x=>10*x-x*x,1 to 10))
}
objecttest
extends
deflargest(fun:(int)=>int,inputs:seq[int])=
println(largest(x=>10*x-x*x,1 to 10))
}
val假定你想要對這個序列做某中操作—比如,給對偶中的值求和,但是你不能直接使用:pairs = (1 to 10) zip (11 to 20)
pairs.map(_ + _)函式_ + _ 接受兩個int作為引數,而不是(int,int)對偶。編寫函式adjusttopair,該函式接受乙個型別為(int,int)=>int的函式作為引數,並返回乙個等效的, 可以以對偶作為引數的函式。舉例來說就是:adjusttopair(_ * _)((6,7))應得到42。然後用這個函式通過map計算出各個對偶的元素之和
objecttest
extends
varlist = list[int]()
defadjusttopair(fun:(int,int)=>int)(tup:(int, int))=
defmap(fun:(int,int)=>int):int=
valpairs = (1 to 10) zip (11 to 20)
for ((a,b) <- pairs)
println(map(_ + _))
}
objecttest
extends
vala = array("asd","df","aadc")
valb = array(3,2,4)
valc = array(3,2,1)
println(a.corresponds(b)(_.length == _))
println(a.corresponds(c)(_.length == _))
}
沒有柯里化則不能使用前乙個練習裡的**方式來呼叫
object需要換名和柯里化test
extends
defunless(condition: =>
boolean)(block: =>
unit)
} var
x = 10
unless(x == 0)
}
blog url:
程式設計珠璣第十二章習題
1.rand 一般返回約15個隨機位。用該函式實現bigrand 和randint l,u 要求前者至少返回30個隨機位,後者返回 l,u 範圍內的乙個隨機整數。int bigrand int randint int l,int u 2.在0 n 1範圍內選擇m個整數,在該範圍內隨機選擇乙個數i,然...
第十二章 檔案
文字檔案 文字檔案是一種由若干字元構成的檔案,可以用文字編輯器進行閱讀或編輯。以txt py html等為字尾的檔案都是文字檔案。2.二進位制檔案 二進位制檔案一般是指不能用文字編輯器閱讀或編輯的檔案。以 mp4 png等為字尾的檔案都是二進位制檔案,如果想要開啟或修改這些檔案,必須通過特定軟體進行...
第十二章 dp
動態規劃策略 將原始問題拆分為多個子問題,將子問題結果記錄,方便復用子問題的解 遞迴 記憶化 遞推 是動態規劃的一體兩面,本質都是一樣的 遞推減少了呼叫次數,空間上還能優化,一般選擇遞推方式 遞迴 記憶化 int memo maxn 將o 2 n o n intfibonacci int n 遞推 ...