Idiomas admitidos
omegaUp acepta envíos en un conjunto fijo de idiomas: la columna language en una ejecución es
una enumeración, por lo que un envío es siempre uno de los identificadores siguientes y nada más. la lista
a continuación se muestra esa enumeración, exactamente como la define la base de datos. Cuando envías a través del
API, pasa uno de estos identificadores cortos (por ejemplo, cpp17-gcc), no un
nombre legible por humanos.
Se aplican dos convenciones en cada lenguaje compilado, y hacen tropezar a las personas si no las hacen. conocerlos:
- Su punto de entrada debe llamarse
Main. No existe una configuración de compilación por problema; el corredor compila por convención. El archivo fuente principal (y, para los idiomas que lo necesitan, la clase principal) debe llamarseMain—Main.javaconpublic class Main, unMainejecutable para C/C++, etc. Consulte Partes internas del corredor para saber cómo ocurre realmente la compilación dentro del sandbox. - Cuando un idioma ofrece tanto GCC como Clang, el identificador nombra la cadena de herramientas
explícitamente (
-gccvs-clang), porque los dos ocasionalmente no están de acuerdo en límites cumplimiento de estándares y quien planteó el problema puede haberlo probado contra uno de ellos.
Los idiomas
C y C++
Los caballos de batalla de la programación competitiva y la razón por la que la lista de C++ es tan larga: cada uno La revisión estándar es un identificador separado, por lo que un problema anterior sigue compilándose de la misma manera. siempre lo hizo:
| Identificador | Idioma |
|---|---|
c |
C (CCG heredado) |
c11-gcc, c11-clang |
C11 |
cpp |
C++ (CCG heredado) |
cpp11, cpp11-gcc, cpp11-clang |
C++11 |
cpp17-gcc, cpp17-clang |
C++17 |
cpp20-gcc, cpp20-clang |
C++20 |
Para nuevos envíos de C++ casi siempre querrás cpp17-gcc o cpp20-gcc.
Otros lenguajes de propósito general
| Identificador | Idioma |
|---|---|
java |
Java |
kt |
Kotlin |
py3 |
Pitón 3 |
py2 |
Pitón 2 |
py |
Python (alias heredado) |
cs |
C# |
rb |
Rubí |
pl |
Perla |
pas |
Pascal |
hs |
Haskel |
lua |
Lúa |
go |
Ir |
rs |
Óxido |
js |
JavaScript |
Los especiales
Tres identificadores no son lenguajes de propósito general, y saber cuáles son explica una Mucho sobre para quién está diseñado omegaUp:
kpykj— Karel. omegaUp surgió de la Olimpiada Mexicana de Informática, cuyo La pista de nivel básico utiliza Karel the Robot, un lenguaje de enseñanza en el que se programa un robot. en una cuadrícula.kpes Karel con sintaxis con sabor a Pascal ykjes Karel con sintaxis con sabor a Java sintaxis: el mismo lenguaje, dos gramáticas superficiales, por lo que un principiante puede usar cualquiera que sea su clase impartida. Los problemas de Karel son un ciudadano de primera, no una novedad.cat: solo salida. Para problemas en los que no envía ningún programa, envía la respuesta. El "lenguaje"catsignifica que el corredor simplemente trata su envío como el resultado que se va a validar con el resultado esperado. Así es como solo salida y Los problemas con archivos de datos funcionan.
El conjunto cambia con el tiempo
Se agregan nuevos estándares y cadenas de herramientas a medida que maduran (la lista de C++ es la más clara).
constancia de ello). Trate la tabla anterior como actual; la fuente autorizada es la
Enumeración language en frontend/database/schema.sql
y las versiones del compilador configuradas en el ejecutor (omegaup/quark).