您的任务是查找在12张卡的有序列表中可以找到多少个不同的21点序列。
二十一点序列被定义为连续的卡序列,其点的总和正好为21。点的计数根据下表进行:
Symbol | Name | Points Symbol | Name | Points
-------+-------+-------- -------+-------+--------
2 | Two | 2 9 | Nine | 9
3 | Three | 3 T | Ten | 10
4 | Four | 4 J | Jack | 10
5 | Five | 5 Q | Queen | 10
6 | Six | 6 K | King | 10
7 | Seven | 7 A | Ace | 1 or 11
8 | Eight | 8
输入项
使用上述符号的12个字符的字符串。我们不在乎卡的颜色,因此不提供它们。
例:
K6K6JA3Q4389
输出量
在输入字符串中可以找到的不同的21点序列的数量。
例:
K6K6JA3Q4389
包括两个不同的二十一点序列:
JA
,其中A计为11分(10 + 11 = 21)A3Q43
,其中A计为1点(1 + 3 + 10 + 4 + 3 = 21)
所以答案是2
。
规则
- 如果两个大酒杯序列包含不同的卡或不同顺序的相同卡,则认为它们是不同的。如果完全相同的序列出现在输入列表的不同位置,则必须仅计数一次。
- 二十一点序列可能会相互重叠。
- 每种卡依次显示最多12次。(我们假设这些卡是从至少3个不同的卡组中选取的。)
- 如果在输入字符串中找不到二十一点序列,则必须返回
0
或任何其他虚假值。 - 这是代码高尔夫球,因此最短的答案以字节为单位。禁止出现标准漏洞。
测试用例
提供这些序列仅供参考,但只需要输出它们的数量即可。
Input | Output | Distinct sequences
-------------+--------+--------------------------------------------------------
3282486Q3362 | 0 | (none)
58A24JJ6TK67 | 1 | 8A2
Q745Q745Q745 | 1 | Q74
AAAAAAAAAAAA | 1 | AAAAAAAAAAA
T5AQ26T39QK6 | 2 | AQ, 26T3
JQ4A4427464K | 3 | A442, 44274, 7464
Q74Q74Q74Q74 | 3 | Q74, 74Q, 4Q7
37AQKA3A4758 | 7 | 37A, 37AQ, AQ, AQK, QKA, KA, A3A475
TAQA2JA7AJQA | 10 | TA, TAQ, AQ, QA, A2JA7, 2JA7A, JA, AJ, AJQ, JQA
TAJAQAKAT777 | 13 | TA, TAJ, AJ, JA, JAQ, AQ, QA, QAK, AK, KA, KAT, AT, 777