kripton2007
Power Member
Estou com dúvidas na resolução desta ficha... dá para dar uma ajudinha?
--Para representar a informação sobre arvores genealogicas vamos usar os seguintes tipos:
data Pessoa = P String ArvG --nome e genealogia
data ArvG = Orfao --ambos os pais desconhecidos
|SoPai Pessoa
|SoMae Pessoa
|PaeMae Pessoa Pessoa
--Para simplificar vamos assumir que os nomes que aparecem são unicos, isto é, se aparecerem nomes repetidos referem-se à mesma pessoa.
--1.Defina a função avos:essoa->[String] que, calcula os nomes dos avós de uma pessoa.
--2. A árvore genealogica de uma pessoa permite apenas consultar os antecedentes de um dado individuo. Para consultar os seus descendentes
--precisamos de ter uma lista de árvores destas.
--Defina então uma função netos::String->[Pessoas]->[String] que, dada uma lista de pessoas e um nome determine os netos dessa pessoa (aqueles cujos avós são a pessoa dada).
--3.Finalmente, defina uma função primos::String->[Pessoas]->[String] que calcule os primos de uma dada pessoa (duas pessoas são primas se têm um avô em comum).
Cumps
--Para representar a informação sobre arvores genealogicas vamos usar os seguintes tipos:
data Pessoa = P String ArvG --nome e genealogia
data ArvG = Orfao --ambos os pais desconhecidos
|SoPai Pessoa
|SoMae Pessoa
|PaeMae Pessoa Pessoa
--Para simplificar vamos assumir que os nomes que aparecem são unicos, isto é, se aparecerem nomes repetidos referem-se à mesma pessoa.
--1.Defina a função avos:essoa->[String] que, calcula os nomes dos avós de uma pessoa.
--2. A árvore genealogica de uma pessoa permite apenas consultar os antecedentes de um dado individuo. Para consultar os seus descendentes
--precisamos de ter uma lista de árvores destas.
--Defina então uma função netos::String->[Pessoas]->[String] que, dada uma lista de pessoas e um nome determine os netos dessa pessoa (aqueles cujos avós são a pessoa dada).
--3.Finalmente, defina uma função primos::String->[Pessoas]->[String] que calcule os primos de uma dada pessoa (duas pessoas são primas se têm um avô em comum).
Cumps