Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Para que você possa resolver este exercício, definimos para você as funções maeDe e paiDe, que, recebendo um filho (string), retorna o nome (string) da mãe ou pai conforme apropriado. Exemplo:
paiDe(cleoPires) "Fábio Júnior" maeDe(cleoPires) "Glória Pires"
Agora é a sua vez de criar as funções: temAMesmaMae que tem dois filhos por parâmetro e retornará true oufalse se eles realmente compartilharem a mesma mãe. Sabendo disso você pode usar a função que nós lhe damos maeDe.
temOMesmoPai que como o anterior, pega dois filhos por parâmetro e retorne true oufalse se eles compartilharem o mesmo pai. Sabendo disso você pode usar a função que nós lhe damos paiDe.
E saoMeioIrmaos, que, recebendo dois filhos por parâmetro, nos diga se de fato são meio-irmãos. Você deve usar as duas funções anteriores aqui. Lembre-se que os meios irmãos são dados quando, dois filhos compartilham a mesma mãe, mas NÃO o mesmo pai ou vice-versa. Bem, se ambos têm a mesma mãe e o mesmo pai, nesse caso eles seriam irmãos!
O teste me da esse resultado e não estou conseguindo entender o porque minha lógica está errada quero ajuda para entender não solução por favor, obrigado.
Sua solução não passou as provas
Resultados do teste:
-
cleoPires e fiuk são meio irmãos Ver detalhes
-
sandy e junior não são meio irmãos
-
sandy e fiuk não são meio irmãos
-
junior e fiuk não são meio irmãos
Ok, vamos a minha solução!
function maeDe(filho){
return "Glória Pires"
}
function paiDe(filho){
return "Fábio Júnior"
}
function temAMesmaMae(filho1, filho2){
return maeDe(filho1) == maeDe(filho2);
}
function temOMesmoPai(filho1, filho2){
return paiDe(filho1) == paiDe(filho2);
}
function saoMeioIrmaos(filho1, filho2){
return temAMesmaMae(filho1, filho2) != temOMesmoPai(filho1, filho2);
}Ok esta é uma coisa que eu não entendi não ficou claro pra mim eu preciso por Exemplo criar assim?
function paiDe(filho){
if(filho == Fiuk){
return "Fabio Junior"
}else{
return "Xororó"
}
}não, teria que ser algo genérico, tem que tratar essa informação como se viesse de uma fonte externa eu usaria um objeto:
Observe tanto no método maeDe quanto paiDe eu chamo o método getListaDePais que me retorna a lista completa com todos os filhos e informação de pais então uso como referencia a string filho passada como parâmetro para pegar a informação especifica que desejo ex:
listaDePais.fiuk.mae;
listaDePais.cleoPires.mae;
listaDePais.fiuk.pai;
listaDePais.cleoPires.pai;
function maeDe(filho){
const listaDePais = getListaDePais();
return listaDePais[filho].mae;
}
function paiDe(filho){
const listaDePais = getListaDePais();
return listaDePais[filho].pai;
}
function temAMesmaMae(filho1, filho2){
return maeDe(filho1) == maeDe(filho2);
}
function temOMesmoPai(filho1, filho2){
return paiDe(filho1) == paiDe(filho2);
}
function saoMeioIrmaos(filho1, filho2){
return temAMesmaMae(filho1, filho2) !== temOMesmoPai(filho1, filho2);
}
function getListaDePais() {
return {
'fiuk': {
'mae': 'Cristina Karthalian',
'pai': 'Fábio Júnior'
},
'cleoPires': {
'mae': 'Glória Pires',
'pai': 'Fábio Júnior'
},
'sandy': {
'mae': 'Noely Pereira de Lima',
'pai': 'Durval de Lima'
},
'junior': {
'mae': 'Noely Pereira de Lima',
'pai': 'Durval de Lima'
}
};
}
console.log(saoMeioIrmaos('cleoPires', 'fiuk')); // true
console.log(saoMeioIrmaos('sandy', 'junior')); // false
JsBin: [https://jsbin.com/vufumukido/edit?html,js,console,output](https://jsbin.com/vufumukido/edit?html,js,console,output)
Seu erro é simples você fez os métodos "maeDe" e "paiDe" sempre retornarem o mesmo valor então todo resultado é equivalente a "são irmãos", faltou um objeto para mapear os pais de cada filho.