gpt4 book ai didi

haskell - 返回一个列表,其中包含一对元素,但前提是各个元素的总和是奇数

转载 作者:行者123 更新时间:2023-12-04 15:56:24 25 4
gpt4 key购买 nike

Implement the oddPairs :: [Int] -> [Int] -> [(Int, Int)] function that returns a list of pairs, but only if the parameters' lists' respective elements' sums are odd.

For example:

oddPairs [1,2,3] [2,2,2] == [(1,2),(3,2)]

oddPairs [1,3,5] [2,4,6] == zip [1,3,5] [2,4,6]

oddPairs [1,2,3] [1,2,3] == []

到目前为止,我已经尝试过

oddPairs (x:xs) (y:ys) | (x+y) `mod` 2 == 0 = []
| (x+y) `mod` 2 /= 0 = [(x, y)] ++ oddPairs (xs) (ys)

在第一个示例中,它仅返回 [(1,2)],在第二个示例中,它返回正确的值,但具有 非穷举模式错误。

最佳答案

如果两个项目是偶数,你不应该只返回一个空列表,而是继续递归,直到至少有一个列表被用完,所以:

oddPairs :: Integral a => [a] -> [a] -> [(a, a)]
oddPairs [] _ = []
oddPairs _ [] = []
oddPairs (x:xs) (y:ys)
-- keep searching for new items ↓
| (x+y) `mod` 2 == 0 = <strong>oddPairs xs ys</strong>
| otherwise = (x, y) : oddPairs xs ys

关于haskell - 返回一个列表,其中包含一对元素,但前提是各个元素的总和是奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69680508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com