gpt4 book ai didi

excel - 在纸条上找一条直线

转载 作者:行者123 更新时间:2023-12-04 21:28:33 24 4
gpt4 key购买 nike

背景
对于那些不熟悉 Cribbage 的人,它使用标准的 52 张牌,A 总是低的。玩家的手牌由 4 张牌组成,并且有 1 张转牌可供所有玩家使用以帮助得分。
因此,对于我自己的一个小练习题,我写了一个 VBA 文件,并在 Excel 表中打印了大约 1290 万个可能的得分组合。我为每张牌分配了一个 1 到 52 的整数,并将其设置为每套花色是 13 张牌的连续 block 。 1-13 = 梅花,14-26 = 方 block ,27-39 = 红心,40-52 = 黑桃。我将每张卡片放入相邻列中自己单独的单元格中。即B1:E1是手和F1轮到了。手牌 (B1:E1) 也组织在最低的卡 ID 号(不是卡值)在左侧,最高在右侧。
然后我开始修改如何使用 excel 公式为任何给定的手打分。到目前为止,我已经能够检查 4 和 5 牌同花(同花 = 所有牌同花色)、对子(​​包括三种和四种同花)、15 种组合(2、3、4 和 5 张牌)。我最擅长的是检查直道和旋钮的 1 点(手中的 jack 与转牌相匹配)。检查后者应该很容易。
Cribbage 中的顺子是最大的牌序列/系列。您不能全天候(即 3,2,1,13,12 或 3,2,A,K,Q)。您不能计算 5 张顺子中的两个 4 张顺子,因为只计算最大的顺子。但是,您可以计算双顺子,例如 2,2,3,4,5 或 2,3,4,4,5。顺子中的每张牌都计为 1 分。
问题
当其中一张牌有双/对时,我不确定如何识别四张顺子。艾。 2,3,4,5,16 或 2,3,4,5,15 或 2,3,4,5,18。 (面值:2,3,3,4,5 or 2,2,3,4,5 or 2,3,4,5,5)
到目前为止我尝试了什么
我能够很容易地计算出 5 张牌,使用:MOD 将牌转换为面值并剥离花色,A​​GGREGATE 对牌进行排序,然后检查每张牌是否与第一张牌有适当的差异。该公式有点笨拙但有效:

=AND(
AGGREGATE(15,6,MOD(B1:F1,13),2)-AGGREGATE(15,6,MOD(B1:F1,13),1)=1,
AGGREGATE(15,6,MOD(B1:F1,13),3)-AGGREGATE(15,6,MOD(B1:F1,13),1)=2,
AGGREGATE(15,6,MOD(B1:F1,13),4)-AGGREGATE(15,6,MOD(B1:F1,13),1)=3,
AGGREGATE(15,6,MOD(B1:F1,13),5)-AGGREGATE(15,6,MOD(B1:F1,13),1)=4
)*5
于是我开始了 4 张牌序列。只要不是双直,我就能让它工作。
=OR(AND(AGGREGATE(15,6,MOD(B1:F1,13),2)-AGGREGATE(15,6,MOD(B1:F1,13),1)=1,
AGGREGATE(15,6,MOD(B1:F1,13),3)-AGGREGATE(15,6,MOD(B1:F1,13),1)=2,
AGGREGATE(15,6,MOD(B1:F1,13),4)-AGGREGATE(15,6,MOD(B1:F1,13),1)=3,
AGGREGATE(15,6,MOD(B1:F1,13),5)-AGGREGATE(15,6,MOD(B1:F1,13),1)<>4),
AND(AGGREGATE(14,6,MOD(B1:F1,13),2)-AGGREGATE(14,6,MOD(B1:F1,13),1)=-1,
AGGREGATE(14,6,MOD(B1:F1,13),3)-AGGREGATE(14,6,MOD(B1:F1,13),1)=-2,
AGGREGATE(14,6,MOD(B1:F1,13),4)-AGGREGATE(14,6,MOD(B1:F1,13),1)=-3,
AGGREGATE(14,6,MOD(B1:F1,13),5)-AGGREGATE(14,6,MOD(B1:F1,13),1)<>-4))
*4
或者将其分解为单独的检查。
=AND(
AGGREGATE(15,6,MOD(B1:F1,13),2)-AGGREGATE(15,6,MOD(B1:F1,13),1)=1,
AGGREGATE(15,6,MOD(B1:F1,13),3)-AGGREGATE(15,6,MOD(B1:F1,13),1)=2,
AGGREGATE(15,6,MOD(B1:F1,13),4)-AGGREGATE(15,6,MOD(B1:F1,13),1)=3,
AGGREGATE(15,6,MOD(B1:F1,13),5)-AGGREGATE(15,6,MOD(B1:F1,13),1)<>4
)*4

