? ? ? 當(dāng)我們接近學(xué)期末時(shí),您將在Haskell達(dá)到精通。只是想想,僅僅2個(gè)月前,您才被介紹到命令行和.hs文件中,而現(xiàn)在您正在構(gòu)建AI以在排行榜上競(jìng)爭(zhēng)!
但是,像所有技能一樣,練習(xí)總是會(huì)有所幫助的。因此,當(dāng)您完善自己的AI并為考試做好準(zhǔn)備時(shí),我們組成了一小組問(wèn)題,這些問(wèn)題將在Haskell的所有領(lǐng)域進(jìn)行測(cè)試。試試看,看看他們?cè)趺醋?
問(wèn)題1:字形圖
讓我們使用列表和遞歸來(lái)確定給定的字符串是否是全景圖。字謎是與另一個(gè)單詞或短語(yǔ)具有相同字母的單詞或短語(yǔ)(“ nag ram”是“ anagram”的相似詞):七巧板是使用字母表中每個(gè)字母的句子。其中最受歡迎的是“快速的棕色狐貍跳過(guò)懶狐貍”??纯此谟⒄Z(yǔ)字母的每個(gè)字母上至少有一次用法嗎?
您的任務(wù):使用列表和遞歸來(lái)確定字符串是否為字母。
答:
isPanagram :: String -> Bool
isPanagram sentence = and (zipWith (||) (helper sentence ['a' .. 'z']) (helper sentence ['A' .. 'Z']))
where
-- Helper produces a list of booleans, checking if each element of ls2 is in ls1
helper :: Eq a => [a] -> [a] -> [Bool]
helper ls1 ls2 = map ((flip elem) ls1) ls2
問(wèn)題2:
編寫(xiě)代碼以查找數(shù)字的最大素?cái)?shù)。
答:
primeFactors :: Int -> [Int]
primeFactors n = primeFactors' n 2
where
primeFactors' 1 _ = []
primeFactors' n f
| n `mod` f == 0 = f : primeFactors' (n `div` f) f
| otherwise = primeFactors' n (f + 1)
largestPrimeFactor :: Int -> Int
largestPrimeFactor n = last (primeFactors n)
問(wèn)題3:Lambda表達(dá)式
既然您已經(jīng)了解了lambda表達(dá)式的實(shí)用性,請(qǐng)嘗試使用結(jié)合了高階函數(shù)的lambda表達(dá)式編寫(xiě)以下函數(shù)。
對(duì)于雙打列表中的每個(gè)元素,將其替換為x^2 + x。例如,squareAndAdd [1, 1.5, 2]應(yīng)該返回[2, 3.75, 6]。
答:
squareAndAdd :: [Int] -> [Int]
squareAndAdd list = map (\x -> x^2 + x) list
從整數(shù)列表中提取大于10的偶數(shù)。例如,filterEven10 [1, 4, 11, 14, 10, 18]應(yīng)返回[14, 18]
答:
filterEven10 :: [Int] -> [Int]
filterEven10 list = filter (\x -> even x && x > 10) list
? ? ?計(jì)算機(jī)科學(xué)COMP1100練習(xí)問(wèn)題解決方案輔導(dǎo)找考而思老師在線一對(duì)一輔導(dǎo),快速通過(guò)。
圖片歸版權(quán)方所有,頁(yè)面圖片僅供展示。如有侵權(quán),請(qǐng)聯(lián)系我們刪除。凡來(lái)源標(biāo)注“考而思”均為考而思原創(chuàng)文章,版權(quán)均屬考而思教育所以,任何媒體、網(wǎng)站或個(gè)人不得轉(zhuǎn)載,否則追究法律責(zé)任。
添加微信【kaoersi03】(備注官網(wǎng))申請(qǐng)?jiān)嚶?tīng),享專屬套餐優(yōu)惠!
kaoersi03