使用Scala进行分组以便于理解

使用Scala进行分组以便于理解,scala,for-comprehension,Scala,For Comprehension,我最近考试不及格,一个主要的问题是我必须用a来理解,或者更确切地说,只是理解 数据:List[(天:整数,月:字符串,原因:字符串,公里:整数)] val数据=列表( (25,“2月”、“1日”、“25日), (17,“4月”、“1日”、“63日), (19,“3月”、“3日”、“45日), (17,“10月”、“4日”、“12日), (25,“12月”、“1日”、“45日), (9,“1月”、“2日”、“56日), (17,“4月”、“1日”、“54日), (21,“9月”、“3日”、“16日

我最近考试不及格,一个主要的问题是我必须用a来理解,或者更确切地说,只是理解

数据:
List[(天:整数,月:字符串,原因:字符串,公里:整数)]

val数据=列表(
(25,“2月”、“1日”、“25日),
(17,“4月”、“1日”、“63日),
(19,“3月”、“3日”、“45日),
(17,“10月”、“4日”、“12日),
(25,“12月”、“1日”、“45日),
(9,“1月”、“2日”、“56日),
(17,“4月”、“1日”、“54日),
(21,“9月”、“3日”、“16日),
(三)"五月","二","五十九",,
(20,“1月”、“4日”、“46日),
(28,“6月”、“5日”、“28日),
(19,“3月”、“3日”、“34日),
(29,“8月1日”、“42日),
(17,“4月”、“1日”和77日)
)
定义两个以上的冲突(maxKm:Int,in:List[(Int,String,String,Int)]):List[(Int,String)]=???
任务: 查找所有日期,其中至少2次
minKm>km
原因相同或不同

例子: 如果
maxKm=30
那么
列表[(19,“三月”,“2”,“45”,“19,“三月”,“3”,“34)]
是相关的,因为出于2
原因
s履行
.\u 4>30
,所以我会返回
列表[(19,“三月”)]

如果不使用
groupBy
,我不知道如何解决这个问题,因为这意味着我必须“记住”一天,才能将当前状态强制到我已经看到的状态。我无法保持一种理解的状态

第2部分是对第1部分进行除糖,因此,不要使用comps,而只使用
map
flatmap
filter


很抱歉,如果这看起来像一个noob问题,但如果不分组,这似乎很可笑,我只想知道我错过了什么。

reddit上的一个家伙帮我找到了答案。事实证明,您不需要保持一个状态来满足这个特定的需求,只需要构建一个重击条件。我想我考试不及格是有原因的

def超过两个违规(maxKm:Int,
in:List[(Int,String,String,Int)]
):List[(Int,String)]={
(用于{
line1最大公里//两个公里都必须大于最大公里
}产量(第1行、第1行、第2行)
).独特的
}

reddit上的一个家伙帮我找到了答案。事实证明,您不需要保持一个状态来满足这个特定的需求,只需要构建一个重击条件。我想我考试不及格是有原因的

def超过两个违规(maxKm:Int,
in:List[(Int,String,String,Int)]
):List[(Int,String)]={
(用于{
line1最大公里//两个公里都必须大于最大公里
}产量(第1行、第1行、第2行)
).独特的
}

您不需要对数据进行分组,您需要过滤数据。我想这足以让你走上正确的道路。不,对不起。当然,我可以
为(第30项)产生{…}
,但我无法记住以前是否发生过这种情况,因为我在同一
天至少需要2次
/
原因
。唯一知道的方法是将它们分组,然后测试列表长度或使用foldlefts累加器。我在这里遗漏了什么?嗯,我相信“两次”意味着一个
。\u 4*2>maxKm
如果不是,那么是的,你是对的,你需要保持一个状态,考虑到任务的限制,这没有多大意义。我会问你的教授。任务是:找出所有KM>maxKm的天数,至少有两个原因(不同或相同)。是的,我想我必须保持一种状态,这对我来说毫无意义。关于这一点,我要问我的教授。短语“相同或不同的原因”和短语“至少两个(不同或相同的)原因”是否基本上意味着原因是无关的?我的意思是,如果所有的原因可能是相同的,而所有的原因可能是不同的,那么为什么要关注原因呢?你不需要分组数据,你需要过滤数据。我想这足以让你走上正确的道路。不,对不起。当然,我可以
为(第30项)产生{…}
,但我无法记住以前是否发生过这种情况,因为我在同一
天至少需要2次
/
原因
。唯一知道的方法是将它们分组,然后测试列表长度或使用foldlefts累加器。我在这里遗漏了什么?嗯,我相信“两次”意味着一个
。\u 4*2>maxKm
如果不是,那么是的,你是对的,你需要保持一个状态,考虑到任务的限制,这没有多大意义。我会问你的教授。任务是:找出所有KM>maxKm的天数,至少有两个原因(不同或相同)。是的,我想我必须保持一种状态,这对我来说毫无意义。关于这一点,我要问我的教授。短语“相同或不同的原因”和短语“至少两个(不同或相同的)原因”是否基本上意味着原因是无关的?我的意思是,如果所有的原因可能是相同的,而所有的原因可能是不同的,那么为什么要关注原因呢?我不明白为什么使用
distinct
groupBy
更不违反“仅供理解”的要求。你的教授提供了预期的答案吗?还没有答案。我觉得distinct是一个边缘案例。没有它,当我看到这是我唯一想到的事情时,它变得非常坚韧。撇开这一点不谈,让你拼命寻找次优的解决方案似乎很奇怪。如果你认为这是人为的,等你看到我这里的理解交叉连接吧。我不明白为什么使用
distinct
groupBy
更不违反“仅理解”的要求。你的教授提供了预期的答案吗?还没有答案。我觉得distinct是一个边缘案例。没有它,当我看到这是我唯一想到的事情时,它变得非常坚韧。撇开这一点不谈,让你拼命寻找次优解似乎很奇怪。如果你认为这是人为的,等你看到我这里的理解交叉连接