数学在优惠券上的应用(编程篇)

数学在优惠券上的应用(编程篇)

(image source: pixabay)

之前分享了数学在优惠券上的应用, 怎么利用数学找出优惠券上的规律,并且利用规律生成新的可用的优惠代码。

前文规律回顾:

某家的优惠码基本是这个规律:47000RRRRRCODEZ

  • RRRRR:代表随机号码,比如12345
  • CODE:4位 code,这是最主要的号码,每个相同类别的折扣码都会有相同的 code。
  • Z:最后的一位号码叫check sum,就是检查之前号码的总和。可以通过以下公式获得: 10 -((总数(单数位+ 偶数位x3))%10)

通过上面的规则,可以看出如果知道CODE,就只需要算出check sum就可以获得一个完整的优惠代码。
下面我们就写个小程序完成自动生成新的优惠代码这个步骤吧。

这是PHP版本:

1
2
3
4
5
6
7
 function couponGenerator($data) {
//47000+5位随机数字+CODE
$data="47000"."".rand(10000,99999)."".$data;
//前面的数字加上check sum
$data=$data."".addchecksum($data);
return $data;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//checksum的算法
//10 -((总数(单数位+ 偶数位x3))%10)
function addchecksum($data){
$checksum=0;
for ($x = 0; $x < 14; $x++) {
//如果是单位数
if($x%2==0){
$checksum+=intval($data[$x]);
}
//如果是双位数
else{
$checksum+=intval($data[$x])*3;
}
}
return "".((10-$checksum%10)%10);
}

Python 版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
def addchecksum(stuff):
checkdigit = 0
for j in range(14):
if j % 2 == 0:
checkdigit += int(stuff[j])
else:
checkdigit += int(stuff[j]) * 3
print(str(stuff) ) + str((10 -(checkdigit % 10))%10)

def coupon_generator(price):
for j in range(100):
i = randint(0, 99999)
addchecksum("47000" + "%05d" % i)

非常简单的小程序。很多程序代码不难写,难写的是思路,只要理清一下思路,代码想怎么写就可以怎么写。

这是利用以上PHP代码完成的一个自动生成优惠码的网页:https://lowescoupongenerator.000webhostapp.com/index.php
你可以随便玩,随便生成新的优惠码,反正都用不了~ 因为目前的CODE已经过期了,我好久已经没更新了~

好了,代码完成了。十几行代码可能省去很多精力算出新的优惠码~


Posted from my blog with SteemPress : http://ericet.vornix.blog/2018/12/29/%e6%95%b0%e5%ad%a6%e5%9c%a8%e4%bc%98%e6%83%a0%e5%88%b8%e4%b8%8a%e7%9a%84%e5%ba%94%e7%94%a8%e7%bc%96%e7%a8%8b%e7%af%87%ef%bc%89/



This page is synchronized from the post: 数学在优惠券上的应用(编程篇)

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×