今いちばん話題の、貴族向けの新しいマッチングアプリNoble Knotsの開発に携わることになりました! 何世紀にもわたる王族同士の結婚のせいで、事態は…_複雑_になってしまいました。おっと、私たち双子だった という事態を避けるために、2人がどれくらい近い親戚なのかを調べるシステムを作るのが仕事です。
Noble Knotsは、アイスランドの「Islendinga-App」に着想を得ています。これは、アイスランドへの入植の時代までさかのぼり、アイスランド人の間に知られているすべての親族関係をたどるデータベースに支えられています。このアルゴリズムは、王家の家系図の中で2人の間の血縁の度合いを求めます。
このアプリは、完璧な相手に王冠を授ける手助けになるでしょうか?
課題は、家系図の中の2人の人物の間の隔たりの次数を求めることです。 これは、ハリウッドの俳優は誰でもケビン・ベーコンから6次以内にいる、というポップカルチャーの考え方に似ています。
次のような家系図があるとします。
┌──────────┐ ┌──────────┐ ┌───────────┐
│ Helena │ │ Erdős ├─────┤ Shusaku │
└───┬───┬──┘ └─────┬────┘ └────┬──────┘
┌───┘ └───────┐ └───────┬───────┘
┌─────┴────┐ ┌────┴───┐ ┌─────┴────┐
│ Isla ├─────┤ Tariq │ │ Kevin │
└────┬─────┘ └────┬───┘ └──────────┘
│ │
┌────┴────┐ ┌────┴───┐
│ Uma │ │ Morphy │
└─────────┘ └────────┘
TariqとUmaの隔たりの次数は2です(Tariq → Isla → Uma)。 IslaとKevinの間には知られた関係がありません。与えられたデータに接続がないためです。 UmaとIslaの隔たりの次数は1です。
IslaとTariqは兄弟で、隔たりの次数は1です。 同じように、この実装では、自分と父の兄弟との隔たりの次数は2であると報告されます。
Exercismに登録すれば、27個のコンセプト92個の演習、そして本物の人間によるメンタリングとともに、Common Lispを学んでマスターできます。すべて無料です。