求聪明的方式!
haskell吧
全部回复
仅看楼主
level 2
478934853 楼主
定义type如下
data Suit = Club | Diamond | Heart | Spade
deriving (Eq, Ord, Bounded, Enum)
data Rank =
R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 |
Jack | Queen | King | Ace
deriving (Eq, Ord, Bounded, Enum)
data Card = Card {suit::Suit, rank::Rank}
deriving (Eq, Bounded)
求问 一个function f,f定义如下
f::[Card] -> [Card] -> Int
输入两个card list,第一个是猜的,第二个是给定的。找第二个给定的list中rank与第一个相同的。但是第二个list中的值只能匹配一次。
举例:[(Card Club R3),(Card Heart R4)] [(Card Club R3),(Card Heart R3)] 这个输出值为2
[(Card Club R3),(Card Heart R3)] [(Card Club R3),(Card Heart R5)]这个输出值为1
[(Card Diamond R3),(Card Heart R3)] [(Card Spade R3),(Card Club R3)]这个输出值为2
自己写的方式觉得超蠢,给了两个guard,据说一行就能用filter写出来,求教!
2016年09月05日 10点09分 1
level 3
f l1 = filter (\c2 -> any (\c1 -> suit c1 == suit c2) l1)
2016年09月10日 03点09分 2
level 11
ヽ(´▽`)/此贴终结。。我拿去学习了
2016年09月10日 14点09分 3
。。没看懂。。
2016年09月10日 14点09分
又看了三遍。。看懂题目了。我想想看。。
2016年09月10日 15点09分
二楼看不懂,貌似也不适合题目呀。。
2016年09月10日 15点09分
回复 魔術方块黄 :完了。。又懵了。。题目又看不明白了。。
2016年09月10日 15点09分
level 11
2016年09月10日 15点09分 4
level 11
。。rank是排序过的吗?。。还有rank相同的只有一个?比如我有一个这样的输入会输出什么呢。。第一个list r4 r3 第二个 r3 r4 呢。。
2016年09月11日 05点09分 5
没思路,只会把rank取出来,一个一个比。。
2016年09月13日 13点09分
第二个list应该是不同。对于c2<-list2 ,只要任意c1<-list1 满足c1==c2,就+1
2016年09月15日 00点09分
1