Предпосылки
Для тех из вас, кто не знаком с Криббиджем, он использует стандартную колоду из 52 карт, а тузов всегда мало. Рука игрока состоит из 4 карт, и есть одна карта хода, которую все игроки могут использовать, чтобы подсчитать свою руку.
Итак, для небольшой тренировки для себя я написал немного VBA и получил все ~ 12,9 миллиона возможных комбинаций очков, напечатанных на листе Excel. Я присвоил каждой карте целое число от 1 до 52 и настроил его так, чтобы каждая масть представляла собой последовательный блок из 13 карт. 1-13 = трефы, 14-26 = бубны, 27-39 = червы и 40-52 = пики. Я сдал каждую карту в отдельную ячейку в соседних столбцах. Ie B1:E1
- рука, F1
- ход. Рука (B1: E1) также организована таким образом, что наименьший идентификационный номер карты (не номинал карты) находится слева, а высший - справа.
Затем я начал возиться с тем, как подсчитать любую данную руку с использованием формул Excel. До сих пор я мог проверить наличие 4- и 5-карточного гриппа sh (флеш = все карты одной масти), пар (включая тройку и четверку), 15 комбинаций (2,3,4 и 5 карт. ). Что у меня выдающееся, так это проверка на стриты и 1 очко за ручку (валет в руке соответствует масти поворота). Проверить последнее должно быть достаточно просто.
Стрит в Криббидже - это самая большая последовательность / серия карт. Вы не можете go круглосуточно, (ie 3,2,1,13,12 или 3,2, A, K, Q). Вы не можете сосчитать две стрита с 4 картами из 5 стритов, так как учитывается только самая большая. Однако вы можете считать дабл-стрит, например, 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 или 2,2,3,4,5 или 2,3,4,5,5)
Что я пробовал до сих пор
Я смог достаточно легко вычислить 5 карт, используя: MOD, чтобы преобразовать карты в номинал и снять масть, AGGREGATE, чтобы отсортировать карты, а затем проверить, была ли каждая карта подходящим отличием от первой карты. Формула немного громоздка, но работает:
=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