Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
元组比较对的Haskell列表_Haskell_Compare_Tuples - Fatal编程技术网

元组比较对的Haskell列表

元组比较对的Haskell列表,haskell,compare,tuples,Haskell,Compare,Tuples,我是哈斯克尔的新手,我正在尝试一些东西。我在比较元组元素时遇到一些问题 假设我有一个元组[1,3,2,1,4,4]。 我想比较每对索引,并将一些数据保存到计数器值中,然后返回该值 例如,我想要的是: 元组:[a,b,c,d,e,f] 当a>b时,我想在计数器上加3。 当a==b时,我想在计数器上加1。 否则,将0添加到计数器。c、d和e、f也一样。 在遍历元组之后,我想返回计数器 在我的例子中,我有tuple[1,3,2,1,4,4]。 该函数应该执行以下操作: 从11开始,在计数器中添加3。

我是哈斯克尔的新手,我正在尝试一些东西。我在比较元组元素时遇到一些问题

假设我有一个元组[1,3,2,1,4,4]。 我想比较每对索引,并将一些数据保存到计数器值中,然后返回该值

例如,我想要的是: 元组:[a,b,c,d,e,f] 当a>b时,我想在计数器上加3。 当a==b时,我想在计数器上加1。 否则,将0添加到计数器。c、d和e、f也一样。 在遍历元组之后,我想返回计数器

在我的例子中,我有tuple[1,3,2,1,4,4]。 该函数应该执行以下操作: 从11开始,在计数器中添加3。 因为4=4,所以将1添加到计数器。 毕竟返回0+3+1=4

有什么想法吗?提前谢谢你

编辑


提示:使用类型a->b->[a]->[b]的函数将元组列表转换为求和数3或1或0的列表,并使用类型[a]->a的另一个函数获取求和

是一个很好的网站,可以通过名称和签名查找Haskell函数


请在简单地询问完整的代码之前尝试一下这些东西;这对我们双方都没有帮助。

提示:使用类型为a->b->[a]->[b]的函数将元组列表转换为求和数3或1或0的列表,并使用类型为[a]->a的另一个函数获取求和数

是一个很好的网站,可以通过名称和签名查找Haskell函数


请在简单地询问完整的代码之前尝试一下这些东西;这对我们两人都没有帮助。

这看起来像足球杯和其他一些运动的积分系统。与其实现一个计算总和的函数,不如先计算一个这样的元组的分数,比如:

score :: Ord a => (a, a) -> Int
score (x, y) = -- ...
通过使用as类型,我们可以使用任何类型的值,只要我们可以将它们与Ord类型约束进行比较。所以我们可以写一些东西,比如:

score :: Ord a => (a, a) -> Int
score (x, y) = -- ...
如果x>y,那么分数是3分,如果x==y,那么分数是1分,如果x
score :: Ord a => (a, a) -> Int
score (x, y) | x > y = 3
             | x == y = 1
             | otherwise = 0
现在我们可以执行地图分数来计算分数列表,通过使用sum,我们可以计算这些分数的总和,如:

calculateWins :: Ord a => [(a, a)] -> Int
calculateWins = sum . map score

这看起来像足球杯和其他一些运动的积分系统。与其实现一个计算总和的函数,不如先计算一个这样的元组的分数,比如:

score :: Ord a => (a, a) -> Int
score (x, y) = -- ...
通过使用as类型,我们可以使用任何类型的值,只要我们可以将它们与Ord类型约束进行比较。所以我们可以写一些东西,比如:

score :: Ord a => (a, a) -> Int
score (x, y) = -- ...
如果x>y,那么分数是3分,如果x==y,那么分数是1分,如果x
score :: Ord a => (a, a) -> Int
score (x, y) | x > y = 3
             | x == y = 1
             | otherwise = 0
现在我们可以执行地图分数来计算分数列表,通过使用sum,我们可以计算这些分数的总和,如:

