in PYTHON

Family Tree Check.io

From the site:

You have a list of family relationships between father and son. Every element on this list has two elements. The first is the father’s name, the second is a son’s name. All names in the family are unique. Check if the family tree is correct. There are no strangers in the family tree. All connections in the family are natural.

Input: list of lists. Every element has two strings. List has at least one element

Output: bool. Is family tree correct

I’ve had some difficulty with this…and I realized I am probably severely overcomplicating this…

[pastacode lang=”python” manual=”def%20is_family(tree)%3A%0A%20%20%20%20fam%20%3D%20%7B%7D%0A%20%20%20%20for%20i%20in%20range(len(tree))%3A%0A%20%20%20%20%20%20%20%20if%20tree%5Bi%5D%5B0%5D%20not%20in%20fam.keys()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20fam.update(%7Btree%5Bi%5D%5B0%5D%3A%20%5B%5D%7D)%0A%20%20%20%20%20%20%20%20if%20tree%5Bi%5D%5B0%5D%20in%20fam.keys()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20children%20%3D%20fam.get(tree%5Bi%5D%5B0%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20children.append(tree%5Bi%5D%5B1%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20fam%5Btree%5Bi%5D%5B0%5D%5D%20%3D%20children%0A%20%20%20%20print(fam)%0A%0A%20%20%20%20source%20%3Dtree%5B0%5D%5B0%5D%0A%0A%20%20%20%20fathers%20%3D%20%5Bname%20for%20name%20in%20fam.keys()%5D%0A%20%20%20%20for%20name%20in%20fathers%3A%0A%20%20%20%20%20%20%20%20%23%20father%20for%20self%3F%0A%20%20%20%20%20%20%20%20if%20name%20in%20fam%5Bname%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20False%0A%20%20%20%20%20%20%20%20if%20len(fathers)%20%3E%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20i%20in%20range(len(fathers))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20parse%20the%20children%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20c%20in%20range(len(fam%5Bfathers%5Bi%5D%5D))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20stranger%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20fam%5Bfathers%5Bi%5D%5D%5Bc%5D%20not%20in%20fam%5Bsource%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20False%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20fam%5Bfathers%5Bi%5D%5D%5Bc%5D%20in%20fam.keys()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20father%20to%20brother%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20print(fam%5Bfam%5Bfathers%5Bi%5D%5D%5Bc%5D%5D%5B0%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20fam%5Bfam%5Bfathers%5Bi%5D%5D%5Bc%5D%5D%5B0%5D%20in%20fam%5Bfathers%5Bi%5D%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20False%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Father%20for%20Father%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20fathers%5Bi%5D%20in%20fam%5Bfam%5Bfathers%5Bi%5D%5D%5Bc%5D%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20False%0A%0A%20%20%20%20return%20True%0A” message=”” highlight=”” provider=”manual”/]

So my first thought was to make a dictionary to hold  {father: children}, but accessing that got really confusing and honestly even after a run trying it…i cant get it right. It fails on this assert:

[pastacode lang=”python” manual=”%20%20%20%20assert%20is_family(%5B%0A%20%20%20%20%20%20%20%20%5B’Logan’%2C%20’Mike’%5D%2C%0A%20%20%20%20%20%20%20%20%5B’Logan’%2C%20’Jack’%5D%2C%0A%20%20%20%20%20%20%20%20%5B’Mike’%2C%20’Alexander’%5D%0A%20%20%20%20%5D)%20%3D%3D%20True%2C%20’Grandfather'” message=”” highlight=”” provider=”manual”/]

I;ve got a fairly easy work day tomorrow so I think I will walk through it from scratch…maybe even ditch the dictionary concept all together….anyway…working on learning new stuff and growing. Just wanted to document it.

Write a Comment

Comment