别声明:本文为新华网客户端新媒体平台“新华号”账号作者上传并发布,仅代表作者观点,不代表新华号的立场及观点。新华号仅提供信息发布平台。
明天就是除夕了,春节就在眼前,独乐乐不如众乐乐。
如果要选择一种声音代表新春佳节的团聚,除了噼里啪啦的鞭炮、杯盏相碰的清脆,一句“三缺一”和麻将桌上哗啦啦的搓麻声必定占有一席之地。
麻将是一场概率游戏和策略博弈。
19世纪的麻将牌长这样(图源:Wiki)
故事还要从【清一色】讲起。
先补充点背景知识。标准麻将牌包含“筒”、“条”、“万”、“风”和“箭”五套花色,每种牌有4张是相同的。4名玩家初始摸得13张牌,之后按照逆时针摸一张牌再打出一张牌,直到他摸到最后一张牌,14张牌可以凑成23333的排列组合,即为胡牌。
从上到下分别为“筒”、“条”、“万”(图源:Wiki)
用公式表示就是:m*AAA+n*ABC+DD。m,n可以为0(理科生的脑回路真奇妙)
如果最终胡牌的牌面为同一花色,就叫清一色。
一个叫李志光的数学家发现了一种有趣的牌形。
好牌(图源:Mathematical aspects of the combinatorial game “Mahjong”)
仔细看,你会发现下一张只要摸到的也是筒,不管是一筒到九筒中的哪一张,都可以胡牌。这牌,只要一推倒,众人定有不明觉厉之感。
至此开始,一个娱乐问题成功上升为科研课题,行话叫“k门问题”。
用数学符号代表刚才的牌形,那就是X1X1X1X2X3X4X5X6X7X8X9X9
计算概率,大体的思路就是:尝试所有Xi的组合,然后检验每种组合是否符合k门的要求。这样的重复性运算,交给Python程序就够了
一段源代码截图
结果是这样的。
这个问题很实用了,理解了其中奥义,你也能拥有牌局的大局观。来看看他们是怎么算的。
首先需要用数学语言定义每一种牌形。他们选择了一对数字(c, n),c表示花色,0为条、1为万,2为筒;n表示具体的数字。比如(0, 3)就是三条,(1, 5)就是五万。
(2,7)和(2,5) 图源:flicker
接下来设置一段数列V,即14个(c,n)的集合,用来表示完整的牌面。这时你就可以用逻辑语言定义出胡牌(complete)的条件。最后一步是设计一个变量,定量地表示牌面的好坏。研究者引入了“缺牌数”的定义,也就是距离运算到胡牌状态,还差几张牌。
接下来的运算结果请收好,这是一份科学的打牌秘籍。(过年发财就靠它了)
基础版——清一色
1、如果你已经凑出了两个“3连”(包括刻子和顺子),且它们不连续,那么缺牌数小于等于2;
2、如果你的牌面是以下两种情况之一,那么缺牌数为3
5个对子+一个杠;
5个对子+1个刻子+1张单牌
进阶版——多花色
1、对于任意组合的一副牌,最大缺牌数为6。要置换6张牌才能胡的牌面就是最烂的牌;
2、如果你的牌面是以下3种情况之一,那么缺牌数小于等于5
两个不连续的“3连”(包括刻子和顺子);
一个“3连”和一个“准3连”(只需要碰一下或者吃一个就能凑出刻子或顺子);
4个“准3连”
面对具体的牌面时,置换麻将牌的方案不止一种,此时需综合考虑缺牌数和胡牌成本,以及方案的可行性。
举个栗子,如果你的牌面是这样的,那么你可以考虑3种搭配方案:
先把牌码上,看起来顺眼一些。
还有研究证实,麻将的益智作用有益于阿尔茨海默病患者。(多打麻将好处多)
当然,专业的科学家费劲编写程序来还原麻将的游戏规则,初衷倒不是为各位玩家搞一套打牌指南,而是为了开发人工智能。毕竟围棋高手阿尔法狗和阿尔法零相继横空出世,麻将高手机器人也指日可待。
问:图中有几个人在打麻将(图源:unsplash)
各位麻将高手,你期待和机器人PK的那天吗?
参考资料:
2.Sanjiang Li , Xueqing Yan. Let’s Play Mahjong! arXiv:1903.03294v1
《万物》杂志致力于为中国青少年家庭奉献最完整、权威的科普知识图谱!
内容横跨七大学科,涵盖环境生态、工程机械、太空探索、物理化学、历史人文、生物医学等方方面面,将完整的、前沿的科技新知整合为有趣的、有逻辑链的故事。
形成的知识图谱,方便孩子消化理解,并转化为长期记忆,几乎可以对标中学课程中的所有理工科目知识点。
我们还用思维导图、阅读书单、科学课程以及多媒体等多种方式,让孩子产生持续探究的动力,形成更完整的知识体系。
好啦,就让我们在新的一年里,共同感受科学的魅力,用好奇心点亮世界!
《万物》,献给对世界好奇的你!
撰文 | 比邻星
来源:新华号 万物杂志
着微信,QQ等社交媒体的普及,人们自我表达的方式也越来越多样化,除了文字,语音,图片等形式也比以往任何时候都要使用的更加频繁。其中,图片作为文字表达的重要补充,在某些特定场合的恰当运用,往往可以收到意想不到的效果。通过各种表情图片生动形象地表达自己的当时的喜怒哀乐以及一些难以用语言精准描述的微心理也渐渐成为一种趋势,进而演变成为当今大家都喜欢的斗图日常,但是,微信收藏表情的数量是有上限的,不能一直收藏,要是遇到更有趣的图片,为了实时更新自己的“弹药库”,也就只能忍痛割爱了。好在现在有不少网站为我们提供了丰富的图片资源,我们只要能快速获取我们需要的图片,构建自己专属的斗图“弹药库”就可以了,抓取斗图啦网站的图片来壮大自己的“弹药库”这个想法也就自然应运而生了。具体做法也很简单:先把整个爬虫的思路和框架大概了解了一下,学习掌握如何抓取jpg格式的图片,但这只是第一步,因为无论是jpg格式还是png格式的图片都是静态的图片,在斗图日趋火爆的今天,感觉这种“炮弹”的“杀伤力”不是很大,我们多数人希望在斗图的时候用的最好是动图,而且是要那种有多嘚瑟就有多嘚瑟的动图,这样发到对方手机上,才能更有效果。所以,在完成代码的基础上,需要做一些修改。这么做是为了让代码的扩展性更强一点,方便我们按需获取我们想要的图片格式,或者获取所有我们想要的图片格式。思路大概就是这样,不是很难,最后需要加上异常处理以及多线程来完善整个代码块,使得整个代码的稳定性和效率都能提高一些。
简单介绍完思路,下面就直接上代码和效果图,这里以获取圣诞主题的图片为例进行相关的演示。
代码:
# -*- coding:utf-8 -*-
__author__='YangW'
import requests,threading
from lxml import etree
from bs4 import BeautifulSoup
def get_html(url):
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}
try:
response=requests.get(url, headers=headers)
html=response.content
return html
except:
print('request error')
pass
#匹配图片url,通过自定义函数来实现
def get_img_html(html):
soup=BeautifulSoup(html,'lxml')
all_a=soup.find_all('a',class_='list-group-item')
for i in all_a:
img_html=get_html(i['href']) #获取源码
get_img(img_html)
#图片url
def get_img(html):
soup=etree.HTML(html)
items=soup.xpath('//div[@class="artile_des"]')
for item in items:
imgurl_list=item.xpath('table/tbody/tr/td/a/img/@onerror')
start_save_img(imgurl_list)
#下载图片
x=1
def save_img(img_url):
global x
x+=1
img_url=img_url.split('=')[-1][1:-1]
suffix=img_url.split('.')[-1]
if suffix=='gif':
print u'正在下载'+'http:'+img_url
img_content=requests.get('http:'+img_url).content
with open('doutu/%s.%s'%(x,suffix),'wb') as f:
f.write(img_content)
def start_save_img(imgurl_list):
for i in imgurl_list:
# print i
th=threading.Thread(target=save_img,args=(i,))
th.start()
#主函数
def main():
start_url='https://www.doutula.com/article/list/?page={}'
#for i in range(21,532):
#for i in range(1,5):
for i in range(1,2):
start_html=get_html(start_url.format(i)) #获取源码
get_img_html(start_html) #获取内页图片的url
if __name__=='__main__': #判断文件入口
main()
效果图:
1.抓一波日常斗图
图1
2.抓一波圣诞特辑
图2
说明:这个下载下来直接查看是很难的,一般电脑默认的图片查看器是无法查看这种gif格式的动图的,除非你以网页的形式打开。为了使您正常浏览爬取到的动图,建议安装“美图看看”软件以便查看。当然,如果要把这些动图发到微信上,是可以正常显示的。
除夕将至,打开手机,在各种祝福满天飞的时候,不知道您是否有种手机里祝福的图片不是很多或者很多都是别人发过的感觉,再发一遍,情义肯定是会有的,但新意似乎就有点不给力啊,为了让您的新意配得上您的心意,不知道您是否有想过爬点别出心裁的图片以表达自己在新年对家人,佳人,和朋友满满的祝福,如果这种想法在您内心深处蠢蠢欲动的话,希望小编的这篇小文章和小想法对您能有所帮助。
目:
学 号:
班 级:
姓 名:
完成时间
报告要求须知
目录
1 摘要 2
2 系统分析设计与实现 3
2.1 系统需求分析及选题依据 3
2.2 系统总体设计 3
2.2.1功能模块图 3
2.2.2总体流程图 5
2.3 系统详细设计 6
2.3.1系统资源 6
2.3.2登陆注册理模块详细设计 7
2.3.3查看天气模块详细设计 8
2.3.4查看笑话块详细设计 9
2.3.5查看美女图片详细设计 10
2.3.6跳转手机应用模块详细设计 11
3 系统测试 13
4 总结 17
5 参考文献 19
1 摘要
Android是基于Linux核的软件平台和操作系统,以其特有的开放性在智能手机、平板电脑等领域广泛应用。近几年电子商务得到了迅速的发展,通过Internet进行交易己成为一种潮流。两者的结合,便产生了具有巨大发展潜力的移动电子商务。
本系统主要是探索Android与电子商务的结合,以手机商城为例,实现用户浏览,搜索,购买商品等功能。本商城选择sqlite数据库,实现对数据库中商品进行增,删,改,查的功能,并对客户订单进行管理。该系统较平常购物系统有更好的移动性与跨平台性。通过测试,已能够在Android手机上运行使用其各项购物流程。
关键词:Android;sqilte;电子商务;网上购物
2 系统分析设计与实现
2.1 系统需求分析及选题依据
2.1.1 选题的目的
该课题要求设计并实现一个基于Android平台的手机网上商城。随着Internet的不断发展,网络在人们生活中占据了不可代替的地位。以前人们经常通过PC机的购物系统进行商品的浏览和购买,使他们享受足不出户的购物乐趣。但这些已经越来越不能满足人们日益增长的生活需求,我们想要随时随地都可以关注我们喜欢的商品的动向,它有没有打折或者是其他的一些信息,这就使得我们需要一种可以安装在手机上的商城软件,这样即方便了人们的出行携带,又方便人们随时随地进行浏览商品和购物。这样的软件还增加了客户购买的机率,给商家创造了更大的利润,所以我选择设计这款软件。因为我自己本身就是特别喜欢网上购物,这样的软件不仅操作起来方便快捷,而且能最大限度的服务大众,是人们现在生活不可或缺的服务性软件。
2.1.2选题的意义
基于Android平台的手机网上商城的设计实现改变了人们以往的购物模式,人们不必被限制在电脑前购物,也不需要刻意去找时间去上网浏览商品,或者是购物。只要拥有了Android手机,你就可以随时随地的查看商品,不管是什么地方、什么时间生产的商品你都可以通过手机,动动你的手指轻松的查找到,这样不仅增加了购物的效率,而且也能使得人们心情愉悦,再也不会因为想买自己心仪的商品却怎么也找不到而苦恼了。u人们在一天的生活中,可能等待的时间是最久的,但随着生活节奏的加快,很多人不愿意白白的浪费自己的时间等待,有了这款软件,人们可以利用自己的等待时间做一些自己感兴趣的事,比如说淘一件自己喜欢的衣服,给即将要来的春天添一件新装等等。
总之,在人们高效率生活的今天,如何节约时间、如何高效的利用时间已经成了所有人都会去思考的问题。基于Android平台的手机网上商城正好给人们节约下了购物的时间,让他们可以将这些时间投入到工作或者是生活的其他方面,没有了时间的限制,购物才能变的更加便捷和有趣。
2.2 系统总体设计
2.2.1总体功能设计
系统的总体功能包括注册登录、浏览搜索、查看详情、立即购买、加入购物车结算、我的个人信息
系统的总体功能模块图如下图2-1所示:
图2-1 系统功能模块图
2.2.2总体流程设计
系统的总体流程是:首先打开登录页面,然后注册后登录首页,在首页可以浏览搜索自己喜欢的商品查看详情,在商品详情页额可以立即购买或暂时加入购物车。在购物车页面可以选中要购买的商品进行结算,所有购买的商品可以在我的页面中的我的订单中查看购买详情。
系统的总体流程图如下图2-2所示:
图2-2系统总体流程图
2.2.3数据库设计
(1)数据库E-R图设计
用户信息包括:用户名、密码、地址。用户信息E-R图如图2-3所示。
图2-3 用户信息E-R图
商品信息包括编号、名称、标题、分类、价格、图片。用户信息E-R图如图2-4所示。
图2-4 商品信息E-R图
订单信息包括用户名,商品编号、商品名称、商品价格、收货地址。用户信息E-R图如图2-5所示。
图2-5 订单信息E-R图
(2)数据库表格设计
本系统共包3个表格,具体如下:
根据用户信息E-R图可设计出数据库所对应的用户信息的表格,其中用户的username是主键,不允许为空,为字符型20个字节,其余也是字符型,长度略有不同。
用户信息表user
表2-1 user用户信息表
列名 | 数据类型 | 长度 | 允许空 | 说明 |
username | varchar | 20 | N | 用户名 |
password | varchar | 30 | Y | 密码 |
address | varchar | 100 | N | 收货地址 |
商品信息表stuff
表2-2 stuff商品信息表
列名 | 数据类型 | 长度 | 允许空 | 说明 |
id | int | 8 | N | 编号 |
name | varchar | 30 | N | 名称 |
title | varchar | 100 | 标题 | |
kind | varchar | 10 | N | 分类 |
price | float | 10 | N | 价格 |
pic | int | 100 | N | 图片路径转的二进制数据 |
订单信息表record
表2-3 record订单信息表
列名 | 数据类型 | 长度 | 允许空 | 说明 |
id | int | 8 | N | 商品编号 |
name | varchar | 30 | N | 商品名称 |
title | varchar | 100 | N | 商品标题 |
address | varchar | 100 | N | 收货地址 |
price | float | 10 | N | 价格 |
2.3 系统详细设计
2.3.1系统资源
在程序开发阶段,首先确定工程名为SmallShop,据程序模块设计的内容,建立SmallShop工程。工程源代码的结构如下图2-6、2-7所示。
图2-6系统资源图1
图2-7系统资源图2
2.3.2登录注册理模块详细设计
功能描述:登录注册程序
效果截图如下图2-8所示
图2-8注册登录效果图
2.3.3商店首页搜索浏览模块详细设计
功能描述:在商店主页可以搜索浏览展示商品信息列表。
效果截图如下图2-9所示:
图2-9首页搜索浏览效果图
2.3.4商品详情页模块详细设计
功能描述:展示商品详细信息
效果截图如下图2-10所示
图2-10 商品详情页效果图
2.3.5购物车模块详细设计
功能描述:选中购物车商品核算价格进行结算
效果截图如下图2-11所示
图2-11 购物车模块效果图
2.3.6我的模块详细设计
功能描述:修改收货地址和查看我的订单等信息
效果截图如如下图2-12所示:
图2-12我的模块效果图
3 系统测试
测试过程及效果图如下所示:
图3-1 注册登录测试图
图3-2 搜索功能测试图
图3-3 价格核算功能测试图
4 总结
1、知道如何快速掌握一门语言。在学习JAVA的过程中,娄老师先让我们快速地将课本浏览一遍,找出自己不会的地方,然后带着问题去做实验,这样就能够深刻理解课本中的内容,效率很高;
2、有了做工程的经验。通过项目实践,基本了解了做项目的步骤和方法,即可行性分析、需求分析、总体设计、详细设计、编码测试、运行维护,尤其是对需求分析有了更深刻的了理解,为以后的科研学习打下了基础。
3、基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
4、通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如:要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。
5、对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理,通过Bundle对数据在界面之间进行传输。
Android是一种很错的手机系统,使用起来简单,而且可以根据自己的需求选择适合自己的版本,非常的方便。我要多多学习关于android的知识,在未来,将android系统研发的更加人性化,使用起来更加的舒适。
5 参考文献
[1]李刚彪.数据库加密技术的研讨与完成[D].太原理工大学,2010:18-78.
[2]杨云君.Android的设计与完成[M].北京:机械工业出版社,2013:5-65.
[3]秦明甫.基于混沌实际的数字图像加密研讨[D].重庆大学,2009:34-48.
[4]柯除夕.Android内核分析[M].北京:电子工业出版社,2011:67-98.
[5]李刚.疯狂Android讲义[M].北京:电子工业出版社,2013:12-87.
[6]吴明航.DES和RSA混合加密算法的研讨[D].哈尔滨工业大学,2013:13-56.
[7]顶峰.Linux内存管理的设计与完成[D].沈阳工业大学,2007:45-89
[8]陈最.基于Android平台挪动终端通明加密零碎的研讨与完成[D].重庆理工大学,2012:108-150.
[9]佟晓筠,王翥,杜宇,岳银亮.基于软件平安混合加密技术的研讨[J].计算机工程,2004,23(33):98-100.
[10]程庭,张明慧,石公营.一种基于DES和RSA算法的数据加密方案及完成[J].河南教育学院学报(自然迷信版),2003,22(3):69-71.
[11]XinChen,SongweiMa,BingliGuo,YanWang,JuhaoLi,ZhangyuanChen,YongqiHe.Anovelfragmentation-awarespectrumallocationalgorithminflexiblebandwidthopticalnetworks[J].OpticalSwitchingandNetworking,2014(12):6-22.
[12]廉士国,李忠新,王执铨.两种基于局部加密的图像和视频加密方案[J].计算机工程,2004,4(11):11-34.
[13]Zhu,ZhiwuLiu,XuLi,Xiangyu.RatchetingBehaviorsoftheCarbonFiberReinforcedPEEKComposites:ExperimentalStudyandNumericalSimulation[J].Polymers&PolymerComposite,2014,(221):45-230.
*请认真填写需求信息,我们会在24小时内与您取得联系。