SPOJ (Sphere Online Judge) es un sistema de jueces en línea con más de 1 millón de usuarios registrados y más de 20.000 problemas. Las tareas son preparadas por su comunidad de formuladores de problemas o se toman de concursos de programación anteriores. SPOJ permite a los usuarios avanzados organizar concursos con sus propias reglas y también incluye un foro donde los programadores pueden discutir cómo resolver un problema en particular.
Además de en inglés , SPOJ también ofrece su contenido en polaco , portugués y vietnamita . Las soluciones a los problemas se pueden enviar en más de 40 lenguajes de programación , incluidos los esotéricos, a través del motor Sphere Engine, administrado por la empresa polaca Sphere Research Labs. [1]
El sitio web se considera tanto un evaluador automatizado de programas enviados por los usuarios como una plataforma de aprendizaje en línea para ayudar a las personas a comprender y resolver tareas computacionales. [2] También permite a los estudiantes comparar paradigmas y enfoques con una amplia variedad de lenguajes.
Historia
Este sistema fue creado originalmente para aplicar un juez en línea en la enseñanza de los estudiantes. Básicamente estaba enfocado a los estudiantes y profesores de universidades y miembros de una comunidad de programación más amplia, interesados en algoritmos y concursos de programación.
Objetivos
Estaba dirigido a diferentes usuarios y con distintos propósitos, como por ejemplo: [3]
- Para que los jóvenes y programadores principiantes desarrollen la comprensión de los algoritmos.
- A los estudiantes de las universidades se les da la oportunidad de hacer sus tareas de manera honesta, minuciosa y sin hacer trampa.
- Los profesionales del concurso ACM pueden resolver tareas sin verse limitados por unos pocos lenguajes de programación o una interfaz de usuario incómoda.
- Los entusiastas de la programación funcional u orientada a objetos pueden resolver problemas de concurso en su lenguaje favorito.
- Cualquier persona que desee compartir una tarea interesante con el resto de la comunidad SPOJ puede hacerlo casi automáticamente (un correo electrónico a los administradores solicitando privilegios de solucionador de problemas es suficiente).
- Cualquier persona que desee organizar un concurso de programación, con casi cualquier regla que decida, podrá hacerlo en cualquier momento que elija, sin la ayuda de los administradores del sistema.
Categorías de problemas
Los problemas archivados en SPOJ se dividen en 5 categorías: [4]
- Clásico: Son problemas con puntuación binaria. Respuesta aceptada o incorrecta [ cita requerida ]
- Desafío: Permiten a los usuarios presentar soluciones mejores o peores. No existen respuestas definitivas para un problema en particular.
- Parcial: Son similares a los problemas de desafío pero con un propósito educativo.
- Tutorial: Similares a los problemas clásicos pero más sencillos, estos son para fines educativos (por ejemplo, involucran un algoritmo ampliamente conocido).
- Acertijo: Problemas que contienen acertijos.
Puede haber limitaciones en las presentaciones para que un problema sea más desafiante. Esto incluye la disponibilidad de idiomas (por ejemplo, solo idiomas esotéricos) y el tiempo de cálculo.
Juzgando
Clústeres
Las presentaciones se evalúan en un grupo : [5]
- Cube (Intel Xeon E3-1200 v5): el sitio afirma que "este nuevo clúster consta de CPU Intel Xeon E3-1220 v5 modernas y rápidas. En Cube, sus envíos se ejecutarán entre 30 y 50 veces más rápido que en Pyramid, por lo que puede esperar que, si prueba su solución en casa, tendrá un tiempo de ejecución similar en SPOJ. En este clúster, el límite de memoria para los envíos es de 1536 MB". El clúster Pyramid ha sido desactivado.
Los programas se verifican ya sea comparándolos con una respuesta correcta conocida o ejecutando un código de evaluación específico, exclusivo para cada problema. [2] Esto es cada vez más necesario cuando puede haber múltiples respuestas en problemas más complejos. Al utilizar una computadora, la calificación es consistente, justa y puede medir la eficiencia en tiempo real, en comparación con la evaluación humana.
Para garantizar que el sistema funcione de manera eficaz, el comando Linux RLIMIT_CPU impide que las pruebas mal diseñadas afecten a otros. La llamada al sistema chroot() aplica restricciones a la ejecución de programas mediante el uso de entornos limitados en el sistema de archivos: el comando sleep(), por ejemplo, no está permitido, ya que reduciría la memoria disponible.
La naturaleza accesible, gratuita y objetiva del sitio web permite a los estudiantes adquirir experiencia lógica y de diseño basada en éxitos anteriores. Sin embargo, el sistema no evalúa la calidad del código, la documentación u otras características más subjetivas que pueden ser más importantes para las aplicaciones del mundo real.
Después de enviar el código, se le informa al usuario si se produjo un error durante la ejecución o compilación, si se excedió el límite de tiempo, si se emitió la respuesta incorrecta o si era correcta. Las respuestas de los problemas de desafío se acompañan de una puntuación (ver a continuación).
Tanteo
Las puntuaciones se otorgan en función de la categoría en que se dividen los problemas. [6]
- Clásico: La puntuación de un problema se expresa en puntos.
- Desafío: La puntuación tiene dos criterios como son los siguientes:
- por una puntuación máxima en cualquier desafío: 3 puntos,
- por cualquier puntuación más baja en un desafío: (puntuación del usuario en relación con la puntuación más alta) puntos.
- Parcial: 0 puntos
- Tutorial: 0 puntos
- Acertijo: 0 puntos
Las puntuaciones de la categoría "desafío" suelen ser el tamaño del envío en bytes, aunque pueden ser diferentes. Por ejemplo, puede ser la cantidad de decimales correctas de la constante π.
Nota: SPOJ cambia con frecuencia las fórmulas utilizadas para calcular las puntuaciones.
Concursos de programación
SPOJ se utiliza como plataforma para una amplia gama de competiciones, desde el nivel local hasta el internacional y desde problemas breves de una hora hasta ligas de un año de duración. Los participantes suelen hablar distintos idiomas, por lo que el sitio garantiza unas condiciones de juego más equitativas y reduce la carga de trabajo de los organizadores. [2]
Crítica
Los usuarios de sistemas de jueces en línea tienen pocos incentivos para documentar y crear código bien estructurado, lo que posiblemente los hace menos preparados para aplicaciones más típicas de la informática fuera de las competiciones. [2]
Los resultados de un estudio realizado en la Universidad Tecnológica de Gdansk [2] sugieren que los plazos establecidos en las universidades, incluidos los puntos de bonificación y penalización según el momento de entrega de una tarea, tienden a ser estrictos con los estudiantes que no están bien organizados, incluso si envían el mismo código. Esto tiene efectos motivacionales mixtos en los estudiantes, animando a algunos a cumplir con los plazos, mientras que desmotiva a otros. El mismo estudio indica que el uso de sistemas de evaluación en línea conduce a una reducción en la comunicación entre estudiantes y personal. Sin embargo, en el caso del personal con una gran carga docente, esta reducción puede permitir que el personal dedique más tiempo a los estudiantes con dificultades, eliminando los gastos administrativos relacionados con la calificación y el tiempo dedicado a las discusiones con estudiantes que no necesitan ayuda.
Idiomas
SPOJ admite alrededor de 60 idiomas en los que los usuarios pueden enviar sus soluciones. Entre ellos se incluyen:
Ada , Ensamblador, AWK , Bash , Brainfuck , C , C++ y C99 estricto, C# , Clojure , Common Lisp , D , Doc (sin pruebas), Erlang , Fortran , F# , Go , Haskell , Icon , Intercal , Jar, Java , JavaScript , Lisp , Lua , Nemerle , Nice, Node.js , OCaml , Pascal , Pdf , Perl , PHP , Pike , PostScript , Prolog , Python , Ruby , Rust , Scala , Scheme , sed , Smalltalk , Tcl , Tecs, Texto y Espacios en blanco .
Véase también
- Fuerzas de código
- Jam de código de Google
- Codificador superior
- Concurso Internacional de Programación Universitaria (ICPC) de la ACM
- Juez en línea de la UVa
- Proyecto Euler
Referencias
- ^ "Información legal de Sphere Research Labs". Sphere Research Labs . Consultado el 21 de junio de 2015 .
- ^ abcde Kosowski, Adrian; Malafiejski, Michal; Noinski, Tomasz (14 de abril de 2008). Avances en el aprendizaje basado en la Web - ICWL 2007: 6.ª conferencia internacional, Edimburgo, Reino Unido, del 15 al 17 de agosto de 2007, artículos revisados. Springer Science & Business Media. pág. 344. ISBN 9783540781387.
- ^ Kosowski, Adrian (3 de septiembre de 2004). "¿Cuál es el _propósito_ de SPOJ?". SPOJ . Consultado el 22 de septiembre de 2014 .
- ^ "PROBLEMAS". SPOJ . Consultado el 22 de septiembre de 2014 .
- ^ "Clústeres". SPOJ . Consultado el 24 de septiembre de 2017 .
- ^ "Estadísticas de usuarios". SPOJ . Consultado el 22 de septiembre de 2014 .
Enlaces externos
- Sitio web oficial del SPOJ