您现在的位置是:休闲 >>正文
易语言彩票算法直选转换组选
休闲78人已围观
简介易语言里写彩票工具的人不少,但真正把直选和组选转换逻辑吃透的没几个。我见过一个源码,作者用三层嵌套循环硬算组选,结果跑1000注号码要等三秒多。其实直选转组选的核心就一句话:把有序数字变成无序组合,再 ...
易语言里写彩票工具的易语言彩人不少,但真正把直选和组选转换逻辑吃透的票算没几个。我见过一个源码,法直作者用三层嵌套循环硬算组选,选转选结果跑1000注号码要等三秒多。换组其实直选转组选的易语言彩核心就一句话:把有序数字变成无序组合,再按规则去重。票算
直选号码是法直带位置的。比如排列三的选转选直选123,百位1、换组十位2、易语言彩个位3,票算顺序固定。法直组选呢?选转选组六不分顺序,123、换组132、213、231、312、321都算同一注。组三更特殊,两个相同数字加一个不同数字,比如112,它的直选形态有112、121、211三种。豹子号如111,直选和组选完全一致,只有一注。
转换时最容易踩的坑是组三的重复计数。有人写代码把直选号码排序后直接当组选,结果112排序后还是112,但121排序后变成112,211也变成112。三注直选对应同一注组选,如果不去重,组选注数就虚高了。正确的做法是:先把直选号码的各位数字取出来,按从小到大排序,生成一个字符串键值,再用哈希表或数组去重。易语言里可以用“节点”或者“文本数组”来实现。
具体代码思路是这样的。假设直选号码存在一个文本数组里,每个元素是三位字符串。循环取出每个号码,用“取文本中间”分别拿到百十个位,转成整数后比较大小,手动排序。排序后的三位数字拼成新字符串,比如“123”。然后检查这个字符串是否已经存在于结果数组中,不存在就加入。这样跑下来,组六的直选转组选是6合1,组三是3合1,豹子是1合1。
有个细节要注意:彩票号码允许前导零。直选012,取位后是0、1、2,排序后还是012。如果用数值型变量存储,0会被丢掉,变成12,那就错了。所以全程用文本处理,别偷懒转整数。我见过一个开源项目就因为这个问题,导致所有含0的号码转换后少了一位,用户反馈后作者查了两天才找到。
性能方面,直选全组合是1000注,转组选后组六120注、组三90注、豹子10注,总共220注。用易语言的数组去重,1000次循环加上文本比较,现代CPU上毫秒级完成。如果嫌慢,可以预先建一个220个元素的哈希表,键是排序后的字符串,值是组选号码,直接查表替换。但没必要,这点计算量连易语言的解释器都扛得住。
实际写的时候,建议把转换封装成子程序,输入直选文本数组,输出组选文本数组。内部用两个循环:外层遍历直选,内层做排序和去重。排序可以用冒泡,三个数字最多比较三次,写死就行。去重用“文本数组”的“是否存在”命令,易语言自带,比自己写循环快。
最后说个观察:很多人把直选转组选和组选转直选搞混。组选转直选是展开,组六展开成6注,组三展开成3注,豹子还是1注。方向反了,逻辑完全不同。直选转组选是收敛,去重是关键;组选转直选是发散,排列是关键。写代码前先想清楚方向,能省不少调试时间。
Tags:
相关文章
如何利用社交媒体进行网店SEO推广
休闲我见过太多网店卖家把社交媒体和SEO当成两件事来做:一边在抖音发产品视频,一边在淘宝后台闷头改标题。结果两边都做了,流量却始终上不去。直到有个卖手工皮具的店主告诉我,她一条展示制作过程的抖音视频,竟然 ...
【休闲】
阅读更多现在怎么找到附近卖的女的
休闲打开手机应用商店,输入“附近”两个字,能跳出来一堆交友软件。图标花里胡哨,名字一个比一个直白。点进去,满屏都是头像,距离显示“0.3km”“1.2km”。你以为这就找到了?太天真。那些距离数字,多半是 ...
【休闲】
阅读更多发卡网官网
休闲去年冬天,我在一个游戏群里看到有人甩了条链接,配文是“刚补的卡,秒到”。点进去,页面简陋得像是2012年的产物——白底蓝字,一个输入框,一个下拉菜单,底下孤零零挂着支付宝和微信的收款码。但就是这么一个 ...
【休闲】
阅读更多