calculateWins :: Ord a => [(a, a)] -> Int
calculateWins = sum . map score

对某件事不熟悉并不是努力的借口。请展示你尝试了什么,什么不起作用,你有什么想法,为什么这些都没有成功。而且[1,3,2,1,4,4]不是一个元组,它是一个由两个元组组成的列表。@WillemVanOnsem是的,你是对的。对不起,这确实是一个元组列表。我编辑了这篇文章,添加了一些我写的代码,但我一开始并没有这么做,因为我觉得这不值得一提。对某件事不熟悉并不是我努力的借口。请展示你尝试了什么,什么不起作用,你有什么想法,为什么这些都没有成功。而且[1,3,2,1,4,4]不是一个元组,它是一个由两个元组组成的列表。@WillemVanOnsem是的,你是对的。对不起,这确实是一个元组列表。我编辑了这篇文章,添加了一些我写的代码,但我一开始没有这么做,因为我认为这不值得一提。我可以问你一些其他的问题吗?在我的示例中,元组列表表示团队提供的某些匹配的结果。在每个元组a中,b a代表我队的进球,b代表对手队的进球。例如,元组列表“[1,3,2,1,4,4]”代表我的团队给出的3个匹配。如何才能在每场比赛中取得最大的进球差异?例如,如果我的球队至少赢过一场比赛,那么这个数字应该大于0;如果我的球队没有赢过比赛,那么这个数字应该为0;如果我的球队在所有比赛中都被拒绝,那么这个数字应该为负。例[1,5]我想要-4例[0,1,1,3,1,2]我想要-1。我猜代码与上面的代码类似,所以我希望您能帮助我。您可以执行另一个映射,然后使用maximum而不是sum,一个非常短的实现就是maximum。地图未经修订-。我想我不清楚我想要什么。让我解释一下。我有元组列表[8,1,2,3,3,3,2,0]。我的球队有2胜1平。我想要最好的球队的进球之间的差异
火柴最好的比赛是进球差距最大的比赛。在本例中,8-1是最佳匹配,因此返回值为8。然而,该值不仅取决于分数,还取决于一般结果。如果我的团队至少赢过一场,则该值大于0;如果没有赢过,则该值大于0;如果我的团队在所有比赛中都被拒绝,则该值为负。@hristoforidisc:准确地说,如果您定义bestmatch=maximum。map uncurry-,然后你可以用bestmatch[8,1,2,3,3,3,2,0]来调用它,这将得到7。我还可以问你一些其他问题吗?在我的示例中,元组列表表示团队提供的某些匹配的结果。在每个元组a中,b a代表我队的进球,b代表对手队的进球。例如,元组列表“[1,3,2,1,4,4]”代表我的团队给出的3个匹配。如何才能在每场比赛中取得最大的进球差异?例如,如果我的球队至少赢过一场比赛,那么这个数字应该大于0;如果我的球队没有赢过比赛,那么这个数字应该为0;如果我的球队在所有比赛中都被拒绝,那么这个数字应该为负。例[1,5]我想要-4例[0,1,1,3,1,2]我想要-1。我猜代码与上面的代码类似,所以我希望您能帮助我。您可以执行另一个映射,然后使用maximum而不是sum,一个非常短的实现就是maximum。地图未经修订-。我想我不清楚我想要什么。让我解释一下。我有元组列表[8,1,2,3,3,3,2,0]。我的球队有2胜1平。我想要最好的比赛的进球之间的差异。最好的比赛是进球差距最大的比赛。在本例中,8-1是最佳匹配,因此返回值为8。然而,该值不仅取决于分数,还取决于一般结果。如果我的团队至少赢过一场,则该值大于0;如果没有赢过,则该值大于0;如果我的团队在所有比赛中都被拒绝,则该值为负。@hristoforidisc:准确地说,如果您定义bestmatch=maximum。map uncurry-,然后你可以用bestmatch[8,1,2,3,3,3,2,0]调用它,这将产生7。