相关疑难解决方法(0)

在Python中处理非常大的数字

我一直在考虑用Python进行快速扑克手牌评估.在我看来,加速这个过程的一种方法是将所有卡面和套装表示为素数,并将它们相乘以代表手.白衣:

class PokerCard:
    faces = '23456789TJQKA'
    suits = 'cdhs'
    facePrimes = [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 53, 59, 61]
    suitPrimes = [2, 3, 5, 7]
Run Code Online (Sandbox Code Playgroud)

    def HashVal(self):
      return PokerCard.facePrimes[self.cardFace] * PokerCard.suitPrimes[self.cardSuit]
Run Code Online (Sandbox Code Playgroud)

这会给每只手一个数值,通过模数可以告诉我手中有多少国王或多少颗心.例如,任何有五个或更多球杆的手将平均分为2 ^ 5; 任何有四个国王的手都会平均分为59 ^ 4等.

问题在于,像AcAdAhAsKdKhKs这样的七张牌的手的哈希值大约为62.7千万亿,内部代表需要大于32位.有没有办法在Python中存储这么大的数字,这将允许我对它进行算术运算?

python optimization largenumber

120
推荐指数
5
解决办法
22万
查看次数

为什么 Julia 中 2 ^ 3 ^ 4 = 0?

我刚刚读了 Quora 的一篇文章: http ://www.quora.com/Is-Julia-ready-for-production-use

在底部,有一个答案说:

2 ^ 3 ^ 4 = 0
Run Code Online (Sandbox Code Playgroud)

我自己尝试了一下:

julia> 2 ^ 3 ^ 4
0
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我不认为这是该语言中的错误。为了清楚起见,我们可以为 Julia 和我们人类添加括号:

julia> (2 ^ 3) ^ 4
4096
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好; 但是,这不起作用:

julia> 2 ^ (3 ^ 4)
0
Run Code Online (Sandbox Code Playgroud)

由于我正在学习,我想知道 Julia 如何将这个表达式求值为 0?评价先例是什么?

julia> typeof(2 ^ 3 ^ 4)
Int64
Run Code Online (Sandbox Code Playgroud)

julia

2
推荐指数
1
解决办法
289
查看次数

标签 统计

julia ×1

largenumber ×1

optimization ×1

python ×1