Bu, Calvin'in Hobileri tarafından topluluk için geriye kalan çeşitli zorluklardan biri .
Formdaki satırları içeren bir "soy ağacı tanımlayan" dosyayı alın:
[ID] [mother ID] [father ID] [gender] [full name]
http://en.wikipedia.org/wiki/Cousin adresindeki ilk soy ağacını tanımlayanlar gibi :
1 ? ? M Adam
2 ? ? F Agatha
3 ? ? M Bill
4 2 1 F Betty
5 2 1 M Charles
6 ? ? F Corinda
7 3 4 M David
8 6 5 F Emma
Dosya adını ve iki kimliği alan bir program veya işlev yazın ve bu kişilerin ilişkilerle ilgili genel İngilizce adlarını kullanarak en basit şekilde kanla nasıl ilişki kurduğunu gösterir. Giriş, STDIN, ARGV veya fonksiyon argümanları yoluyla olabilir, ancak çıkış STDOUT'a yapılmalıdır.
notlar
- Kimlikler pozitif tamsayılardır.
?
Ebeveynliği bilinmiyorsa kullanılır.- Grafiğin bağlanacağını ve döngüleri olmadığını varsayalım.
- Sen olabilir değil (bir kişinin üst kimliği kendi kimliği daha büyük olabilir, böylece) o kişinin önce her kişinin anne listelenmektedir varsayalım.
- Herkesin erkek veya kadın olduğunu ve herkesin tam olarak bir anne ve tam olarak bir babaya (doğru cinsiyette) sahip olduklarını varsayalım.
- İsimlerin benzersiz olduğunu varsayalım.
- İsimlerin içinde boşluklar olabilir.
Kan ilişkileri
Aşağıdaki ilişkilerin tanımları R , A kişisinin R mi yoksa B kişisi mi olduğunu belirler . İki R değişkeni listeleniyorsa, ilki dişi A , ikincisi erkek A içindir . Bunların hepsinin uygulanması gerekiyor. Birden fazla tanım eşleşirse, daha öncekiler kullanılacaktır. Parantez içindeki terimler, uygulanması gerekmeyen ancak başka tanımlarda tekrar kullanılacak olan cinsiyetten bağımsız terimlerdir. N ve M'yi içeren tanımlarda , N> 1 ve M> 0 olduğu varsayılır .
- kızı / oğlu: A , B'yi ebeveyn olarak listeler .
- anne / baba (ebeveyn): B , A'yı ebeveyn olarak listeler .
- Kız kardeş / erkek kardeş (kardeş): A ve B aynı anne ve babayı listeler .
- üvey kardeş / üvey kardeş (kardeş): A ve B aynı anneyi ya da aynı babayı listeler .
- yeğeni / yeğeni: A , B'nin kardeşi olan bir ebeveyni listeler .
- teyze / dayı: B , A'nın yeğeni veya yeğenidir.
- torun / torun ( A ), A'yı B'yi ebeveynleri olarak listeleyen bir ebeveyni listeler .
- büyükanne / büyükbaba (büyükbaba): B , A'nın torunu.
- büyük yeğen / yeğeni: A , B'nin kardeşi olan C'nin torunu .
- Büyük teyze / Büyük amca: B , A'nın yeğeni veya yeğenidir.
- torun / oğul (1. büyük torun): A , B'yi ebeveynleri olarak listeleyen bir C torunudur .
- büyük büyükanne / baba (büyük büyükbaba veya büyükanne): B , A'nın ilk büyük torunu.
- N'inci torun / evlat (N'ini torun): A , B'yi ebeveynleri olarak listeleyen bir (N-1) C torunu .
- Nth büyük büyükanne / baba (Nth büyük-büyükbaba veya büyükanne): B , A'nın Nth büyük torunu.
- Büyük yeğeni / yeğeni: A , B'nin kardeşi olan C'nin (N-1) büyük torunudur .
- Nth büyük teyze / amca: B , Nth büyük yeğeninin A'nın Nth büyük yeğenidir.
- kuzen: A , B'nin büyükbabalarından olan C'nin torunu .
- Dördüncü kuzen: A , B'nin (N-1) büyükbabası olan C'nin (N-1) inci torunudur .
- kuzeni M kat uzaklaştırıldı: bir torunu olan C arasında Mde grandparent olan B ya da A ve Mde torunu C arasında grandparent olan B .
- N. kuzeni M kat uzaklaştırıldı: bir PTH torun çocuğu olduğu C arasında q numaralı Büyük-grandparent olan B ,
N = min(P,Q) + 1
veM = |P-Q|
.
İçin Nth
yazma, 2nd
, 3rd
, 4th
, 5th
vb
İçin M times
yazma, once
, twice
, thrice
, 4 times
, 5 times
vb
Örnekler
Aşağıdaki dosyanın kullanıldığını varsayalım (birden fazla boşlukla baş etmek zorunda değilsiniz, ancak okunaklı olması için ekledim):
1 ? ? F Agatha
2 ? ? M Adam
3 ? ? F Betty
4 1 2 M Bertrand
5 1 2 F Charlotte
6 ? ? M Carl
7 ? ? F Daisy
8 3 4 M David
9 5 6 F Emma
10 ? ? M Edward
11 ? ? F Freya
12 7 8 M Fred
13 9 10 F Grace
14 ? ? M Gerald
15 ? ? F Hillary
16 11 12 M Herbert
17 13 14 F Jane
18 ? ? M James
19 15 16 F Kate
20 17 18 M Larry
21 ? 18 F Mary
Daha sonra giriş kimlikleri aşağıdaki şekilde çıkışlarla eşleşmelidir:
1 2 --> Agatha is not a blood relative to Adam.
8 3 --> David is the son of Betty.
9 13 --> Emma is the mother of Grace.
4 5 --> Bertrand is the brother of Charlotte.
9 4 --> Emma is the niece of Bertrand.
5 8 --> Charlotte is the aunt of David.
16 7 --> Herbert is the grandson of Daisy.
1 9 --> Agatha is the grandmother Emma.
12 5 --> Fred is the great-nephew of Charlotte.
4 13 --> Bertrand is the great-uncle of Grace.
16 3 --> Herbert is the great-grandson of Betty.
6 17 --> Carl is the great-grandfather of Jane.
19 2 --> Kate is the 3rd great-granddaughter of Adam.
1 17 --> Agatha is the 2nd great-grandmother of Jane.
20 4 --> Larry is the 3rd great-nephew of Bertrand.
5 16 --> Charlotte is the 2nd great-aunt of Herbert.
8 9 --> David is the cousin of Emma.
19 20 --> Kate is the 4th cousin of Larry.
16 9 --> Herbert is the cousin, twice removed, of Emma.
12 17 --> Fred is the 2nd cousin, once removed, of Jane.
21 20 --> Mary is the half-sister of Larry.
Bunları elle yazdım, bu yüzden herhangi bir hata görürseniz haberim olsun.
Başka bir test verisi seti (Scott Leadley tarafından sağlanmıştır, herhangi bir hata benimdir ve Martin'in değil)
Ptolemy soy ağacı
Resim açıklayıcıdır; Aşağıdaki veriler, " Ptolemaic Hanedanlığı " başlıklı Wikipedia makalesinden alınmıştır .
1 ? ? F Berenice I of Egypt
2 ? ? M Ptolemy I Soter
41 1 2 F Arsinoe II of Egypt
3 1 2 M Ptolemy II Philadelphus
4 ? ? F Arsinoe I of Egypt
5 ? ? M Philip
6 4 3 M Ptolemy III Euergetes
7 1 5 F Magas of Cyrene
8 7 ? F Berenice II
9 8 6 M Ptolemy IV Philopator
10 8 6 F Arsinoe III of Egypt
11 10 9 M Ptolemy V Epiphanes
12 ? ? F Cleopatra I of Egypt
13 12 11 M Ptolemy VI Philometor
14 12 11 F Cleopatra II
15 12 11 M Ptolemy VIII Physcon
19 ? ? F Eirene
16 14 13 M Ptolemy VII Neos Philopator
17 14 13 F Cleopatra III
18 14 15 M Ptolemy Memphites
20 19 15 M Ptolemy Apion
21 17 15 F Cleopatra IV
22 17 15 M Ptolemy IX Lathyros
23 17 15 F Cleopatra Selene I
24 17 15 M Ptolemy X Alexander I
25 23 22 F Berenice III of Egypt
26 23 24 M Ptolemy XI Alexander II
27 21 22 M Ptolemy XII Auletes
28 25 24 F Cleopatra V of Egypt
29 28 27 F Cleopatra VI of Egypt
30 28 27 F Berenice IV of Egypt
31 28 27 M Ptolemy XIII Theos Philopator
32 28 27 F Cleopatra VII Thea Philopator
33 28 27 M Ptolemy XIV
34 28 27 F Arsinoe IV of Egypt
35 ? ? M Julius Caesar
37 32 35 M Ptolemy XV Caesarion
36 ? ? M Mark Anthony
38 32 36 M Alexander Helios
39 32 36 M Ptolemy XVI Philadelphus
40 32 36 F Cleopatra Selene II