Olimpiadas de programación

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 23 de mayo de 2021; las comprobaciones requieren 11 ediciones .

La Olimpiada de Programación ( Olimpiada de Informática ) es una competencia intelectual para resolver varios problemas en una computadora , para cuya solución es necesario inventar y aplicar cualquier algoritmo o programa en uno de los lenguajes de programación . Como regla general, a los participantes se les asigna un conjunto de varias tareas. El problema se considera resuelto si los participantes fueron capaces de crear un programa que funcione correctamente en las pruebas preparadas por el jurado. Las pruebas son desconocidas para los participantes.

Las olimpiadas son individuales y por equipos. Las Olimpiadas por equipos generalmente involucran a 3 personas y se les proporciona 1 computadora durante toda la Olimpiada para resolver problemas. Los sistemas de torneos de software especializados se utilizan para llevar a cabo dichas competiciones.

Formato de tarea

Los problemas de programación deportiva son únicos en el sentido de que la respuesta a ellos es un programa que resuelve de manera óptima el problema a la vez para todos los datos de entrada posibles.

Por ejemplo, si el problema matemático más simple suena como "Sumar dos números: 4 y 5 " , entonces el problema de programación más simple sonará como "Escribe un programa que sume dos números cualesquiera" . En este caso, se requerirá que el participante escriba un programa que lea dos números a través del flujo de entrada estándar y genere un número, la respuesta al problema, al flujo de salida estándar . A veces, los organizadores de la competencia ofrecen leer y generar datos de otra manera, por ejemplo, a través de . A+B es un desafío clásico para conocer este formato.

Por supuesto, el jurado de la competencia debe asegurarse de alguna manera de que el programa del participante funcione correctamente para cualquier dato. Para ello, antes de la competición, se prepara un conjunto de pruebas , sobre las que se lanzarán las soluciones de los participantes, y un conjunto de respuestas a las mismas. Si el jurado y el participante tienen las mismas respuestas en todas las pruebas, la decisión recibirá una puntuación total, en caso contrario, una parcial o cero. En la mayoría de las Olimpiadas, la verificación está automatizada y se realiza inmediatamente después de que el participante envía la solución, lo que le permite informarle rápidamente sobre el resultado y darle la oportunidad de refinar el programa.

A menudo, la solución se verifica no solo por su corrección, sino también por su eficiencia. Para hacer esto, el sistema de prueba introduce un límite en la cantidad de tiempo de procesador que puede usar el programa cargado, y los datos de entrada en algunas pruebas se seleccionan para que la solución ineficiente se ejecute durante demasiado tiempo. Como resultado, dicha solución no pasa estas pruebas y recibe una puntuación incompleta.

Los autores intentan seleccionar los datos de entrada de tal manera que el tiempo de ejecución de una solución ineficiente exceda muchas veces el límite establecido, lo que elimina la influencia de las diferencias en las características del procesador, errores de medición, Turbo Boost y otros factores en el resultado. Al mismo tiempo, se mide el tiempo del procesador y no el tiempo de ejecución real, por lo que la carga del procesador del servidor de prueba con otras tareas tampoco debería afectar el resultado.

Textos de condición

En el mundo de la programación deportiva, existe un cierto formato para las condiciones problemáticas. Aunque no está oficialmente estandarizado por nadie, las competencias de facto alrededor del mundo dividen las condiciones de los problemas en los siguientes subpárrafos:

Juegos Olímpicos en la URSS y Rusia

Entre escolares

La primera Olimpiada de programación entre escolares en Moscú se llevó a cabo en 1981 (solo hubo 4 participantes), y la primera Olimpiada en la URSS (con el nombre de Olimpiada en Informática) se llevó a cabo entre escolares y tuvo lugar en 1988 en Sverdlovsk [1] . En el futuro, las Olimpiadas de Informática se convirtieron en parte de las Olimpiadas de toda la Unión (y después del colapso de la URSS, de toda Rusia) para escolares.