AND(
AGGREGATE(14,6,MOD(B1:F1,13),2)-AGGREGATE(14,6,MOD(B1:F1,13),1)=-1,
AGGREGATE(14,6,MOD(B1:F1,13),3)-AGGREGATE(14,6,MOD(B1:F1,13),1)=-2,
AGGREGATE(14,6,MOD(B1:F1,13),4)-AGGREGATE(14,6,MOD(B1:F1,13),1)=-3,
AGGREGATE(14,6,MOD(B1:F1,13),5)-AGGREGATE(14,6,MOD(B1:F1,13),1)<>-4
)*4
问题
如何最终在单个单元格中使用excel公式找到带有双/对的四张顺子。我不介意多个单元格来构建和理解公式。
有没有更好的方法来使用 excel 公式来识别直线?
我希望建立 4 张顺子的概念,当我想通后,照顾 3 张顺子。
样本数据
| B | C | D | E | F  |
+---+---+---+---+----+
| 2 | 3 | 4 | 5 | 14 | <= 5 card straight
| 2 | 3 | 4 | 5 | 16 | <= 2 X 4 card straight
| 2 | 3 | 4 | 5 | 15 | <= 2 X 4 card straight
| 2 | 3 | 4 | 5 | 18 | <= 2 X 4 card straight
| 2 | 3 | 4 | 20| 5 | <= 1 X 4 card straight
| 2 | 3 | 4 | 8 | 10 | <= Not a straight
Excel版
我正在运行 excel 2013

最佳答案

我们可以将 SUMPRODUCT 与 AGGREGATE 一起使用:

=IF(SUMPRODUCT(--(AGGREGATE(14,7,MOD(B1:F1-1,13)+1,{1,2,3,4})-AGGREGATE(14,7,MOD(B1:F1-1,13)+1,{2,3,4,5})=1))=4,"5 card straight",
IF(AND(SUMPRODUCT(--(AGGREGATE(14,7,MOD(B1:F1-1,13)+1,{1,2,3,4})-AGGREGATE(14,7,MOD(B1:F1-1,13)+1,{2,3,4,5})=1))=3,AGGREGATE(14,7,MOD(B1:F1-1,13)+1,1)-AGGREGATE(15,7,MOD(B1:F1-1,13)+1,1)=3),"2 X 4 card straight",
IF(AND(SUMPRODUCT(--(AGGREGATE(14,7,MOD(B1:F1-1,13)+1,{1,2,3,4})-AGGREGATE(14,7,MOD(B1:F1-1,13)+1,{2,3,4,5})=1))=3,OR(AGGREGATE(14,7,MOD(B1:F1-1,13)+1,2)-AGGREGATE(15,7,MOD(B1:F1-1,13)+1,1)=3,AGGREGATE(14,7,MOD(B1:F1-1,13)+1,1)-AGGREGATE(15,7,MOD(B1:F1-1,13)+1,2)=3)),"1 X 4 card straight","Not a Straight")))
enter image description here

关于excel - 在纸条上找一条直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62880243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com