Como executar programas JavaScript localmente antes de submeter no Beecrowd
Guia de leitura, escrita e testes locais em JavaScript com Node.js para resolver problemas do Beecrowd.
Foto por Markus Spiske em Unsplash.
Nos problemas do Beecrowd, seu programa deve ler a entrada padrão, processar os dados e imprimir exatamente a saída pedida no enunciado. Em JavaScript, use Node.js e o módulo fs.
Modelo recomendado
Use fs.readFileSync(0, 'utf8'). Essa forma funciona bem localmente e também costuma funcionar no Beecrowd.
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8');
// escreva sua solução aqui
Para problemas com muitos números, normalmente é mais simples ler todos os valores de uma vez:
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8');
const values = input.trim().split(/\s+/).map(Number);
// use values[0], values[1], values[2]...
O split(/\s+/) separa a entrada por qualquer espaço em branco: espaços, quebras de linha e tabulações.
Lendo dados comuns
Uma única linha com número:
10
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8');
const numero = Number(input);
console.log(numero);
Vários números na mesma linha:
10 20
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8');
const [a, b] = input.trim().split(/\s+/).map(Number);
console.log(a + b);
Várias linhas:
10
20
30
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8');
const lines = input.trim().split('\n');
const a = Number(lines[0]);
const b = Number(lines[1]);
const c = Number(lines[2]);
console.log(a + b + c);
Texto:
programacao
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8');
const texto = input.trim();
console.log(texto);
Se o problema depende de espaços no começo ou no fim da entrada, evite trim() e preserve as linhas:
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8');
const lines = input.split('\n');
Testando localmente
Crie um arquivo main.js:
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8');
const [a, b] = input.trim().split(/\s+/).map(Number);
console.log(`SOMA = ${a + b}`);
Crie também um arquivo input.txt:
10 20
Execute no terminal:
node main.js < input.txt
Saída esperada:
SOMA = 30
Cuidados antes de enviar
- Imprima somente o que o enunciado pede.
- Use
Number()ou.map(Number)apenas quando a entrada for numérica. - Teste seu código com os exemplos do enunciado antes de submeter.
- Respeite espaços, quebras de linha e casas decimais exatamente como o problema solicita.