Tradicionalmente, las Olimpiadas para escolares son competiciones individuales, realizadas según un sistema de varios niveles, en varias etapas: Olimpiadas distritales, municipales, regionales, nacionales. Los ganadores de la Olimpiada de toda Rusia reciben el derecho a participar en las Olimpiadas internacionales de Informática .

Olimpiadas enumeradas

Cada año, el Consejo Ruso de Olimpiadas para Estudiantes Escolares (RSOS) elabora una lista especial de Olimpiadas, que puede incluir Olimpiadas personales en la programación deportiva. Dichas competencias siempre se llevan a cabo en dos etapas: clasificatoria (en línea) y final (presencial, pero se permitieron excepciones debido a la pandemia de COVID-19 ). Solo las autoridades en el campo de la educación y las instituciones de educación superior tienen derecho a realizar olimpiadas de listas. [2]

Los altos resultados que se muestran en tales olimpiadas pueden otorgar algunos privilegios al ingresar a una universidad , incluida la admisión sin pruebas de ingreso o el redondeo de los resultados de USE en informática a 100 puntos (si el estudiante obtuvo al menos 75 puntos).

Competiciones de equipos escolares

Las Olimpiadas de equipos de varios niveles también se llevan a cabo entre escolares, de acuerdo con reglas similares a las reglas de las Olimpiadas de estudiantes internacionales [3] [4] .

La Olimpiada por equipos más famosa es la Olimpiada por equipos de toda Rusia para escolares en programación [5] (VKOSHP). Suele celebrarse a principios de diciembre en diferentes ciudades de Rusia: San Petersburgo, Barnaul y ciudades de otros países. Tienes que clasificarte para esta Olimpiada en tu región, por lo general van 10-20 equipos de Moscú, un poco menos de San Petersburgo [6] .

Estudiantes

No se llevaron a cabo olimpiadas de informática entre estudiantes de la URSS en todo el país. A partir de 1996, estudiantes de universidades rusas comenzaron a participar en competencias incluidas en el sistema del Campeonato Mundial de Programación por Equipos entre estudiantes , realizado por la asociación estadounidense ACM .

Los entusiastas también organizaron varias Olimpiadas intra e interuniversitarias. Por lo general, estas Olimpiadas están patrocinadas por una empresa de desarrollo de software que está interesada en atraer a estudiantes talentosos para que trabajen con ellas.

Pruebas de sistemas y plataformas

El proceso de verificación de soluciones requiere poder de cómputo, medición precisa de los recursos consumidos, soporte para una gran cantidad de compiladores, aislamiento de programas ejecutables y muchas otras soluciones técnicas complejas. En Rusia se han desarrollado varios sistemas y plataformas para la programación de concursos:

Nombre Estado Escrito en Nota
juez Compatible, con licencia bajo la GPL xi Un sistema de código abierto desarrollado en la década de 2000.

Debido a las peculiaridades de la arquitectura, no admite pruebas multinúcleo, lo que ralentiza enormemente las pruebas. Sin embargo, todavía se usa en competición.

PCMS Soportado Java Creado en 2004 en la Universidad ITMO para albergar sus propias Olimpiadas, continúa desarrollándose dentro de sus muros.

En este sistema de prueba, se lleva a cabo la Olimpiada de escolares de toda Rusia .

ordenarme Soportado Vamos El proyecto fue lanzado el 1 de octubre de 2021.

Según los creadores, es el sistema de prueba más rápido del mundo que puede acelerar no solo la verificación, sino también la compilación de programas. [7] El único proyecto en Rusia que se desarrolla sin el apoyo de ninguna universidad, fundación o corporación.

Fuerzas de código Soportado Java Creado en 2010 en la Universidad Estatal de Saratov .

La plataforma de programación deportiva más popular. La biblioteca testlib.h creada por Codeforces es el estándar de facto para el desarrollo de tareas. El proyecto está traducido al inglés y desarrollado con el apoyo de la Universidad ITMO y patrocinadores extranjeros.

