我正在用clojure制作扑克游戏我有一个类似的功能:
(sort (map rank straight-hand))
以排序顺序返回手的等级,比如说
(2 3 4 5 6)
如何检查序列中前面的数字和当前数字的差异是1
答案 0 :(得分:8)
(every? #{1} (map - (rest hand) hand))
这会验证从您手中的以下项目中减去项目的每个结果都在集#{1}
答案 1 :(得分:3)
使用(partition 2 1 <seq>)
将已排序的序列分成重叠的两个组,然后得到每组两个的差异,然后测试每个差异是否为-1:
(defn incrementing?
[xs]
(every? #(= % -1) (map #(apply - %) (partition 2 1 xs))))
答案 2 :(得分:2)
这是另一种方式:你想要检查你拥有的是一个范围。因此,将它与列表中第一个和最后一个元素之间的范围进行比较。
(= xs (range (first xs)
(inc (last xs))))