快學Scala習題解答 第十二章 高階函式

2021-06-16 10:17:14 字數 1863 閱讀 6091

object

test

extends

defvalues(fun: (int) => int, low: int, high: int) =

arr} println(values(x => x * x, -5, 5).mkstring)

}

object

test

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)(_ * _))

object

test

extends

deflargest(fun:(int)=>int,inputs:seq[int])=

println(largest(x=>10*x-x*x,1 to 10))

}

object

test

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計算出各個對偶的元素之和

object

test

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(_ + _))

}

object

test

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 遞推 ...