Concurso Yandex Soportado Pitón Proyecto Yandex . Se puede utilizar para sus propias competiciones. Se utiliza principalmente para olimpiadas de enumeración y entrenamientos locales.
concursante Proyecto cerrado Delphi / Free Pascal Creado en la Academia Tecnológica Estatal de Kovrov en 2008. Era un servidor independiente que contenía alrededor de 130 tareas.
Juez en línea de Timus Mantenido pero no desarrollado desconocido Un gran archivo en línea de problemas desarrollado en 2000 en la Universidad Federal de los Urales .
acm.sgu.ru Proyecto cerrado desconocido Sitio para la formación de estudiantes de la Universidad Estatal de Saratov .
acmp.ru Soportado .RED Un gran archivo de tareas, desarrollado desde 2006 con el apoyo del Krasnoyarsk Pioneer Palace . Este sitio alberga etapas escolares y municipales de la Olimpiada de toda Rusia para escolares (solo para el territorio de Krasnoyarsk).

Juegos Olímpicos de Bielorrusia

Olimpiada entre escolares

En Bielorrusia, la Olimpiada de programación (en informática) entre escolares se lleva a cabo en varias etapas.

La primera etapa es una Olimpiada intraescolar. Realizado entre estudiantes de una determinada institución educativa. Como resultado de la competencia, los ganadores pasan a la siguiente etapa. Los sistemas de prueba (sistemas de torneos) se utilizan para llevar a cabo tales Olimpiadas. Los organizadores de la Olimpiada deciden qué sistema utilizar. Por ejemplo, en Brest se utiliza el sistema Brain Training , en algunas instituciones el sistema eJudge

La segunda etapa es la Olimpiada municipal (a veces se le llama urbana). Tal Olimpiada se realiza entre los ganadores de la etapa anterior, representados por cada colegio en una determinada zona de la ciudad. Por ejemplo, en Brest se llevan a cabo dos Olimpiadas regionales: para los distritos de Moscú y Leninsky. Los ganadores de cada distrito avanzan a la siguiente etapa. Las condiciones obligatorias para continuar participando en la Olimpiada (transición a la siguiente etapa) son obtener más del 50% de los puntos posibles (en el año académico 2014-2015, esta regla fue cancelada).

La tercera etapa es la Olimpiada regional. Aquí participan los ganadores de la etapa anterior (Olimpiada regional). Toda Bielorrusia se divide en 6 regiones (Brest, Vitebsk, Mogilev, Grodno, Gomel y Minsk), así como la ciudad de Minsk. Además, la Institución Educativa Estatal "Liceo de la Universidad Estatal de Bielorrusia" actúa como un equipo separado. En cada uno de ellos, los participantes son seleccionados para la siguiente etapa de la Olimpiada.

La cuarta etapa es la Olimpiada Republicana (etapa final). Los ganadores de las Olimpiadas regionales compiten por el título de mejor programador entre escolares.

Los mejores participantes de la Olimpiada Republicana (generalmente solo de los grados 9-11) son seleccionados para campos de entrenamiento para la Olimpiada Internacional de Informática. Durante el campo de entrenamiento, el equipo final se selecciona de ellos.

Concurso Internacional de Programación Universitaria ACM

La mayor competencia internacional de programación de equipos de estudiantes es el Concurso Internacional de Programación Universitaria ACM . Los patrocinadores generales del campeonato son empresas como Microsoft e IBM . En 2004 participaron 3150 equipos de 75 países.

Los equipos de Rusia se han convertido repetidamente en ganadores de esta prestigiosa competencia [8] [9] [10] [11] [12] . Como resultado de actuaciones exitosas, los equipos fueron honrados con una reunión con el Presidente de la Federación Rusa [13] [14] [15] . Uno de los entrenadores y organizadores de estas Olimpiadas en Rusia recibió los Premios del Presidente de la Federación Rusa y del Gobierno de la Federación Rusa en el campo de la educación [16] .

Otras competiciones destacadas

