跑胡子程序开发记录(二)——试探性实验

试探性实验

 

为了写好这个程序,得慢慢来,不能急于马上设计、搭框架、写代码。我先进行了一些试探性的实验。毕竟,实验成功也能立马看到一些有用的数据,也能决定程序开发的可行性。

我首先做的实验,便是对于一手牌,判断它是否胡牌。跑胡子的一手牌共20张,加上待进的一张共21张,首先考虑每三个或四个或两个一组,每组是多少胡,最终要所有的牌都能成组,且总胡子数至少为15。判断是否胡牌,这是最基本最底层的功能,如何快速高效准确的完成这一功能,也是考验编程的功底,也是最终我的程序能否完美的完成的关键了。后续的开发也证明,这一功能或类似的计算,是在程序运行过程中需要反复用到的。

这一功能,需要用到堆栈或是用递归函数来做完成。因为习惯使用C语言,便用C语言在完全不考虑图形界面的情况下来进行数字的验算,也是因为这个问题本身的规模不大,对于跑胡子的21张牌,一般也只是分为七组,所以最终的算法执行很快,只需要做一些简单优化即可。完成这一功能,也只花了一两天的时间,呆在老家的烤火桌边就完成了。

基于这一功能,便做了一些数据统计或穷举查找。比如,经过我的随机穷举统计,取得天胡的可能性为万分之三。目前,我能找到的一手胡子数最多的听牌了的牌局,可以胡11个字。此局为:0, 1, 2, 2, 3, 4, 5, 6, 6, 7, 12, 12, 15, 15, 15, 15, 16, 16, 17, 17。其中,0表示一,1表示二,依此类推,9表示十,10表示壹,19表示拾。当然,还有一些听牌数为10个的牌局,这里也就不一一列举了。在此,也欢迎有高手能分享听牌数更多的牌局。

在数据表示时,为什么没有用1表示字牌中的一而用0表示,我想真正的程序员是完全可以理解的,无需我多言。

 

你可能感兴趣的:(跑胡子程序开发记录(二)——试探性实验)