【发布时间】:2020-06-21 17:02:10
【问题描述】:
长话短说,我想编写一个程序来识别一组中的 13 张扑克牌,并报告它们是否是“来自扑克”的同花顺。我的方法是创建一个 base13 编号系统,然后将输入的卡片转换为其等效的十进制值,这样我就可以对它们进行计算以确定它们是否满足标准。
这种操作有著名的算法或方法吗?你认为我的方法是合理的还是我过于复杂了? (考虑到我无法控制接收卡片数据的格式)
【问题讨论】:
-
你的问题太宽泛了,你把它复杂化了。以 13 为基数的编号系统根本帮不了您。在内部,无论如何,一切都是二进制的。
-
你可以创建任何基础。以
base10中的910为例,这实际上只是9*10**2 + 1*10**1 + 0*10**0如果您在base13中遇到910,您只需将10 换成13,就像9*13**2 + 1*13**1 + 0*13**0一样。这与计算十六进制的方式相同,即0xFF == 15*16**1 + 15*16**0。 -
我认为你过于复杂了。这是Python3中的一个简单解决方案。您需要创建全局集
flush={frozenset("A23456789JQK"[i:i+5]) for i in range(8)},然后您可以创建一个包含五张卡片的列表(或字符串),例如:frozenset('8J97Q') in flush -
@MadPhysicist meta.stackexchange.com/questions/66377/what-is-the-xy-problem 的明确示例
标签: python algorithm encryption interpretation