【问题标题】:Is there a way to create base13 numbering system in python? [duplicate]有没有办法在 python 中创建 base13 编号系统? [复制]
【发布时间】: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

标签: python algorithm encryption interpretation


【解决方案1】:

当然,碱基很简单

alphabet = "A23456789TJQK"

def convert_to_base_13(x):
    q,r = divmod(x,13)
    if q == 0:
       return alphabet[r]
    return convert_to_base_13(q) + alphabet[r] 

现在您可以将基数为 13 的 146 表示为“Q4”

我不太确定这对你的纸牌游戏有什么帮助

【讨论】:

  • 我喜欢你的函数,有没有办法直接在main()函数中实现而不需要调用外部函数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 2022-12-05
  • 2020-11-22
  • 1970-01-01
  • 2020-08-29
  • 2022-01-24
相关资源
最近更新 更多