Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
別聲明:本文為新華網客戶端新媒體平臺“新華號”賬號作者上傳并發布,僅代表作者觀點,不代表新華號的立場及觀點。新華號僅提供信息發布平臺。
明天就是除夕了,春節就在眼前,獨樂樂不如眾樂樂。
如果要選擇一種聲音代表新春佳節的團聚,除了噼里啪啦的鞭炮、杯盞相碰的清脆,一句“三缺一”和麻將桌上嘩啦啦的搓麻聲必定占有一席之地。
麻將是一場概率游戲和策略博弈。
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小時內與您取得聯系。