计算亲戚关系,有没有优雅的思路

2016-12-30 17:47:49 +08:00
 ebeb

计算亲戚关系,我的 XXX 的 XXX [的 XXX ] 是 YYY。如,我的爸爸的妈妈是奶奶。

我的想法是这样: XXX 限定在哥哥、姐姐、弟弟、妹妹、爸爸、妈妈、丈夫、妻子、儿子、女儿。 YYY 是最后计算的结果,比如姑姑、姑奶奶等。

目前我建立的模型是这样:

class Person {
    string current_title;		//当前称呼
    Person compare;			//用于比较大小的对象,比如爸爸的弟弟可能是“伯父”、“叔公”
    //下面十个分别代表哥哥、弟弟、姐姐、妹妹、爸爸、妈妈、丈夫、妻子、儿子、女儿
    string elder_brother;
    string litte_brother;
    string elder_sister;
    string litte_sister;
    string father;
    string mother;
    string husband;
    string wife;
    string son;
    string daughter;
}

根据当前的current_title不同,后边十个属性分别取不同的称呼。

这样的模型,可以用,但是总感觉这种方法很傻。

求教,这个问题有没有优雅的解决思路。

1267 次点击
所在节点    程序员
3 条回复
285571052
2016-12-31 11:41:17 +08:00
有个想法,但是还是很麻烦的样子。
假设有 哥哥、弟弟、姐姐、妹妹、爸爸、妈妈、丈夫、妻子、儿子、女儿 这些实例对象,两两对象之间的关系是明确的,然后用一个指针指向最终的对象,比如 我哥哥的姐姐的妈妈的女儿 这样,最终指针指向姐姐,然后判断姐姐和'我'的关系。
mumuy
2022-03-02 17:10:15 +08:00
mumuy
2022-03-02 17:11:09 +08:00
我写的一套亲戚关系的算法: https://github.com/mumuy/relationship/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/331304

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX