我对编程不是很有经验,而且我遇到了一个我似乎无法弄清楚的问题。 我有类型:
public class Contract {
[Key]
public int Id { get; set; }
public string AwardId { get; set; }
public virtual ICollection<ContractHistory> contractHistory { get; set; }
}
public class ContractHistory {
[Key]
public int Id { get; set; }
public string AwardId { get; set; }
public int ContractId { get; set;}
[ForeignKey("ContractId")]
public virtual Contract contract { get; set; }
}
我想编写一个函数newtype Hand = Hand { unHand :: [Card] } deriving (Eq, Show)
type Deck = [Card]
,以便返回可以从给定套牌中获取的5张牌的所有可能组合。
allHands
其中allHands :: Deck -> [Hand]
allHands deck = combs 5 deck
是我所做的函数,它返回通过从列表中取n个元素可以形成的所有可能组合。
我的功能不起作用,因为我的函数combs :: Int -> [a] -> [[a]]
的结果是(combs 5 deck )
,我希望它是[[Card]]
。任何人都可以帮我这个吗?
答案 0 :(得分:2)
你几乎拥有它。
allHands deck = map Hand (combs 5 deck)
这是我的原始答案,可能没有做你想要的(因为它会产生重复):
import Data.List (permutations)
allHands = map Hand . map (take 5) . permutations
答案 1 :(得分:0)
使用Data.List子序列
allHands = filter ((5==).length) . subsequences