我一直在考虑用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中编写了一个类,我希望通过IronPython将其包装到.net程序集中并在C#应用程序中实例化.我已经将类迁移到IronPython,创建了一个库程序集并引用它.现在,我如何实际获得该类的实例?
该类看起来(部分)像这样:
class PokerCard:
"A card for playing poker, immutable and unique."
def __init__(self, cardName):
Run Code Online (Sandbox Code Playgroud)
我在C#中编写的测试存根是:
using System;
namespace pokerapp
{
class Program
{
static void Main(string[] args)
{
var card = new PokerCard(); // I also tried new PokerCard("Ah")
Console.WriteLine(card.ToString());
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
为了在C#中实例化这个类,我该怎么办?
目前,我正在尝试在Python中获取一个方法,以返回一个零个,一个或两个字符串的列表,以插入字符串格式化程序,然后将它们传递给字符串方法.我的代码看起来像这样:
class PairEvaluator(HandEvaluator):
def returnArbitrary(self):
return ('ace', 'king')
pe = PairEvaluator()
cards = pe.returnArbitrary()
print('Two pair, {0}s and {1}s'.format(cards))
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此代码时,编译器会将IndexError:tuple索引超出范围.
我应该如何构造我的返回值以将其作为参数传递给.format()
?
我有一个HTML文档,我希望将文本语义分组到UL的头部作为"标题".最初的尝试看起来像这样:
<ul id="databases">
Databases:
<li>Microsoft SQL Server - 10+ years</li>
<li>Sybase SQL Server - 5 years</li>
<li>Oracle - 5 years</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
W3C验证器指出UL内部没有允许文本,但在LI之外.我可以将文本放在LI中,然后使用伪类:first-child在我的CSS中找到"header",但这显然不是语义上正确的方法.
我该如何妥善处理?
这个问题的简短形式:在多线程WinForms应用程序中使用Forms.Timer是否恰当?
更具体地说,我正在构建一个应用程序,它使用多个System.Threading.Timers异步启动进程,检查包含这些异步进程结果的队列,并更新应用程序主表单显示的统计信息.
在这样的应用程序中,是否适合使用Forms.Timer来实际检查应用程序统计信息并将它们绘制到主窗体中,或者这只会让应用程序顺利运行?
我以为我开始掌握编程的"Python方式".类的方法接受self作为第一个参数来引用正在调用该方法的上下文的类的实例.@ classmethod装饰器引用一个方法,其功能与类相关联,但不引用具体实例.
那么,如果没有实例引用调用该方法,那么@classmethod(规范'self')的第一个参数是什么意思?
在我看来,我的很多调试时间花在追踪复杂语句中的空引用异常上.例如:
For Each game As IHomeGame in _GamesToOpen.GetIterator()
Run Code Online (Sandbox Code Playgroud)
为什么,当我得到NullReferenceException时,我可以获取堆栈跟踪中的行号,但不能获取等于null的对象的名称.换句话说,为什么:
Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)
代替
_GamesToOpen is not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)
要么
Anonymous object returned by _GamesToOpen.GetIterator() is null.
Run Code Online (Sandbox Code Playgroud)
要么
game was set to null.
Run Code Online (Sandbox Code Playgroud)
这是一个严格的设计选择,是为了保护代码的匿名性,还是编译器设计中有一个令人信服的理由不在调试时异常中包含这些信息?
我刚买了一台售价低于1,000美元的新笔记本电脑,其中一款主要面向消费者,非开发商市场,并且仔细查看规格,惊讶地发现它标配双核处理器.
这引出了一个问题:随着多核机器成为常态,编写单线程应用程序是否正确?
除了可以合理地预期完全适合运行最弱系统的单个处理器的单个核心的简单应用程序之外,在所有一个线程中运行的应用程序将被现代操作系统传播其执行的方式严重降级当应用程序没有给出关于如何优化这种分割的指导时,跨核心?
我需要在运行Apache,MySQL和PHP的XPSP3机器上设置测试环境.我原来的测试环境是一个旧盒子,在Win2k下运行这三个.那个盒子死了.在Windows上运行从来都不是最佳选择,因为最终的托管环境是CentOS Linux.
这些天在XP上设置虚拟机最简单的方法是什么?在编码时,我不想花费所有时间来修改测试环境.
作为后续问题,在我的测试环境中使用与我的部署相同的发行版有多重要?我根本不懂CentOS,但我对Fedora或Ubuntu很满意.
python ×4
.net ×3
.net-2.0 ×1
apache ×1
c# ×1
captcha ×1
class-method ×1
concurrency ×1
exception ×1
html ×1
ironpython ×1
largenumber ×1
linux ×1
mysql ×1
optimization ×1
php ×1
self ×1
theory ×1
tuples ×1
winforms ×1