Upload
acmchaptercusco
View
495
Download
0
Embed Size (px)
Citation preview
ACM Chapter Cusco Página 1
TUTORIAL ACERCA DEL USO DEL SISTEMA DE
CALIFICACION
Programming Contest Control (PC2) System
A continuación explicaré detalladamente el uso del sistema de calificación con un par
de ejemplos en los 4 lenguajes disponibles.
Previamente debes asignar el IP del servidor para establecer la conexión y así poder
realizar los envíos (server=localhost: 50002) cambiar por (server=IPdelServer:
50002), esto se tiene que editar en el archivo pc2v9.ini dentro del directorio bin de pc2.
ACM Chapter Cusco Página 2
En el desarrollo del concurso, podrás ver el estado del concurso en el scoreboard, para
ello hacer doble click en pc2board.bat dentro del directorio bin de pc2, con un usuario
y contraseña suministrada por los organizadores, por default es
user: scoreboard1
pass: scoreboard1.
Ahora si todo salió bien se generará un directorio html dentro de esta carpeta bin
seleccionar summary.html y podrás tener el status de los envíos en general actualizado
según eventos de envíos de los problemas, aunque se actualiza el archivo html, no se
verá estos cambios hasta que refresques el archivo en el navegador, tendrás que
actualizarlo cada vez para ver los cambios, si deseas que esto se realice
automáticamente sugiero que uses Firefox con un complemento llamado “reloadevery”
luego reiniciar el navegador, dar anticlick en la pestaña del summary.html e indicar la
frecuencia de actualización de este archivo del scoreboard.
ACM Chapter Cusco Página 3
Ahora cargamos nuestra ventana principal, la ventana de Team, para esto doble click en
pc2team.bat y luego ingresar nuestro nombre de equipo y la contraseña suministrados
por los organizadores del concurso.
ACM Chapter Cusco Página 4
Luego del login tendremos nuestra ventana principal para realizar nuestros envíos de
nuestros códigos de solución a los problemas.
Como vemos, tenemos la opción de enviar en varios lenguajes de programación.
Ahora vamos con el siguiente ejemplo, donde realizaremos la prueba de
funcionamiento.
Seleccionamos el problema al cual dimos solución y queremos enviarlo para su
respectiva verificación por parte de los jueces con los datos de prueba.
ACM Chapter Cusco Página 5
El problema de los primos, dice en líneas generales así:
Determinar la cantidad de números primos entre 2 números dados.
La primera línea es N, numero de casos de prueba, las siguientes N líneas son
a y b.
La salida imprime la cantidad de números primos entre a y b incluidos.
Input.
3
2 4
2 5
5 7
Output.
2
3
2
La solución en C++.
Ahora realizamos la prueba de nuestro código, invocando al compilador desde la línea de
comandos.
ACM Chapter Cusco Página 6
Para el caso de compilar y ejecutar nuestros programas desde línea de comandos,
debemos agregar al path del sistema, las rutas de estos compiladores, esto se explicará con
más detalle el día del concurso por que es opcional, puedes probar sin problemas desde tu
IDE favorito aunque usarlo desde consola tiene algunas ventajas que les mostraré a
continuación.
Simplemente lo llamamos desde línea de comandos asi.
En C/C++ se genera automáticamente un ejecutable a.exe, entonces luego de compilar lo
ejecutamos.
Ingresamos N = 2, luego la primera línea es a = 4 y b = 5, nos devuelve 1, luego vuelve a leer 2
números a = 3, b = 3 nos devuelve 1 también, ya se hizo 2 iteraciones, entonces nuestro
programa termina con resultado esperado.
ACM Chapter Cusco Página 7
A continuación un archivo de prueba *.in que es una forma más cómoda de probar grandes
cantidades de datos, sin necesidad de estar digitando cada vez que queremos probar nuestro
programa, también un archivo *.out este se encontrará en el servidor para la comparación de
resultados.
Entonces es hora de probar con nuestra otra forma en la cual no necesitamos digitar cada vez
que ejecutamos, simplemente lo cargamos así (recordar que primos.cpp y primos.in se
encuentran en el mismo directorio, sino se especifica su ruta):
Enter.
ACM Chapter Cusco Página 8
Ahora realizaremos el Envío con nuestra pantalla del Team.
Seleccionamos el archivo con el lenguaje realizado previamente, para compilar el
código en el server / judge.
ACM Chapter Cusco Página 9
Nos llegará ese mensaje de confirmación, esperando por nuestro resultado, que puede ser varios,
por ejemplo Wrong Answer, Time Limit Exceed, Compilation Error o Accepted.
ACM Chapter Cusco Página 10
Una vista del panel del Judge, mientras se realiza el testeo de la validez de nuestro programa.
Antes de recibir respuesta nuestro ScoreBoard se encuentra asi:
ACM Chapter Cusco Página 11
Luego en el Judge, luego de compilar e ingresar su propio *.in datos de entrada y luego
comparado con su propio *.out se verá lo siguiente.
Listo para dar el veredicto el juez da en:
Y recibiremos:
ACM Chapter Cusco Página 12
Actualizamos nuestro Scoreboard y tenemos:
El mismo algoritmo en C, quedaría de la siguiente forma.
Y la compilación es similar a lo visto con C++ pero en lugar de usar g++, usamos gcc.
ACM Chapter Cusco Página 13
Para el caso de C# a diferencia que C/C++ donde no importaban si los datos estaban separados
en varias líneas o incluso si estaban con saltos de línea porque solo buscaban el siguiente token,
debemos tener presente el formato de entrada, ya que en C# solo podemos leer líneas, si estas
líneas tiene varios datos separados por espacios, debemos trozar utilizando algunas funciones
que se muestran a continuación.
La función importante es la de una variable string, en este caso “línea” , invocamos a su método
Split que nos devuelve un arreglo de tokens separados por el char especificado en el parámetro,
en este caso el separador es un espacio.
Asumimos que como siempre tendremos 2 datos en la línea (salvo para N, ver código)
recuperamos los valores del índice “0” y del índice “1”.
Esto lo puedes editar con tu IDE favorito, no necesariamente con un notepad++.
ACM Chapter Cusco Página 14
La misma idea Aplica para C# previamente haber agregado al path de la variable del sistema la
ruta del compilador de C#, el “csc” y luego se genera las salidas con el archivo primos.in.
Cabe aclarar que todo esto es opcional, puedes probar con unos cuantos datos manuales desde tu
IDE favorito, pero esta forma con un archivo *.in te permite probar más casos sin necesidad de
escribirlo a cada rato.
El código en Java.
ACM Chapter Cusco Página 15
Y en la línea de comandos se procede de manera parecida para realizar la prueba con el archivo
de entrada primos.in.
Y finalmente en Pascal.
ACM Chapter Cusco Página 16
Nota: no se usó “uses crt;” debido a que hay problemas con el archivo *.in pero el juez tolera
ese inconveniente.
Nota 2: Se uso longInt debido a que los valores que utilizamos en los casos de prueba son
grandes, se recomienda, si usas pascal usar longInt en lugar de integer.