Fiz um código correto, executa corretamente no console mas não no hackerrank porquê?

o exercicio é o seguinte : Input Format

A entrada do problema será sempre um objeto chamado obj com as seguintes propriedades:

  • jaTomouVacina : do tipo booleano (true ou false), que indica se a pessoa já tomou vacina ou não.
  • temComorbidade : do tipo booleano (true ou false), que indica se a pessoa tem alguma comorbidade ou não.
  • idade : do tipo number, que indica a idade da pessoa

Output Format

Você deverá imprimir na tela apenas uma das opções abaixo:

  • JA TOMOU VACINA : caso a pessoa já tenha tomado a vacina
  • INAPTA : caso a pessoa não tenha tomado a vacina, mas não esteja apta a tomá-la ainda, por qualquer outro motivo que seja.
  • APTA POR IDADE : caso a pessoa esteja apta a tomar a vacina por conta de sua idade, independentemente de ter alguma comorbidade ou não.
  • APTA POR COMORBIDADE : caso a pessoa esteja apta a tomar a vacina pelo fato de ter alguma comorbidade, mesmo que não tenha a idade mínima necessária.

eu fiz o seguinte código :
var obj = {

jaTomouVacina: true ,
temComorbidade: true ,
idade: 28,
resultado1: “INAPTA”,
resultado2: “APTA POR COMORBIDADE”,
resultado3: “APTA POR IDADE”,
resultado4: “JA TOMOU VACINA”
}

if(obj.jaTomouVacina===false && obj.temComorbidade===false && obj.idade <60) {console.log(obj.resultado1)}

else if(obj.jaTomouVacina===false && obj.temComorbidade===true && obj.idade <60) {console.log(obj.resultado2)}

else if(obj.jaTomouVacina===false && obj.temComorbidade===false && obj.idade >=60) {console.log(obj.resultado3)}

else {console.log(obj.resultado4)}

Acho que a lógica fica mais simples assim:

var obj = {
    jaTomouVacina: true ,
    temComorbidade: true ,
    idade: 28
}

if (obj.jaTomouVacina) {
    console.log("JA TOMOU VACINA");
} else if (obj.idade >= 60) {
    console.log("APTA POR IDADE");
} else if (obj.temComorbidade) {
    console.log("APTA POR COMORBIDADE");
} else {
    console.log("INAPTA");
}

Dá algum erro nesse hackerrank? Não sei como funciona.

Sim, dá erro no hackerrank. Não sei o motivo! Ele testa o código de várias formas possíveis procurando brecha. Essa forma mais simplificada que você escreveu também imprimiu como se fosse errado. Mas no console do navegador funciona normal! De qualquer forma obrigado!!

Tava vendo uns exemplos de como o Hackerrank funciona e parece que você precisa de um método para processar a entrada. Tenta assim:

function processData(obj) {
    if (obj.jaTomouVacina) {
        console.log("JA TOMOU VACINA");
    } else if (obj.idade >= 60) {
        console.log("APTA POR IDADE");
    } else if (obj.temComorbidade) {
        console.log("APTA POR COMORBIDADE");
    } else {
        console.log("INAPTA");
    }
}
1 curtida

Piorou ainda mais o erro kkk. De qualquer forma enviei e-mail para os professores:

Tem que ver como os dados de entrada são passados. Não diz isso no exercício?

O pior que o erro tá batendo. Pode colocar os números que indicaram erro que vc vai ver que realmente faz a leitura errada. falando do outro código :

var precos =
[2034, 454, 453, 534, 5, 43, 54, 35, 34, 5, 3, 45, 3, 45, 345]
var total = 0;
var gastouMaisDe200 = false;
for (const preco of precos) {
if (preco > 200) {
gastouMaisDe200 = true;
}
total = total + preco;
}

if (total > 1000 && gastouMaisDe200 ===true)
{console.log(“PREMIUM”)}

else if (total > 1000 && gastouMaisDe200 ===false)
{console.log(“VIP”)}

else
{console.log(“NORMAL”)}

O da vacina agora funcionou 100% agora. Ficou assim :

function solucao(obj) {
//seu codigo aqui
if (obj.jaTomouVacina) {
console.log(“JA TOMOU VACINA”);
} else if (obj.idade >= 60) {
console.log(“APTA POR IDADE”);
} else if (obj.temComorbidade) {
console.log(“APTA POR COMORBIDADE”);
} else {
console.log(“INAPTA”);
}
}

function processData(input) {
solucao(JSON.parse(input));
}

process.stdin.resume();
process.stdin.setEncoding(“ascii”);
_input = “”;
process.stdin.on(“data”, function (input) {
_input += input;
});

process.stdin.on(“end”, function () {
processData(_input);
});

1 curtida