计算机科学COMP1100练习问题解决方案辅导
2021-11-08 17:03 来源:留学在线 阅读量:54
当我们接近学期末时,您将在Haskell达到精通。只是想想,仅仅2个月前,您才被介绍到命令行和.hs文件中,而现在您正在构建AI以在排行榜上竞争!
但是,像所有技能一样,练习总是会有所帮助的。因此,当您完善自己的AI并为考试做好准备时,我们组成了一小组问题,这些问题将在Haskell的所有领域进行测试。试试看,看看他们怎么走!
问题1:字形图
让我们使用列表和递归来确定给定的字符串是否是全景图。字谜是与另一个单词或短语具有相同字母的单词或短语(“ nag ram”是“ anagram”的相似词):七巧板是使用字母表中每个字母的句子。其中最受欢迎的是“快速的棕色狐狸跳过懒狐狸”。看看它在英语字母的每个字母上至少有一次用法吗?
您的任务:使用列表和递归来确定字符串是否为字母。
答:
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
问题2:
编写代码以查找数字的最大素数。
答:
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)
问题3:Lambda表达式
既然您已经了解了lambda表达式的实用性,请尝试使用结合了高阶函数的lambda表达式编写以下函数。
对于双打列表中的每个元素,将其替换为x^2 + x。例如,squareAndAdd [1, 1.5, 2]应该返回[2, 3.75, 6]。
答:
squareAndAdd :: [Int] -> [Int]
squareAndAdd list = map (\x -> x^2 + x) list
从整数列表中提取大于10的偶数。例如,filterEven10 [1, 4, 11, 14, 10, 18]应返回[14, 18]
答:
filterEven10 :: [Int] -> [Int]
filterEven10 list = filter (\x -> even x && x > 10) list
计算机科学COMP1100练习问题解决方案辅导找老师在线一对一辅导,快速通过。
"留学在线"的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与
我们联系删除或处理,客服邮箱756005163@qq.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
最新文章
- 卧龙岗大学全球排名第几
留学问答 · 2024-03-06
- 卧龙岗大学全球排名第几
留学问答 · 2024-03-06
- 卧龙岗大学全球排名第几
留学问答 · 2024-03-06
- 卧龙岗大学全球排名第几
留学问答 · 2024-03-06
- 墨尔本皇家理工大学全球排名第几
留学问答 · 2024-02-29