Subido por Bernat Lluch

manual DOMjudge en espanol

Anuncio
Resumen
juzgare
DOM
DOMjudge equipo Manual
/\
Esta página ofrece un breve resumen de la interfaz del sistema. El resumen pretende ser una
introducción rápida, para poder comenzar a usar el sistema. Sin embargo, se recomienda
encarecidamente que su equipo lea todo el documento. Hay detalles específicos de este sistema
de control de concursos que pueden llegar a ser importantes cuando se encuentra con
problemas. ¡CUIDADO!
DOMjudge funciona a través de una interfaz web que se puede encontrar en
https://example.com/domjudge/ equipo. Vea las figuras 1 yd 2 en la página siguiente
para una impresión.
Lectura y escritura
Las soluciones tienen que leer toda la entrada de 'entrada estándar' y escribir toda
la salida en 'salida estándar'
(también conocida como consola). Nunca tendrá que abrir
(otros) archivos. Consulte el apéndice A para ver algunos ejemplos de código.
Envío de soluciones
Puede enviar soluciones con el programa de línea de comandos submit o desde la interfaz web:
Línea de comandos
Utilice submit <filename>. Si su nombre de archivo tiene el formato <problemextensión
>.<> donde
<problema> es la etiqueta del problema y <extensión> es una extensión estándar para
su idioma, entonces estos se detectarán automáticamente. También intentará detectar
automáticamente el cla ss principal(para Java y Kotlin) o el archivo principal (para
Python 2 y Python 3). Puede anular estas detecciones automáticas; para obtener una
referencia completa de todas las opciones y ejemplos, consulte enviar --ayuda.
Interfaz web
En la página de su equipo, https://example.com/domjudge/team, haga clic en el botón
verde Enviar en la barra de menús. Seleccione los archivos que desea enviar.
De forma predeterminada, el problema se selecciona desde la base del (primer)
nombre de archivo y la nguagede laextensión. La interfaz web intenta detectar
automáticamente la clase principal (para Java y Kotlin) o el archivo principal (para Python
2 y Python 3) desde el nombre del archivo. Verifique que la suposición sea correcta antes
de enviarla.
Visualización de puntuaciones, envíos, etc.
La visualización de puntajes, envíos y envío y lectura de solicitudes de aclaración y respuestas se
realiza a través de la interfaz web en https://example.com/domjudge/team.
CASAjuez equipo Manual – Generado: Mayo 6,
2020
1
Fin del resumen
2
CASAjuez equipo Manual – Generado: Mayo 6,
2020
Figura 1: Página de información general de la
interfaz web del equipo.
Figura 2: Página web del cuadro de indicadores.
CASAjuez equipo Manual – Generado: Mayo 6,
2020
3
1. Presentar
Soluciones
1
Envío de soluciones
El envío de soluciones se puede hacer de dos maneras: con el programa de línea de comandos submit
o utilizando la interfaz web. Es posible que una de las interfaces no esté disponible, dependiendo de
la configuración del sistema por parte del jurado. A continuación se realiza una descripción
de ambos métodos.
1.1
Línea de comandos: enviar
Sintaxis: submit [options] filename.ext ...
El programa de envío toma el nombre (etiqueta) del problema del nombre de archivo y el lenguaje
de programación de la extensión ext. Para Java
utiliza el nombre de archivo como una
suposición para la clase principal; para Kotlin, escribe en mayúsculas el nombre de archivo y
agrega Kt para calcular la suposición del nombre de la clase principal.
Para Python 2 y
3, el primer nombre de archivo se utiliza como una suposición para el archivo principal.
Estas conjeturas se pueden anular con las opciones -p problemname, -l languageextension
y
-e punto de entrada. Consulte enviar --ayuda para obtener una lista completa de todas las
opciones, extensiones y algunos ejemplos. Use enviar --help | más cuando el texto de ayuda
no cabe en una pantalla.
submit comprobará su archivo y le advertirá de algunos problemas: por ejemplo, cuando el
archivo no se ha modificado durante
mucho tiempo o cuando es mayor que el tamaño
máximo del código fuente (consulte la sección 4.4). Los nombres de archivo deben comenzar
con un carácter alfanumérico y pueden contener solo caracteres alfanuméricos y +. -. Puede
especificar varios archivos para que formen parte de este envío (consulte la sección 4 «¿Cómo
se juzgan los envíos?»).
A continuación, enviar muestra un resumen con todos los detalles de su envío y solicita
confirmación. Verifique si está enviando el archivo correcto para el problema y el idioma
correctos y presione 'y' para confirmar. submit informará de un envío correcto o dará un
mensaje de error de lo contrario.
1.2
Interfaz web
Las soluciones se
pueden
enviar
desde
la
interfaz
web
en
https://example.com/domjudge/team. Haga clic en el botón verde Enviar en la barra de
menú de cada página. Haga clic en el botón de selección de archivos y seleccione uno o
varios archivos para su envío. Eljuez DOM intentará determine el problema, el lenguaje y la clase
principal (en el caso de Java y Kotlin) o el archivo principal (en el caso de Python 2 y
3) desde la base y la extensión del primer nombre de archivo. De lo contrario, seleccione los
valores apropiados. Los nombres de archivo deben comenzar con un carácter alfanumérico y
pueden contener solo caracteres alfanuméricos y +. -.
Después de presionar el botón de envío y confirmar el envío,será redirigido de nuevo a su página
de lista de envíos. En esta página, se mostrará un mensaje que indica que su envío se realizó
correctamente y que el envío debe estar presente en la lista. Se mostrará un mensaje
de error si algo salió mal.
CASAjuez equipo Manual – Generado: Mayo 6,
2020
3
2. Visionado el Resultados de
Presentaciones
2
Visualización de los
resultados de los envíos
La columna izquierda de la página web de su equipo muestra una descripción general de sus
envíos. Contiene toda la información relevante: tiempo de envío, lenguaje de programación,
problema
y
estado. La
dirección de la página
de
tu
equipo
es
https://example.com/domjudge/team.
4
CASAjuez equipo Manual – Generado: Mayo 6,
2020
1. Presentar
Soluciones
La parte superior de la página muestra la fila de tu equipo en el marcador: tu posición y
qué problemas intentaste y resolviste. A través del menú puede ver la página del marcador
público con los puntajes de todos los equipos. Muchas celdas mostrarán información adicional
de "texto de título" al pasar el cursor sobre ellas. La columna de puntuación enumera el
número de problemas resueltos y el tiempo
total, incluido el tiempo de penalización.
Cada celda de una columna de problema enumera el número de envíos y, si se resolvió el
problema, la hora del primer envío correcto en minutos desde el inicio del concurso. Esto se
incluye en su tiempo total junto con cualquier tiempo de penalización incurrido por envíos
incorrectos anteriores. Opcionalmente, el marcador puede ser 'congelado' algún tiempo
antes del final del concurso. La vista completa del marcador ya no se actualizará, pero la
fila de su equipo sí. El rango de tu equipo se mostrará como '?'. Finalmente, a través del menú
superior también puede ver la lista de problemas y ver / descargar textos de problemas
y datos de muestra, si los jueces lo proporcionan.
2.1
Posibles resultados
Un envío puede tener los siguientes resultados (no todos estos pueden estar disponibles
dependiendo de la configuración del sistema):
CORRECTO
El envío pasó todas las pruebas: ¡resolviste este problema! Los
envíos correctos no incurren en tiempo de penalización.
COMPILER-ERROR Se ha producido un error al compilar el programa. En la página de detalles
del envío, puede inspeccionar el error exacto (esta opción podría
estar deshabilitada). Tenga en cuenta que cuando la compilación
tarda más de 30 segundos, se anula y esto cuenta como unerror
de compilación. Los errores de compilación
no incurren en
tiempo de penalización.
LÍMITE DE TIEMPO
El programa tardó más que el tiempo máximo permitido para este
problema. Por lo tanto, ha sido abortado. Esto podría indicar que el
programa se bloquea en un bucle o que la solución no es
lo suficientemente eficiente.
RUN-ERROR
Se ha producido un error durante la ejecución del programa. Esto
puede tener muchas causas diferentes, como la división por cero, la
dirección incorrecta de la memoria (porejemplo, al indexar matrices
fuera de los límites), tratar de usar más memoria que el límite,
etc. ¡Compruebe también que su programa sale con el código
de salida 0!
NO-OUTPUT
Su programa no generó ningún resultado. Comprueba que escribes
a estándar.
OUTPUT-LIMIT
El programa generó más salida que el límite permitido. La salida se
truncó y se consideró incorrecta.
RESPUESTA INCORRECTA La salida de su programa fue incorrecta. Esto puede suceder
simplemente porque su solución no es correcta, pero recuerde que
su salida debecumplir exactamente con las especificaciones de los
jueces. Consulte la sección 4.3 a continuación para obtener más
CASAjuez equipo Manual – Generado: Mayo 6,
5
2020
2. Visionado el Resultados de
Presentaciones
detalles.
¡DEMASIADO TARDE
6
Bummer, te presentaste después de que terminó el concurso! Su
envío se almacena pero ya no se procesará.
CASAjuez equipo Manual – Generado: Mayo 6,
2020
3. Aclaraciones
Tenga en cuenta que los jueces pueden haber preparado varios archivos de prueba
para cada problema. Eljuez de DOM informará el primer resultado incorrecto como
veredicto.
3
Aclaraciones
Toda la comunicación con los jueces debe hacerse a través de aclaraciones. Estos se
pueden
encontrar en la columna de la derecha en la página de su equipo. Tanto las
respuestas aclaratorias de los jueces como las solicitudes enviadas por usted se muestran
allí.
También hay un botón para presentar una nueva solicitud de aclaración a los jueces; puede
asociar un problema específico o una de las categorías generales a una solicitud. Esta solicitud
de aclaración sólo es legible para los jueces. Los jueces pueden responder específicamentea su
equipo o enviar una respuesta a todos si es relevante para todos.
4
¿Cómo se juzgan las presentaciones?
El sistema de control de concursos de jueces DOM está totalmente automatizado. La evaluación
se realiza de la siguiente manera:
4.1
Envío de soluciones
Con el programa de presentación o la interfaz web (ver sección 1)se puede presentar
unasolución a un problema a los jueces. Tenga en cuenta que debe enviar el código fuente de
su programa (y no un programa compilado o la salida de su programa).
En el sistema de control de concursos su programa entra en una cola, a la espera de
compilación, ejecución y prueba en uno de los autojuzgazos.
4.2
Compilación
Su programa se compilará en una máquina de autojuzgue que ejecute Linux. Todos los archivos
fuente enviados se pasarán al compilador que genera un solo programa para ejecutar.
Para Java y Kotlin se verificará la clase principal dada; para Python 2 y Python 3
hacemos una comprobación de sintaxis utilizando el módulo de compilación py.
4.3
Ensayo
Después de que su programa se haya compilado con éxito, se ejecutará y su salida se
comparará con la salida de los jueces. Antes de comparar la salida, se verifica el estado
de salida de su programa: si su programa sale con un código de salida distinto de
cero, el resultado será una EJECUCIÓN:¡error incluso si la salida del programa es
correcta! Hay algunas restricciones durante la ejecución. Si su programa infringe estos,
también se cancelará con un ERROR DE EJECUCIÓN,consultela sección 4.4.
Al comparar la salida del programa, tiene que coincidir exactamente con la salida de los jue ces,
excepto que se puede ignorar algún espacio en blanco adicional (esto depende de la configuración
CASAjuez equipo Manual – Generado: Mayo 6,
2020
5
4. Cómo son Presentaciones ser
¿Juzgado?
del sistema de los problemas). Así que tenga cuidado de quesiga lasespecificaciones de salida. En
caso de declaraciones de problemas que no tienen una salida única (porejemplo, con respuestas de
coma flotante), el sistema puede utilizar una función de comparación modificada.
Esto se
documentará en la descripción del problema.
6
CASAjuez equipo Manual – Generado: Mayo 6,
2020
3. Aclaraciones
4.4
Restricciones
Para evitar abusos, mantener estable el sistema de jurados y dar a todos entornos
claros e iguales, hay algunas restricciones a las que se someten todas las
presentaciones:
Tiempode
compilación La compilación de su programa no puede tardar más de 30
segundos. Después de eso, la compilación se ab orted y el resultado
será un error de compilación. En la práctica, esto nunca debería dar
lugar a problemas. Si esto le sucede a un programa normal, informe
a los jueces de inmediato.
Tamaño dela fuente La cantidad total de código fuente en un solo envío no puede
exceder los 256 kilobytes, de lo contrario su envío
será
rechazado.
memoria Los jueces especificarán cuánta memoria tiene disponible
durante la ejecución de su programa. Tenga en cuenta que esto puede
variar según el problema. Esta es la cantidad total de memoria
(incluyendo código de programa, estáticamente y dynami- variables
definidas, pila, Java VM, . . . ) ! Si su programa intenta usar más memoria,
lo más probable es que se cancele, lo que provocará un error de
ejecución.
número de procesos No se supone que deba crear explícitamente varios procesos
(subprocesos). Esto es
en vano de todos modos, porque su
programa tiene exactamente 1 núcleo de procesador completamente
a su disposición. Para aumentar la estabilidad del sistema, el juez
DOMejecuta los envíos en un espacio aislado donde se pueden
ejecutar un máximo de 15 procesos simultáneamente (incluidos los
procesos que iniciaron su programa).
Las personas que nunca han programado con procesos multiple (o nunca han
oído hablar de "hilos") no tienen que preocuparse: un programa normal
se ejecuta en un proceso.
CASAjuez equipo Manual – Generado: Mayo 6,
2020
7
Un. Código
Ejemplos
Ejemplos de código
A continuación se muestran algunos ejemplos sobre cómo leer la entrada y la salida de
escritura para un problema.
Los ejemplos son soluciones para el siguiente problema: la primera línea de la entrada contiene
el número de casos de prueba. Luego, cada caso de prueba consiste en una línea que contiene
un nombre (una sola palabra) de un máximo de 99 caracteres. Para cada caso de prueba,
la cadena "Hello <name>!" en una línea separada.
Entrada y salida de ejemplo para este problema:
Entrada
Salida
3
mundo
Ene
SantaClaus
¡Hola mundo!
Hola Jan!
Hola SantaClaus!
Tenga en cuenta que el número 3 en la primera línea indica que
siguen 3 casos de prueba. Una solución para este problema en
C:
#include > stdio.hde <
Int principal() {
Int i, ntests;
número char[
100];
scanf("%d\n", &ntests);
para (i = 0; i < ntests; i++) {
scanf("%s\n",número);
printf("Hola %s! \n",
número);
}
}
CASAjuez equipo Manual – Generado: Mayo 6,
2020
7
Un. Código
Ejemplos
Una solución en C++:
#include
<>#include<strin
g>
usar el espacio de
nombres STD; Int
principal() {
Int ntests;
número de
cadena;
cin >> ntests;
para (Int Yo = 0; i < ntests; i++) {
número >> cin;
costar << "Hola" << número << "!" << Edwards;
} en Java:
Una solución
}
importar java.util.*;
clase Principal {
público estático vacío principal(Cuerda[] args) {
Escáner de escáner = nuevo
escáner(Sistema. en); Int nPruebas =
escáner. nextInt();
para (Int i = 0; i < nPruebas; i++) {
Número de cadena = escáner.
siguiente();
Sistema. fuera. Println("Hola" + número + "!" );
}
}
}
Una solución en Python:
importar sys
n = Int(entrada())
para Yo en
rangon):
número = sys. stdin. línea de lectura().
rstrip('\n') Impresión('¡Hola %s!» %
(número))
8
CASAjuez equipo Manual – Generado: Mayo 6,
2020
Un. Código
Ejemplos
Una solución en C#:
utilizando el sistema;
clase pública Hola
{
público estático vacío Principal(cuerda[] args)
{
Int nPruebas = Int. Analizar(Consola.ReadLine());
para (Int Yo = 0; i < nPruebas; i++) {
número de cadena = Consola.ReadLine();
Console.WriteLine("Hola" +número+"!"
);
}
}
}
Una solución en Pascal:
ejemplo de programa(entrada, salida);
Dónde
ntests, prueba : entero;
número
: cadena[100];
empezar
readln(ntests);
para la prueba: = 1 un
npruebas comienzan
readln(número);
writeln('Hola', número '!' );
fin;
fin.
Y finalmente una solución en Haskell:
Importar Preludio
principal :: Yo ()
principal = del entrada <- getContents
putStr. unlines. mapa (\x -> "Hola"
entrada
CASAjuez equipo Manual – Generado: Mayo 6,
2020
++ x ++ "!" ). cola. líneas $
9
Descargar