Guilherme Soares

Guilherme Soares

HomeBlog

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.

8 min read
Como executar programas JavaScript localmente antes de submeter no 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.

js
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:

js
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:

txt
10
js
const fs = require('fs');

const input = fs.readFileSync(0, 'utf8');
const numero = Number(input);

console.log(numero);

Vários números na mesma linha:

txt
10 20
js
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:

txt
10
20
30
js
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:

txt
programacao
js
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:

js
const fs = require('fs');

const input = fs.readFileSync(0, 'utf8');
const lines = input.split('\n');

Testando localmente

Crie um arquivo main.js:

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:

txt
10 20

Execute no terminal:

bash
node main.js < input.txt

Saída esperada:

txt
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.

Related Posts

Hello World

Hello World

A simple hello world post to get started.

1 min read