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
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写出来,求教!