Concursos en Modo Virtual

Estimados usuarios de omegaUp

Estamos muy felices de anunciar que hemos implementado una nueva funcionalidad de concursos en modo virtual en omegaUp 🙂

¿Qué es un concurso en modo virtual?

Concursos en modo virtual te permite reproducir un concurso pasado en un modo especial que imita el concurso real como sucedió. Con el scoreboard reproduciéndose en sincronía con el concurso original.

Estos son los pasos a seguir para crear y participar en un concurso en modo virtual:

  1. Crear concurso virtual.
    Crear el concurso virtual es muy simple! Solo tienes que ir a la sección de concursos en arena, buscar el concurso que te interesa y hacer click en el botón de modo virtual.
  2. Pon un tiempo y hora de inicio para tu concurso virtual.
  3. Entra a tu concurso virtual.
    Simplemente haz click en comenzar concurso. También puedes invitar a tus amigos o rivales a tu concurso en modo virtual!
  4. Disfruta el entrenamiento!


Verás a otros usuarios en tu concurso virtual en el scoreboard y mini rank. Tú aparecerás como usuario-[virtual]. El scoreboard estará sincronizado con el del concurso original en todo momento.

El crédito de esta funcionalidad va para nuestro becario Vincent Fango que desarrolló este proyecto (https://github.com/SpaceWhite). Si te interesa conocer detalles técnicos sobre la implementación de esta funcionalidad puedes escucharlos de Vincent mismo: https://www.youtube.com/channel/UChhWcITUEZy7f0wLPlQgE8A?view_as=subscriber

 

Nota: En concursos en modo virtual no podrás añadir, editar ni borrar problemas. Tampoco podrás cambiar la duración del concurso entre otras configuraciones.

Anunciando omegaUp Escuelas

Con el objetivo de continuar mejorando las habilidades de programación de los estudiantes, nos emociona anunciar el lanzamiento de un nuevo proyecto: omegaUp Escuelas.  Nuestro objetivo es llevar omegaUp a los salones de clases, creando una plataforma educativa, intuitiva y fácil de utilizar que se adapte a las necesidades de los profesores y estudiantes. La plataforma es una herramienta de aprendizaje que permite a los profesores enseñar a sus alumnos pensamiento algorítmico mediante la solución de problemas. Con ello, el estudiante desarrollará habilidades que le ayudarán en su crecimiento profesional.

paginaPrincipal

 

En omegaUp Escuelas, el profesor puede crear sus propios cursos con tareas y exámenes utilizando problemas propios o problemas públicos que ya existen en la plataforma. En el primer caso, el profesor puede hacer uso de los recursos que tenemos disponibles en omegaUp para publicar sus problemas. Esto le permitirá adaptar la plataforma a su curso y a las necesidades de sus estudiantes. Si el profesor opta por la segunda opción, éste contará con una clasificación de problemas por tema y por nivel. Así, él puede seleccionar con mayor facilidad los problemas que apoyen el proceso de aprendizaje de sus alumnos.editarCurso

 

Además, ahora los profesores pueden registrar a sus estudiantes en un curso y seguir su avance en las tareas y exámenes asignados. A fin de facilitar la tarea administrativa del profesor, este puede descargar la lista de estudiantes y su avance a una hoja de cálculo, que le permite realizar un análisis más detallado de su curso.

progresoEstudiantes

Con esta nueva iniciativa, los estudiantes cuentan con una plataforma más organizada donde pueden tener fácil acceso a sus tareas y exámenes además de revisar su avance general en tiempo real.

omegaUp Escuelas aún está en desarrollo, pero la versión beta ya está disponible. Actualmente, se están llevando a cabo pruebas piloto en dos escuelas: ITSUR y CBTis 217. Gracias a Luis Germán Gutiérrez Torres y sus estudiantes por ayudarnos en este proceso.

Cada día el número de organizaciones y escuelas que están probando omegaUp Escuelas está creciendo. La OMI está utilizando la plataforma para crear cursos de entrenamiento. En cuanto a escuelas, tenemos un total de 16 cursos creados. Gracias a todos ellos por darnos la oportunidad de apoyarlos en este proceso de enseñanza-aprendizaje.

Te invitamos a que visites omegaUp Escuelas y comiences a utilizarla. Si tienes alguna duda de cómo utilizarla, cómo incorporar la plataforma a tus clases, o si tienes algún comentario, escríbenos a escuelas@omegaup.org.

Ya pueden filtrar los problemas por Tags

Si van a la lista de problemas, podrán notar que algunos tienen tags! Si hacen click en alguno, filtrarán la lista de problemas para que únicamente se muestren los problemas con ese tag. Si están buscando problemas de Karel, este cambio los va a hacer muy felices.

Solución a “Jardinero”

Concurso: Preselectivo para la IOI 2015, Etapa 1, Problemset 6
Autor: Saúl Germán Gutiérrez Calderón
Fuente: Saúl Germán Gutiérrez Calderón (recopilado de los ACM-ICPC World Finals 2010, problema I)

En este problema, una búsqueda exhaustiva con podas bastaba para que corriera en tiempo.

La búsqueda podía tener como estado al renglón y a la columna en la que se estaban, más las casillas por las que ya se había pasado más el numero de la siguiente casilla a esconderse que se necesitaba.

Las podas que se utilizaron en la solución oficial fueron las siguientes (otras podas podrían también conseguir 100 puntos):

  1. Que pasara el tiempo en el que se debería llegar a un escondite.
  2. Que se pasara por un escondite cuando no se debía.
  3. Que no fuera capaz de llegar al siguiente escondite a tiempo.
  4. Que el camino que se llevaba volviera imposible una ruta válida. Si la ruta dejaba a algunas posiciones “encerradas” o dividía al mundo en dos, entonces la ruta actual no llevaba a ningún recorrido valido. Esto se podía checar haciendo una búsqueda en profundidad o en amplitud desde alguna posición no visitada (la posición (0,1) es bastante conveniente porque siempre estará libre).

Aquí está el código de la solución:

Solución a “Planetas”

Concurso: Preselectivo para la IOI 2015, Etapa 1, Problemset 4
Autor: Freddy Román Cepeda
Fuente: Edgar Augusto Santiago Nieves

La observación principal de este problema es que siempre hay $latex N-1$ lugares estables para el meteorito, y que cada uno de éstos se encuentra entre parejas consecutivas de planetas. Primero notemos que ningún lugar estable puede estar más a izquierda que todos los planetas, ya que la fuerza neta sobre éste lo haría moverse a la derecha. Por la misma razón, no pueden haber lugares estables después del último planeta hacia la derecha.

Ahora, para ver que siempre hay un lugar estable entre cualquier pareja consecutiva de planetas hay que analizar la función que describe la fuerza entre el meteorito y el planeta: $latex \frac{1}{\left | X_i – M \right |}$. Supongamos que el meteorito está entre los planetas $latex i$ e $latex i+1$. Cuando $latex M \approx X_i$ la fuerza que atrae al meteorito hacia el planeta $latex i$ es suficientemente grande para forzar al meteorito a moverse a la izquierda sin importar la fuerza de los planetas que se encuentren a la derecha (nota que el denominador se hace muy pequeño). Lo mismo ocurre con el planeta $latex i+1$ cuando el meteorito está muy cerca de él. Pero esto quiere decir que existe un único punto $latex p$ entre los dos planetas en el que la fuerza neta sobre el meteorito es 0. (Este argumento se puede formalizar utilizando cálculo.)

Además, es sencillo observar que el meteorito se movería a la izquierda si estuviera entre el planeta $latex i$ y el punto $latex p$, y a la derecha si estuviera entre el punto $latex p$ y el planeta $latex i+1$. Por lo tanto, podemos hacer una búsqueda binaria para encontrar el punto $latex p$ para cada pareja de planetas consecutivos.

Como hay $latex N-1$ parejas y calcular la fuerza neta sobre el meteorito en algún punto arbitrario toma tiempo $latex O(N)$, la complejidad total de este algoritmo es $latex O(N^2 I)$ donde $latex I$ es la cantidad de iteraciones que realice la búsqueda binaria. También hay que ordenar los planetas, ya que la descripción del problema no asegura que vendrán ordenados. Por lo tanto, la solución final tiene complejidad $latex O(N \lg N + N^2 I)$.

El siguiente código implementa esta solución:

Solución a “Números Libres”

Concurso: Preselectivo para la IOI 2015, Etapa 1, Problemset 1
Autor: Freddy Román Cepeda
Fuente: Edgar Augusto Santiago Nieves

Para resolver este problema hacía falta tener en mente la definición de square-free. Como tanto $latex a$ y $latex b$ no son divisibles por el cuadrado de un primo, la única manera de que su producto deje de ser square-free sería que ambos compartieran un factor primo.

Para obtener todos los puntos de la primer subtarea bastaba con computar $latex a \times b$ e iterar sobre todos los números menores a ese producto y revisar si es divisible por el cuadrado de alguno de ellos.

Para obtener los puntos de la segunda subtarea era suficiente iterar hasta $latex \max(\sqrt{a}, \sqrt{b})$, para factorizar a $latex a$ y $latex b$.

Por último, para obtener el resto de los puntos bastaba notar que si $latex a$ y $latex b$ comparten un factor primo, entonces su máximo común divisor es distinto de 1.

El siguiente código implementa esta solución: