Também usei muito o Beecrowd e tinha um script assim. Porém o meu validava a entrada e saída também. Vou deixar aqui para referência.
Minha estrutura:
Eu resolvia os exercícios em c++ e tinha essa estrutura de pastas:
workspace
- resolvidos
- categoria (iniciante, geometria ...)
- 1001.cpp
- 1002.cpp
- in (arquivo com a entrada do beecrowd)
- out (arquivo produzido pelo meu programa)
- expected (arquivo com a saída do beecrowd)
- 1081.cpp (arquivo que estou trabalhando no momento)
- run.sh
run.sh:
g++ $1.cpp -o $1
/usr/bin/time -v ./$1 < in > out
code --diff out expected
O que isso faz?
usarei como exemplo ./run.sh 1081
g++ $1.cpp -o $1
-> compila o arquivo 1081.cpp
produzindo o programa 1081
(sim, sem extensão)
/usr/bin/time -v ./$1 < in > out
-> chama o programa time, que calcula quanto tempo demora para um programa executar e chama o programa 1081
passando para ele a entrada e escrevendo o que ele printar na saída
code --diff out expected
-> compara o arquivo produzido com o esperado
FYC: trabalhando com entrada e saída de arquivos direto no terminal
./$1 < in > out
se digitar somente isso quando o terminal vê o operador '<' ele passa todo o conteúdo do arquivo para dentro do programa. como se você tivesse digitado aquilo.
se o terminal encontrar o operador '>' vai escrever a saída do programa no arquivo substituindo completamente o conteúdo dele. útil nesse caso quando roda várias vezes
se o terminal encontrar o operador '>>' vai escrever a saída do programa no final do arquivo sem apagar o conteúdo existente. Útil para logs
Acredito que algum insight desses que usava possam te inspirar a melhorar seu script
Entendido completamente, Pilati
. Obrigado pelo comentário e levarei em consideração seus insights. Aliás, me parece que esse possa ser um dos problemas relacionados ao Beecrowd e outras plataformas de Pergunta e Resposta voltadas para programação. Me leva a ideia de, quem sabe um dia, tentar providenciar uma estrutura que possa apoiar quem realmente quer começar na programação por esse meio. Mas por hora, vou ver como posso melhorar meu script.
Enfim, agradeço!