python生日计算器_python版亲戚关系计算器
春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀。有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了;或者即便被家人提示了叫法,但依然不知道和自己是什么关系。
于是就有机智的程序员开发出了亲戚关系计算器,可以通过指定关系的叠加,计算出互相之间的关系称谓,有的还可以通过称呼来倒推关系。这种工具网上已经有了不少版本,网页、App、微信小程序,都能搜到不少。不过讲真,考虑到实际中能遇上的复杂关系以及东西南北各地称呼不一样,其实算不上实用。
但对于程序员来说,解决问题本身就具有挑战的乐趣。小程序版本
这个问题看似简单,其实处理起来也并不是几行代码就能解决的。简单介绍下 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 了。
════
其他文章及回答:
欢迎搜索及关注公众号:Crossin的编程教室
python生日计算器_python版亲戚关系计算器相关推荐
- java亲戚称呼计算器_python版亲戚关系计算器
春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者即便被家人提示了叫法,但依然不知道和自己是什么关系. 于是就有机智的程序员 ...
- JavaScript,js的亲戚计算器,中国亲戚关系计算器
JavaScript,js的亲戚计算器,中国亲戚关系计算器 工具简介 由于工作生活节奏不同,如今很多关系稍疏远的亲戚之间来往并不多.因此放假回家过年时,往往会搞不清楚哪位亲戚应该喊什么称呼,很是尴尬. ...
- python版亲戚关系计算器
2019独角兽企业重金招聘Python工程师标准>>> 春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者 ...
- Python实现一个简单的中国亲戚关系计算器,可能自己多少都有点混乱吧
相关文件 对了大家可以关注小编的公众号哟~~ 公众号 Python日志 会不定时的更新一些好玩的资源的哟 导语 每年的春节,都会有一些自己几乎没印象但父母就是很熟的亲戚,关系凌乱到你自己都说不清. 今 ...
- 【Python项目】Python实现一个亲戚关系计算器,过年回家再也不要怕叫错人了 | 附带源码
前言 halo,包子们上午好 一个简单的中国亲戚关系计算器 python实现版本 每年的春节,都会有一些自己几乎没印象但父母就是很熟的亲戚,关系凌乱到你自己都说不清. 今年趁着春节在家没事情干,正好之 ...
- Java实战之亲戚关系计算器(JavaFX版)(1)——项目简述
项目简述: 该项目是一个通过JavaFX实现的计算亲戚关系的小程序,该小程序具有通过亲戚关系链计算称呼的功能.将介绍如何如何通过JavaFX来实现该项目的全部过程. 使用软件: IntelliJ ID ...
- Java实战之亲戚关系计算器(swing版)(1)——项目简述
项目简述: 该项目是一个通过Java实现的计算亲戚关系的小程序,该小程序具有通过亲戚关系链计算称呼的功能.将介绍如何如何通过Java来实现该项目的全部过程. 使用软件: IntelliJ IDEA 2 ...
- Java实战之亲戚关系计算器(swing版)(6)——实现计算功能
实现计算功能 在map包下创建RelationshipMap.java,其中内容如下: package map;import java.util.HashMap; import java.util.M ...
- js计算器代码加减乘除_理不清亲戚关系,程序员直接写了一个亲戚关系计算器,来试试?...
Java识堂,一个高原创,高收藏,有干货的微信公众号,欢迎关注 春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者即便被家人 ...
最新文章
- 信息与计算机科学考研学校排名,计算机科学与技术考研学校排名
- 【正一专栏】老夫老妻了,你还会说我爱你吗?
- 专注jQurey的博客【2012年度IT博客大赛分类推荐】
- 说说emit(上)基本操作
- RxJAVA notes
- android中的四种基本动画
- linux内核声卡管理,linux下声卡驱动简介
- 解决 uniapp 打包次数限制
- java mysql体检管理系统源码
- 显卡更新显示计算机无法识别,显卡驱动更新不了怎么办 显卡驱动更新不了解决方法...
- drupal html5,基于Drupal 7HTML5布局模板二次开发.doc
- 【笔记整理】网络攻防技术
- 测试基础(三)No Risk, No Test,证实和证伪相结合
- 详细了解 Linkerd 2.10 基础功能,一起步入 Service Mesh 微服务架构时代
- C语言 -指针 与解引用*
- windows 命令行切换目录
- winter 老师前端面试直播总结
- 自定义控件实现(淘宝头条/京东快报)垂直循环滚动栏目
- 【计算机网络】第三部分 数据链路层(11) 数据链路控制
- 牛客网 玩泥巴 Wasserstein Distance
热门文章
- webhook技术快速了解
- FileMaker Pro 2017使用JavaScript加载百度地图并与数据库记录同步切换
- win7打开计算机没盘符,计算机U盘盘符不显示怎么办?Win7系统U盘不显解决办法...
- 三分钟教你文档怎样翻译
- 那些年的java游戏_那些年我们曾为之痴迷的经典JAVA游戏(3)
- proe导出为html文件怎么打开,Proe组件另存为stp文件的注意事项
- 索尼平板sgp321android,Sony Xperia Tablet Z SGP321 LTE 16GB
- mysql 中添加索引的三种方法(一)
- 项目3-食物图片分类
- 初识do while语句