Muchas competiciones de programación deportiva no están directamente relacionadas con el sistema educativo, es decir, en ellas también participan programadores profesionales. Una competencia de programación deportiva popular en el mundo es el recurso TopCoder , que regularmente organiza rondas (SRM), cuyos resultados forman la calificación de los participantes, así como el TopCoder Open anual . El recurso ruso Codeforces también realiza rondas periódicas [16] en función de los resultados de los cuales se forma su propia calificación. A fines de 2021, la plataforma Sort Me ganó popularidad en Rusia , albergando Sort Me Round [17] mensualmente de acuerdo con las reglas modificadas de ACM [18] .

Las grandes empresas de TI organizan concursos de programación regulares y, por lo general, individuales, como Google Code Jam , Facebook Hacker Cup , Russian Code Cup .

Notas

  1. Olimpiada - Historia de la Olimpiada (enlace inaccesible) . Consultado el 9 de septiembre de 2011. Archivado desde el original el 10 de agosto de 2011. 
  2. El procedimiento para la realización de Olimpiadas para escolares . periódico ruso . Consultado el 25 de enero de 2022. Archivado desde el original el 25 de enero de 2022.
  3. Olimpiada Regional de Programación Ural (enlace inaccesible) . Centro de Educación Clásica UrFU BN Yeltsin (USU). Consultado el 9 de noviembre de 2011. Archivado desde el original el 6 de octubre de 2010. 
  4. Olimpiadas de Informática. San Petersburgo, Rusia . Consultado el 9 de noviembre de 2011. Archivado desde el original el 17 de noviembre de 2011.
  5. Olimpiadas de Informática. San Petersburgo, Rusia . neerc.ifmo.ru. Consultado el 27 de julio de 2016. Archivado desde el original el 24 de agosto de 2016.
  6. SN en VKOSHP - 2015  (ing.) . vkoshp2015.snarknews.info. Consultado el 27 de julio de 2016. Archivado desde el original el 8 de agosto de 2016.
  7. Ordenarme . telegrama _ Consultado el 9 de mayo de 2022. Archivado desde el original el 9 de mayo de 2022.
  8. Snark News . Consultado el 18 de marzo de 2022. Archivado desde el original el 14 de abril de 2021.
  9. Campeones mundiales de ITMO en noticias de REN TV :: :: Video en RuTube  (enlace inaccesible)
  10. Se abrió una academia de programación en San Petersburgo - Natalya Shergina - "World Champions got a cluster" - Rossiyskaya Gazeta - Abrió en la Capital del Norte... . Consultado el 2 de mayo de 2020. Archivado desde el original el 1 de diciembre de 2017.
  11. Los estudiantes de ITMO se convirtieron en campeones mundiales en programación . Consultado el 9 de septiembre de 2011. Archivado desde el original el 3 de noviembre de 2010.
  12. Dmitry Medvedev se reunió con los ganadores del Campeonato Mundial de Programación - Channel One
  13. Hoy el Presidente se reunió con estudiantes - ganadores del Campeonato Mundial de Programación - Channel One
  14. El presidente ruso Dmitry Medvedev continuará la tradición de reuniones con estudiantes rusos ganadores del Campeonato Mundial de Programación entre equipos combinados de universidades. -RIA Novosti .... Consultado el 9 de noviembre de 2011. Archivado desde el original el 18 de enero de 2012.
  15. Tres medallas de oro fueron traídas a la Federación Rusa por los ganadores del campeonato planetario en programación - Channel One . Consultado el 9 de noviembre de 2011. Archivado desde el original el 8 de agosto de 2013.
  16. ↑ 1 2 Stankevich Andrey Sergeevich  (enlace inaccesible)
  17. sort-me.org - Recurso - CLIST . clist.por . Consultado el 25 de enero de 2022. Archivado desde el original el 25 de enero de 2022.
  18. Ordenarme, Ordenarme. Reglas de Sort Me Round . Teletipo (24 de octubre de 2021). Consultado el 25 de enero de 2022. Archivado desde el original el 25 de enero de 2022.

Enlaces