相對距離

相對距離

中等

簡介

你受僱開發Noble Knots,這是貴族專屬、最新最夯的交友軟體!

歷經數百年的王室通婚,事情變得……複雜。

為了避免任何_哎呀,我們是雙胞胎_的窘境,你的任務就是打造一套系統,檢查兩個人之間的血緣關係有多近。

Noble Knots的靈感來自冰島的「Islendinga-App」,它背後有一個資料庫,記錄了自冰島定居時期以來所有已知的冰島人親屬關係。 你的演算法會判斷王室族譜中兩個人之間的分隔度數。

你的應用程式能促成最完美的王室姻緣嗎?

說明

你的任務是判斷家族樹中兩個人之間的分隔度數。 這有點像流行文化中的說法:每位好萊塢演員都在與 Kevin Bacon 相距六度之內。

  • 你會收到一份輸入,裡面包含所有父母的名字和他們的小孩。
  • 每個名字都是獨一無二的,一個小孩_可以_有一或兩個父母。
  • 分隔度數的定義是:從一個人到另一個人之間最少的連結數。
  • 如果兩個人沒有連結,就回傳一個代表「沒有已知關係」的值。 實際的實作方式請參考測試案例。

範例

給定以下家族樹:

      ┌──────────┐            ┌──────────┐     ┌───────────┐
      │  Helena  │            │  Erdős   ├─────┤  Shusaku  │
      └───┬───┬──┘            └─────┬────┘     └────┬──────┘
      ┌───┘   └───────┐             └───────┬───────┘
┌─────┴────┐     ┌────┴───┐           ┌─────┴────┐
│   Isla   ├─────┤ Tariq  │           │   Kevin  │
└────┬─────┘     └────┬───┘           └──────────┘
     │                │
┌────┴────┐      ┌────┴───┐
│   Uma   │      │ Morphy │
└─────────┘      └────────┘

Tariq 和 Uma 之間的分隔度數是 2(Tariq → Isla → Uma)。 Isla 和 Kevin 之間沒有已知關係,因為給定的資料中沒有連結。 Uma 和 Isla 之間的分隔度數是 1。

Note

Isla 和 Tariq 是手足,兩人之間的分隔度數是 1。 同樣地,這個實作會回報你和父親的兄弟之間的分隔度數是 2。


出處

vaeng連結會在新視窗或分頁中開啟
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
MoonScript Exercism

準備好開始 相對距離 了嗎?

註冊 Exercism,透過 126 個練習 和真人引導來學習並精通 MoonScript,全部免費。