Nos concursos ToPAS Lx, a avaliação dos programas é feita pelo sistema Mooshak, desenvolvido no DCC-FCUP. Para que este sistema automático de avaliação considere que um programa resolve um problema, é necessário que o programa satisfaça várias restrições, que se explicam nas seguintes secções:
Para se poder submeter um programa, é necessário estar-se inscrito no concurso. As três secções seguintes explicam a interação com o Mooshak:
O código fonte de cada programa tem de estar num único ficheiro, cujo nome tem a extensão habitual (prog.c, prog.cpp, Prog.java, prog.pas).
Se o programa for em Java:
O nome do ficheiro tem de ser igual ao nome da classe que tem o método "main".
Não podem criar pacotes; as classes têm de pertencer ao "package default".
Tamanho máximo (do ficheiro com o código fonte) de um programa: 64 Kbytes.
Os warnings do compilador são considerados erros de compilação.
Compilem os programas (na vossa máquina) antes de os submeterem ao Mooshak, com as mesmas flags de compilação usadas pelo Mooshak:
O Mooshak corre em Linux e usa as seguintes versões dos compiladores:
Tempo máximo de compilação de um programa: 60 segundos.
Tempo máximo de CPU: 1 segundo (por teste)
Memória disponível para variáveis globais e dinâmicas: 3 megabytes
Memória disponível para pilha de execução e variáveis locais: 1 megabyte
Os dados de entrada são lidos da entrada padrão (standard input), como se fossem introduzidos pelo teclado.
Os resultados são escritos na saída padrão (standard output), como se fossem escritos na consola.
Todas as linhas (do input e do output) terminam com uma mudança de linha.
Por omissão (se o enunciado não especificar o contrário), há exatamente um espaço a separar os dados consecutivos de uma linha.
Nenhuma linha começa com espaços e nenhuma linha termina com espaços (um espaço é o separador).
Os seguintes programas calculam o produto de dois números inteiros. O input tem uma linha com dois inteiros (separados por um espaço) e o output tem uma linha com o produto dos dois inteiros.
C
#include <stdio.h> int main( ) { int m, n, prod; scanf("%d %d", &m, &n); prod = m * n; printf("%d\n", prod); return 0; }
C++
#include <iostream> using namespace std; int main( ) { int m, n, prod; cin >> m >> n; prod = m * n; cout << prod << endl; return 0; }
Java
import java.util.Scanner; class Product { public static void main( String[] args ) { Scanner input = new Scanner(System.in); int m = input.nextInt(); int n = input.nextInt(); int prod = m * n; System.out.println(prod); } }
Pascal
program Product; var m, n, prod : integer; begin readln(m, n); prod := m * n; writeln(prod) end.
Ver o enunciado de um problema: (A, B, ..., G) + View
Fazer uma pergunta sobre um problema ao júri: (A, B, ..., G) + Ask
Submeter um programa para resolver um problema:
(A, B, ..., G) + Choose File + Submit
O ficheiro a enviar é o que tem o código fonte do programa
(extensão c, cpp, java ou pas).
Ver todas as submissões: Submissions
Ver a classificação atual: Ranking
Ver todas as perguntas e respostas: Questions
Ver o significado das mensagens do Mooshak (entre outra informação): Help
As funcionalidades relacionadas com listagens (Print e Printouts) estão desativadas.
Accepted: O programa produziu o output correto em todos os testes. Parabéns! O problema foi resolvido.
Em todos os outros casos, o programa não foi aceite. Para resolver o problema, é necessário corrigir os erros e efetuar uma nova submissão. A mensagem do Mooshak ajuda a identificar o tipo dos erros. Se clicarem na mensagem de erro da submissão que não foi aceite, poderão obter mais informação.
Compile Time Error: Ocorreu um erro ou um aviso durante a compilação (ver Restrições: Compilação).
Runtime Error: Ocorreu um erro durante a execução do programa.
Time Limit Exceeded: O programa não terminou dentro do limite de tempo dado (ver Restrições: Execução do Programa).
Memory Limit Exceeded: A quantidade de memória requerida pelo programa é excessiva (ver Restrições: Execução do Programa).
Wrong Answer: O output do programa não está correto (em, pelo menos, um dos testes).
Presentation Error: O output do programa não está corretamente formatado (por exemplo, há um espaço a mais ou uma linha não terminada com a mudança de linha, ver Restrições: Input e Output).
Invalid Submission: O ficheiro enviado não tem uma extensão válida (c, cpp, java, pas).
Output Limit Exceeded: O output produzido pelo programa é excessivamente grande (> 80 Kb).
Program Size Exceeded: O ficheiro enviado é excessivamente grande (ver Restrições: Programa Fonte).
Requires Reevaluation:
Por alguma razão, o programa tem de ser reavaliado.
Se isto ocorrer, enviem uma mensagem a "mm at fct.unl.pt"
Invalid Function: O programa usa uma função não permitida ou, por vezes, excedeu a memória dada.