1151 - Fibonacci Fácil - Presentation Error (100%)
E lá vamos nós outra vez.
Faz uns dias que estou travado nesse presentation error.
A resposta do beecrowd é genérica, não mostra o output.
Meu código:
var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');
let a = parseInt(lines);
let penultimo = 0;
let ultimo = 1;
if (a > 1) {
let answer = [penultimo, ultimo];
for (let num = 1; num < a - 1; num++) {
let temp = ultimo;
ultimo += penultimo;
penultimo = temp;
answer.push(ultimo);
}
let output = "";
for (let num = 0; num < answer.length; num++) {
output += answer[num] + " ";
}
console.log(output);
console.log();
} else if (a == 1) console.log(0);
Esperado pelo beecrowd:
Minha saída:
Link do exercício:
https://www.beecrowd.com.br/judge/pt/problems/view/1151
Se alguém descobrir e puder me apontar o erro na apresentção ficarei extremamente grato!
André Filipe @andresantosObserve:
I) Já que a entrada é apenas um número inteiro, não existirá o
\n.
II) Se você substituir o espaço em branco que há entre os números dooutputpor um*, verá que a saída para a entrada5será0*1*1*2*3*. É necessário remover o último espaço em branco.
III) Oconsole.log()escreve uma linha e a questão não pediu isso.- TThiago Nebuloni @thiagonebuloni
Boa André!
Hoje no almoço pensei nisso, nos espaços entre os números. Vou testar trocar o espaço por um . para ver.
Valeu!
Em resposta athiagonebuloni⬆:Isabela Schadt @IsabelaSchadtEstou presa nessa questão também Thiago, eu fiz totalmente diferente mas também esta dando erro. Coloquei o seu pra rodar e percebi uma coisa que percebi no meu, mas não sei como arrumar. Se testarmos a entrada com
8a saida vai ser0 1 1 2 3 5 8 13, quando na verdade deveria ser0 1 1 2 3 5.
Ainda não consegui concertar a lógica disso no meu, mas talvez seja essa a chave da nossa correção.- TThiago Nebuloni @thiagonebuloni
Se testarmos a entrada com 8 a saida vai ser 0 1 1 2 3 5 8 13, quando na verdade deveria ser 0 1 1 2 3 5 .
Mas é exatamente isso que o exercício pede:
Escreva um algoritmo que leia um inteiro N (N < 46) e mostre os N primeiros números dessa série.
No exemplo ele coloca 5 e a saída são os 5 primeiros números da sequência de Fibonacci:
Se você entrar com 8 ele deve imprimir os 8 primeiros números.
Pode dizer qual é o erro que está aparecendo pra você? Se fosse erro de lógica apareceria Wrong Answer (X%). Se estiver aparecendo Presentation Error como no meu, então deve ser um problema de espaços.
A correção para o meu problema foi iniciar a variável de saída com 0, porque esse seria o primeiro número em quase todos os casos, a menos que o número de entrada fosse também 0, assim não mostraria nenhum dos números.
let output = "0";Também precisei alterar o início da iteração para 1, como o 0 já está na variável de saída, podemos começar pela segunda posição, o índice 1.
Assim ele fica "0 1 2 ..."Antes estava iniciando com um espaço antes do 0: " 0 1 2 ..."
for (let num = 1; num < answer.length; num++) { output += answer[num] + " "; }
Isabela Schadt @IsabelaSchadtAhhhh, é mesmo kkkkk. Eu tinha entendido que a soma dos dois últimos números da sequencia seria o numero de entrada, mas vi de novo e diz "primeiros N números dessa sequência.", em relação a soma é só para explicar a sequencia né. Agora a vida faz mais sentido hahahah, vou tentar mexer no meu com as dicas de vocês e ver se agora eu consigo.
Obrigada André e Thiago!!
- Em resposta aIsabelaSchadt⬆:
Isabela Schadt @IsabelaSchadtInclusive, se descobrir posta aqui por que estou quase desistindo dessa bendita questão kkkkk
André Filipe @andresantosAs correções que sugeri para a resposta do Thiago são:
I) Substituir
var lines = input.split('\n'); let a = parseInt(lines);por
const a = parseInt(input);II) Substituir
console.log(output);por
console.log(output.trim());III) Remover
console.log();