V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ebeb
V2EX  ›  程序员

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

  •  1
     
  •   ebeb · 2016-12-30 17:47:49 +08:00 · 1383 次点击
    这是一个创建于 2878 天前的主题,其中的信息可能已经有所发展或是发生改变。

    计算亲戚关系,我的 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不同,后边十个属性分别取不同的称呼。

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

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

    3 条回复    2022-03-02 17:11:09 +08:00
    285571052
        1
    285571052  
       2016-12-31 11:41:17 +08:00
    有个想法,但是还是很麻烦的样子。
    假设有 哥哥、弟弟、姐姐、妹妹、爸爸、妈妈、丈夫、妻子、儿子、女儿 这些实例对象,两两对象之间的关系是明确的,然后用一个指针指向最终的对象,比如 我哥哥的姐姐的妈妈的女儿 这样,最终指针指向姐姐,然后判断姐姐和'我'的关系。
    mumuy
        2
    mumuy  
       2022-03-02 17:10:15 +08:00
    mumuy
        3
    mumuy  
       2022-03-02 17:11:09 +08:00
    我写的一套亲戚关系的算法: https://github.com/mumuy/relationship/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1044 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:35 · PVG 03:35 · LAX 11:35 · JFK 14:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.