摘要:于是就有機智的程序員開發出了親戚關系計算器,可以通過指定關系的疊加,計算出互相之間的關系稱謂,有的還可以通過稱呼來倒推關系。這個版本的算法是網上相對最完善的,并且被自帶親戚計算器功能所采用。
春節到了,免不了要去七大姑八大姨家拜年,順便接受長輩們的關懷。有時偶然遇到許久沒見過的遠房親戚,叫不出合適的稱謂就尷尬了;或者即便被家人提示了叫法,但依然不知道和自己是什么關系。
于是就有機智的程序員開發出了 親戚關系計算器 ,可以通過指定關系的疊加,計算出互相之間的關系稱謂,有的還可以通過稱呼來倒推關系。這種工具網上已經有了不少版本,網頁、App、微信小程序,都能搜到不少。不過講真,考慮到實際中能遇上的復雜關系以及東西南北各地稱呼不一樣,其實算不上實用。
但對于程序員來說,解決問題本身就具有挑戰的樂趣。
目前我看到比較好的版本是:
https://github.com/mumuy/relationship
演示地址:
http://passer-by.com/relationship/
小程序版本
這個問題看似簡單,其實處理起來也并不是幾行代碼就能解決的。簡單介紹下 mumuy 這個版本的原理:
定義最基本的原子關系,比如:f:父,m:母,h:夫,w:妻,s:子,d:女,xb:兄弟,ob:兄,lb:弟,xs:姐妹,os:姐,ls:妹
通過關系鏈,表示復合關系,比如:爺爺就是f,f,伯父就是f,ob
講前兩點對應關系用字典的方式預先整理好,就是所有關系鏈到稱謂的直接映射
定義可簡化的關系,比如:哥哥的姐姐就是自己的姐姐,即 xb,xs 就是 xs;母親的丈夫 m,h 就是父親 f。這一步的作用是為了將復雜的關系鏈轉化成可查找到的直接關系鏈
為了處理性別、長幼帶來的影響,作者還額外定義了一些修飾符:1:男性,0:女性,&o:年長,&l:年幼,#:隔斷,[a|b]:并列
定義好以上信息好,當獲取用戶的輸入后,將其轉化成關系符號,再遞歸簡化關系鏈,直到不可再簡化為止,再去映射關系中查找稱呼。
這個版本的算法是網上相對最完善的,并且被MIUI自帶親戚計算器功能所采用。
作者的詳細解讀:
https://www.jianshu.com/p/74290f1ae838
我本來也打算挑戰一下,后來發現其實蠻復雜,估計等我寫好,《難忘今宵》都唱完了,于是作罷。就在此版本的基礎上,做了個 python 版本的移植(原版是 js)。
本來打算嘗試用 jiphy 等自動工具來把 js 轉成 python,結果發現效果差到不能看,所以最后是手動轉的。原項目在文本和關系鏈處理時用了大量的正則計算,而我在轉代碼時也靠 SublimeText 的正則替換省了很多事。但同樣是正則,js 和 python 的寫法又有不少區別,可以說這個項目讓我對 正則表達式 的熟練度又 +1 了。
python 版代碼:https://gitee.com/crossin/snippet/tree/master/relationship
════
其他文章及回答:
如何自學Python | 新手引導 | 精選Python問答 | Python單詞表 | 人工智能 | 爬蟲 | 我用Python | requests | 計算機視覺 | 字符播放器 | 一圖學Python | 智能防擋彈幕
歡迎搜索及關注公眾號: Crossin的編程教室
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43141.html
摘要:本人已從養豬轉行軟件測試,聊聊當年的經歷我的老家在農村,雖然現在家里已經不養豬了,但是父母每逢春節還是會買兩頭大肥豬。每年年底這兩頭大肥豬賣的一萬元錢,能頂他們半年的收入了。用糧食喂養的豬,它們是非常精神的,肉質也很香嫩。 ...
摘要:彼時,從虛擬化管理到公有云,熱鬧異常。雖然年才明顯放棄公有云的全面競爭,但在年決定發起和開源項目是,不說明確,至少已經隱隱覺得肯定搞不過亞馬遜了。年前賣的多火,被視為虛擬主機的升級版。當然不是新堆棧,而是傳統堆棧。 還記得在十多年前,SaaS鼻祖SalesForce喊出的口號『No Software』嗎?SalesForce在這個口號聲中開創了SaaS行業,并成為當今市值460億美元的Saa...
摘要:可能是被領導拒絕漲薪給刺激了,就一直想著跳槽漲薪。還有就是那個不肯漲薪的領導,辭職以后,所有的都是,卻連都不愿意給我漲。 畢業1年時間,從2k漲到15k,轉行測試承...
閱讀 2335·2023-04-26 00:28
閱讀 3083·2019-08-30 15:55
閱讀 2754·2019-08-30 12:47
閱讀 1564·2019-08-29 11:04
閱讀 3195·2019-08-28 18:14
閱讀 955·2019-08-28 18:11
閱讀 1682·2019-08-26 18:36
閱讀 3400·2019-08-23 18:21