Soluciones de problemas en omegaUp

En este post queremos describirles cómo ver soluciones a los problemas en omegaUp. Para los autores de problemas también daremos algunos detalles sobre como agregar las soluciones a sus problemas.

En la vista de problema, en la parte superior podemos ver dos pestañas, Problemas y Soluciones.

Si ya resolviste el problema y quieres comparar tu solución con la solución oficial, al dar click en la pestaña de Soluciones, te mostrará un mensaje como este,

Y así verás la solución,

Por otro lado, si no has resuelto el problema el proceso para ver la soluciones será distinto.

  • Primero intenta resolverlo,
  • También puedes usar tokens para ver las soluciones. Por cada 10 problemas que resuelvas obtendrás un token. Ver una solución solo usa 1 token.
  • Si ves la solución sin antes resolver el problema, éste no te dará puntos en el ranking.

Puedes ver los tokens que tienes disponibles en las vistas de soluciones dando click en “Ver mis tokens actuales”,  y te mostrara un mensaje como en la imagen,

Para los autores de problemas

Si quieres incluir las soluciones a tus problemas debes añadir una nueva carpeta /solutions al archivo zip del problema. Dentro de la carpeta se debe agregar el archivo markdown con la solución. Las soluciones se pueden editar desde la plataforma, tal como las descripciones del problema.

Mas información aquí.

 

Reglas del Coder del Mes

El reconocimiento del Coder del Mes en omegaUp se hizo con el objetivo de reconocer a nuestros usuarios más activos. A continuación listamos las reglas del programa.

  1. Existen dos programas de Coder del Mes: Coder del Mes para Ellas y Coder del Mes General. Cada inicio de mes se publicarán los ganadores de los dos programas de Coder del Mes.
  2. La ganadora del Coder del Mes para Ellas será elegida entre las usuarias que se han identificado con el género femenino en su perfil.
  3. El Coder del Mes general no hará distinción de género.
  4. Los ganadores serán publicados en la página principal de omegaUp.com durante el mes correspondiente.
  5. El usuario con el mayor puntaje acumulado durante el mes será el ganador del Coder del Mes General.
  6. La usuaria con el mayor puntaje acumulado durante el mes será la ganadora del Coder del Mes para Ellas.
  7. Debes seguir el Código de Conducta de omegaUp.
  8. Es posible que se haga una publicación en redes sociales felicitando a los ganadores. Esto dependerá de los recursos disponibles de omegaUp. Dicha publicación incluye compartir información como el alias del usuario y el nombre del usuario.
  9. Los administradores de los programas tienen el derecho de determinar la honestidad de los usuarios en sus soluciones utilizando diferentes métodos y descalificar al usuario si se encuentran violaciones.
  10. Cualquier violación a estas reglas dará lugar a disposiciones de penalización, incluyendo descalificación al Rank General o a los programas de Coder del Mes.

omegaUp se reserva el derecho de declarar vacío al ganador de ambos programas de Coder del Mes en cualquier momento. Así como de modificar en cualquier momento cualquiera de los puntos anteriores con o sin previo aviso.

Código de Conducta en omegaUp

omegaUp es una plataforma educativa y creemos que debemos fomentar un ambiente con respeto y la mismas oportunidades para todos. Por ello creamos el siguiente Código de Conducta, que debes cumplir para utilizar omegaUp.com.

  1. En general y en especial en los concursos, cursos, el blog y redes sociales de omegaUp se crea una comunidad, donde se espera que los usuarios actúen con respeto y empatía hacia los demás.
  2. Todos los códigos enviados por los usuarios deben estar dirigidos a resolver el problema y no a violar las reglas o desestabilizar el sistema (el juez).
  3. Los usuarios no deben participar en ninguna actividad injusta que influya en los resultados propios o de cualquier otro usuario.
  4. Se debe asegurar con el profesor del curso, u organizador del concurso, si está permitido el uso de libros, notas, herramientas y código que hayas escrito previamente.
  5. Todos deben respetar los derechos de autor. Esto significa que, si  se utiliza código de otra persona, el usuario debe contar con permiso explícito del autor original para hacerlo. Igualmente, los usuarios que desean añadir un problema de un tercero a la plataforma, deben seguir las reglas de reproducción o contar con permiso explícito del autor para hacerlo.
  6. El contenido que aporten los usuarios a la plataforma no debe ser inapropiado, ni ofensivo. Esto quiere decir que no se permite contenido que promueva insultos, acoso de ningún tipo, comentarios despectivos o publicar información personal de otros.
  7. Intentar extraer el código de otro usuario sin su permiso se considera trampa.
  8. Cualquier violación a estas reglas dará lugar a disposiciones de penalización, incluyendo descalificación al Rank General o a los programas de Coder del Mes o desactivación de la cuenta.

 

Soluciones de la Fase 2 de la Liga de Programación omegaUp

  1. Problema A

Las siguientes observaciones son claves para resolver el problema.

  1. Si p \leq n, entonces (w % p) < n. Así que el máximo residuo posible es n - 1.
  2. Si w satisface la condición del enunciado, entonces hay n - 1 diferentes residuos, luego los residuos son un subconjunto de n - 1 elementos, de la colección \lbrace 0, 1, \ldots , n - 1\rbrace.
  3. El mínimo común múltiplo de 1, 2, \ldots , n es mayor o igual al producto de los primos menores o iguales a n.
  4. El producto de los primos menores o iguales a 50 es mayor a 10^{18}

Veamos el caso donde 0 no forma parte de los residuos. De 1, vemos que

w % n = n - 1

w % n - 1 = n - 2

\ldots

w % 2= 1 .

Entonces w + 1 es un común múltiplo de 2, 3, 4,  \ldots,  n.

(*) Luego, de la observación 3 vemos que

mcm(2, 3, 4,  \ldots,  n) \geq P_n

 Donde P_n es el producto de los primos menores o iguales a n.

(*) Pero P_{50} > 10^{18}. Así que si w + 1 es un común múltiplo de 2, 3, 4,  \ldots,  n entonces n \leq 50.

Ahora el caso donde 0 sí forma parte de los residuos. Se sigue que existe 1 < k \leq n tal que w % k = 0. Con la misma lógica, de 1, vemos qué

w % k - 1 = k - 2

\ldots

w % 2= 1 .

Con ayuda de  (*), vemos que k \leq 50.  ¿Cuál es el orden de los residuos mayores a k?. Para esto, consideremos el mismo orden que usamos en el caso donde 0 no forma parte de los residuos.

El residuo k - 1 que originalmente pertenecía a k tiene dos direcciones: ser el residuo de un numero mayor que k, o k - 1 es el residuo que queda  descartado.

Sea M - 1 el residuo que queda descartado, entonces w + 1 debe ser común múltiplo de n, n - 1, n - 2, \ldots , M + 1, y para esto,

(w + 1) \geq n * (n - 1) * (n - 2)  * \ldots * (M + 1)

Lo cual sería imposible si n - M  \geq 50.

Ahora, si no descartamos los residuos de k + 1, \ldots , k + 50, entonces w + 1 \geq  (k + 1) * \ldots  * (k + 50) lo cual sería de nuevo imposible.

Por lo tanto, M + 50 > n y M - 50 < 1.

De modo que, si n > 100, la respuesta es “No”.  El problema ahora se limíta a n \leq 100 y w \leq 10^{18}.

Para éste problema, podemos guardar todos los residuos de w con los números menores o iguales a n en una estructura que nos maneje operaciones básicas de conjuntos, como un set. Usando el set, la respuesta es “Si”, si el tamaño del set después de añadir los residuos es n - 1, y “No” en caso contrario.

Tratemos cada query de manera independientemente, y nos tomamos a_1, a_2, \ldots, a_k como los puntos dados en la query.

El problema es equivalente a encontrar un círculo con el menor radio r posible, tal que todos los puntos de la query están dentro de él.  La respuesta sería el radio r.

Él cuál es un problema equivalente a encontrar el menor radio r tal que existe al menos un punto contenido en cada círculo con centro a_1, a_2, \ldots a_n y radio r.

Si dicho punto p existe, entonces existe al menos un par de círculos que se intersecten en algun punto T. Por supuesto, la distancia de p a T es menor o igual a r.

Por lo tanto, la respuesta puede ser encontrada con una búsqueda binaria.

  1. Fíjamos el radio r, el cual mandamos a la búsqueda binaria.
  2. Enumeramos los k círculos.
  3. Encontramos y enumeramos las intersecciones para cada par de círculos.
  4. Para cada intersección, recorremos cada centro. Si hay un centro a_ique tiene una distancia menor o igual a r entonces el menor radio que buscamos sí es menor o igual a r.

El costo de cada chequeo en la búsqueda binaria es O(k^3). Y la búsqueda binaria tiene un costo de aproximádamente 50 operaciones. Pero precalculando las soluciones, de 4, para todos los l puntos antes de contestar las preguntas, reducimos el costo del chequeo a O(k^2), lo cual ya es suficiente para resolver el problema.

Lo que buscamos, es la cantidad de subconjuntos tales que su \&  es igual a 0. Esta cantidad puede verse como la cantidad de subconjuntos totales, menos la cantidad de subconjuntos tales que su \& es diferente de 0. Ahora, esta cantidad puede verse como la cantidad de subconjuntos cuyo  \& tienen exactamente un bit prendido, más la cantidad de subconjuntos cuyo \& tienen exactamente dos bits prendidos, \ldots, más la cantidad de subconjuntos cuyo \& tienen exactamente 20 bits prendidos (esto ya que 10^6 \leq 2^{20}).

Para esto usaremos el principio de inclusión – exclusión. De modo que la cantidad que buscamos esta dada por

S_ 0 - S_1 + S_2 - S_3 + \ldots + S_{20}

Donde S_i nos dice cuantos subconjuntos tienen  un ~and~ con al menos i bits prendidos.

Ahora, S_i puede ser calculado con la ayuda de una SOS (Sum Over Subsets) DP.

Para esto,  sea mask alguna máscara de bits en [1, 2^{20}], y definamos m como el ~and~ de algún subconjunto del arreglo, tal que mask \& m = mask. Es decir, mask es una submáscara de m. Entonces, DP[mask] nos dice cuántas diferentes m existen. (dos m se consideran diferentes, si las posiciones de los elementos en el arreglo que la componen no son todas iguales). Está DP puede calcularse de la siguiente manera.

  1. Los casos base los formamos añadiendo la cantidad de ocurrencias de x en el arreglo, a DP[x].
  2. Fíjamos bit \in [1, 20], de izquierda a derecha.
  3. Para cada mask en [0, 2^{20}], tal que mask tiene el bit-ésimo bit apagado  (mas formalmente, mask \& (1 << bit)  = 0 ) se hace la transición DP[mask | (1 << bit)] += DP[mask].

De modo que S_i = 2^{DP[m]}, para cada m una máscara con al menos i bits prendidos.

Sean p_1, p_2, \ldots, p_m las posiciones de la cadena en donde hay un 1.

Definimos r cómo la posición donde yace la rana, y b como la cantidad de brincos que ha dado hasta el momento. Inicialmente, r = p_1 y b = 0. La respuesta puede encontrarse mediante siguiente algoritmo.

  1. Encontrar j tal que p_j - r \leq k y p_{j + 1} > k
  2. Hacemos

    b = b + 1 y r = p_j

  3. Repetimos mientras r \neq p_m.

La respuesta final es b. El algoritmo se puede implementar con complejidad lineal usando la técnica de two pointers (usando r y j como los pointers).

Rescatando la cantidad de ocurrencias para cada vocal (no hay que olvidarse de contar las mayúsculas) mientras recorremos la cadena, estamos listos para imprimir las tres respuestas. Las cuales son

(a)  Tamaño de la cadena.

(b)  Suma de las ocurrencias de cada vocal.

(c)  Imprimir la cadena de derecha a izquierda.

Salvemos los dos vectores dados a_1, a_2, \ldots , a_n y b_1, b_2, \ldots , b_n, y generemos un nuevo vector c_1 = (a_1 + b_1), \ldots, c_n = (a_n + b_n). La solucion es imprimir c_1, c_2, \ldots, c_n.

 

Todos los videos del curso de Introducción la Programación con C++

Actualización 10/04/20: El curso ha terminado y este post incluye los 11 videos.

Como parte de la iniciativa #QuédateEnCasaConOmegaUp estuvimos impartiendo un curso de Introducción a C++ en vivo a través de Facebook Live.

El material del curso está disponible de forma abierta y gratuita en la plataforma de omegaUp y puedes acceder en este enlace  (https://omegaup.com/course/introduccion_a_cpp) para ver el material y resolver los ejercicios en línea.

Aquí te dejamos un enlace a todos los videos y estaremos actualizando este post con cada video nuevo en la serie:

Continue reading “Todos los videos del curso de Introducción la Programación con C++”

Soluciones de la Fase 1 de la Liga de Programación omegaUp

Para este problema, consideramos un arreglo de ocurrencias O sobre los elementos del arreglo. De modo que la respuesta está dada por

\sum\limits_{i=A}^B O_{i}

Si consideramos el mismo arreglo de ocurrencias O sobre los elementos del arreglo, la respuesta está dada por O_k.

Podemos generar todos los elementos de la secuencia de Fibonacci hasta 30000, y guardarlos en un mapa M, de modo que M_k = 1 si k es un elemento de Fibonnaci, y M_k = 0 en caso contrario. Generamos la respuesta simplemente iterando desde i = 4 hasta i = N - 1, e imprimimos i si M_i = 0.

La clave para este problema, es usar variables que no provoquen un desbordamiento, por ejemplo, unsigned long long. Luego, es conocido que la serie de Fibonacci crece rápidamente, lo suficiente, como para generar la secuencia con todos sus elementos menores o iguales a N, guardando por cada uno su respectiva posición en ella. Por lo tanto, basta con checar si N es un elemento, e imprimir su posición. En caso de no serlo, imprimimos -1.

Este tipo de problema es conocido como straight-forward. Podemos guardar las estaciones de radio, y checar cuál estación es la mas cercana a la frecuencia dada, con una simple resta. En caso de haber dos estaciones con la misma distancia, la respuesta es la mayor. Solo debemos cuidar que la frecuencia esté dentro del rango permitido.

En este problema lo que tenemos es un grafo dirigido acíclico con aristas pesadas (intuitivamente, es un árbol, sin la propiedad de que cualquier par de nodos estan conectados por un único camino).
Los vértices son los eventos temporales, las aristas son dirigidas de p_i a i, y su peso es d_i. Además, cada vértice contiene un valor extra r_i. Un grafo que podemos asociar al primer caso de ejemplo es el siguiente.

Sean v_1 y v_k dos vértices distintos, tales que v_1 es ancestro de v_k. Es decir, existe un camino v_1 \rightarrow v_2 \rightarrow \ldots \rightarrow v_k en el grafo. Definimos S(v_1, v_k) como

\sum\limits_{i=1}^{k - 1} d_{v_i}

 

Es decir, la suma de los pesos en las aristas del camino.
De modo que el problema se convierte en: Para cada vertice v, contar cuántos vértices u en su “subárbol” \; existen tales que

r_u - S(v, u) \geq 0

Porque esto siginifica que tenemos suficientes segundos para viajar por el tiempo desde u hasta v.

Consideremos un arreglo E, donde la entrada E_v guarda cuántos descendientes u de v satisfacen

r_u - S(v, u) \geq 0

Pero

r_u - S(p_v, u) < 0

Donde p_v es el padre de v. Si v = 0, entonces no hace falta considerar a su padre, puesto que no podemos viajar por el tiempo a algún ancestro de 0 (ya que ni siquiera existe alguno).

En otras palabras, E_v guarda cuántos descendientes de v llegan a lo mas al vértice v.

También consideremos un arreglo D, donde la entrada D_v guarda cuántos descendientes u de v satisfacen

r_u - S(v, u) < 0

Es decir, D_v guarda cuántos descendientes de v no pueden llegar al vertice v.

Y además mantengamos un arreglo T, donde la entrada T_v guarda el tamaño del “subárbol” de v (incluyendo a v). En otras palabras, cuántos descendientes tiene v en total mas el mismo.

Por lo tanto, la respuesta final para el vértice v está dada por

(T_v - 1) - \sum\limits_{v \rightarrow u} (E_u + D_u)

donde u es un hijo directo de v.
Ya que esto calcula cuántos descendientes de v si pueden llegar a v.

Para el cálculo de nuestros arreglos, hacemos una dfs sobre el “árbol”  (partiendo del vertice 0). Para cada vértice u, hacemos una búsqueda binaria sobre un arreglo que mantenga la suma acumulada de los costos sobre las aristas que forman parte del camino de 0 a u, que nos devuelva el máximo ancestro v al que podemos llegar desde u.  Lo que nos dice que  E_v actualiza su valor a E_v + 1 (inicialmente, E_1 = E_2  = \ldots = E_n = 0). Esto se puede hacer usando un arreglo global. La idea es añadir la suma acumulada, luego explorar recursivamente el subárbol de u, y luego quitar la suma acumulada que añadimos. Esto es particularmente sencillo si usamos un vector de la STL para el arreglo global.

El arreglo T se calcula facilmente en la misma dfs, ya que

T_v = 1 + \sum\limits_{v \rightarrow u} (T_u)

Ahora podemos generar D, al estilo de programacion dinámica usando E. Notemos que

D_v = \sum\limits_{v \rightarrow u} (E_ u + D_u)

Lo que se puede hacer en la misma DFS.

Por lo tanto, nuestro algoritmo tiene complejidad O(Nlog(N)).

Primero reescribamos la expresión dada como

k = \dfrac{xy}{x + y}

De donde podemos despejar y como

y = \dfrac{xk}{x - k}

Sin perdida de generalidad, supongamos x \leq y, entonces se tiene

x \leq \dfrac{xk}{x - k}

x^2 \leq 2xk

x \leq 2k

Por lo tanto, podemos iterar x desde 1 hasta 2k, obtenemos y, y verificamos que k = \dfrac{xy}{x + y}, y > 0.

Guardamos las parejas que satisfazcan dichas condiciones y las imprimimos en el orden requerido, cuidando no repetir alguna respuesta.

Lo que nos deja con un algoritmo de complejidad O(k).

Una solución alternativa es la siguiente:

Te puedes dar cuenta que x, y > k, entonces el problema se convierte a  buscar a y b que cumplan

\dfrac{1}{k} = \dfrac{1}{k + a} + \dfrac{1}{k + b}

con a,b > 0. Si simplificas la igualdad llegas a que k^2 = ab, así que todo se reduce a encontrar las parejas de divisores a, b de k^2.  Lo que deja también un algoritmo de complejidad O(k).

Nota: Agradezco a José Tapia y a Carlos Galeana por su colaboración en el problema G.

Quédate en casa con omegaUp – nuestra respuesta al COVID-19

Querida comunidad omegaUp:

La epidemia del COVID-19 ha causado cambios importantes en nuestra vida diaria, trabajo, escuela y familia. Para ayudar a manejar el Distanciamiento Social a toda nuestra comunidad, hemos creado la campaña Quédate en casa con omegaUp: una serie de iniciativas educacionales en línea para apoyar la continuidad de la educación tecnológica en Latinoamérica.

1. Tutoriales para Profesores: ¿Cómo usar omegaUp para dar clases de programación en línea?

omegaUp.com es una plataforma gratuita en Español que ayuda a estudiantes a mejorar sus habilidades en Ingeniería de Software resolviendo retos de programación de una forma divertida y competitiva. Profesores de más de 100 escuelas de nivel Medio Superior y Superior en México y Latinoamérica usan la plataforma para dejar tareas y exámenes con retos de programación que los alumnos pueden resolver en línea.

Te invitamos a ver nuestros video-tutoriales para saber cómo funciona la plataforma de omegaUp y cómo puedes usarla para administrar tus cursos de programación en línea. Aquí dejamos el primer tutorial, en los próximos días produciremos más tutoriales que publicaremos en nuestra página de Facebook:

2. Para estudiantes: Ciclo de Conferencias en línea vía Facebook Live

Experiencias de Carrera es uno de los programas sociales de omegaUp que busca conectar el talento latinoamericano con experiencia en la industria de la Ingeniería de Software con estudiantes para motivarlos a continuar en el ramo de las Ciencias Computacionales y compartir la experiencia de trabajar en compañías como Google, Microsoft, Facebook entre otras.

Usualmente omegaUp organiza estas pláticas para las instituciones reconocidas como La Escuela del Mes y Clubes de Programación omegaUp. Sin embargo durante Marzo y Abril abriremos el ciclo de conferencias a todos los estudiantes que deseen entrar a través de Facebook Live. Síguenos en nuestra página de Facebook para que te enteres de las fechas y no te pierdas a ninguno de nuestros excelentes ponentes.

3. Para estudiantes: Aprende a programar en C++ con omegaUp – curso en línea

 

En omegaUp estamos preparando un curso en línea gratuito y abierto al público en general para aprender a programar en C++ en línea, con omegaUp. El curso estará basado en el material de Introducción a C++ que tenemos disponible en la plataforma de omegaUp.

Este curso será una excelente oportunidad para alumnos de nivel Medio Superior y Superior que deseen ampliar sus conocimientos de Ingeniería de Software, o todos aquellos simplemente empezar a incursionar en el amplio mundo de las Ciencias Computacionales.

Síguenos en nuestra página de Facebook para conocer los horarios y más detalles sobre el curso.

4. Liga de Programación omegaUp

¿Estás interesado en el mundo de la programación competitiva? omegaUp organizará la 1er Liga de Programación omegaUp, una serie de concursos semanales abiertos al público en general con temas y niveles de dificultad variados, empezando el próximo Jueves 26 de Marzo.

Demuestra tus habilidades de resolución de problemas computacionales y mejora tu nivel compitiendo contra los mejores. Para más detalles sobre las bases, registro, premios y fechas consulta nuestra página de Facebook.

5. Para nuestros amigos en Centroamérica: 1er Copa Centroamericana de Programación

En omegaUp también estamos organizando la 1er Copa Centroamericana de Programación, una competición dirigida a nuestra comunidad de El Salvador, Honduras y Guatemala. El concurso se llevará a cabo el Sábado 25 de Abril. Para mayor información sobre los requisitos y registro te invitamos a leer nuestras bases aquí.


En estos momentos difíciles es cuando más creemos que podemos contribuir a la causa educacional. Por favor ayúdanos a compartir este mensaje con el hashtag #QuédateEnCasaConOmegaUp. Estamos en contacto y por favor cuiden de su salud y la de sus familiares manteniéndose en casa.

Joe Ponce
Director Ejecutivo, omegaUp

El nuevo ranking de escuelas de omegaUp

Rankings de escuelas

Queremos presentarles el nuevo ranking de escuelas de omegaUp, tanto mensual como histórico. Cada uno de ellos funciona de manera similar, salvo por algunas variaciones que detallaremos a continuación:

  • El score de una escuela para el ranking mensual, se obtiene a partir de la suma de los puntos que provee cada problema que los usuarios de la escuela han resuelto dentro del mes actual. 

Contamos los puntos de cada problema una única vez, por lo que si 10 usuarios de una misma escuela, resolvieron el mismo problema que otorgaba 0.5 puntos, la contribución de éstos es 0.5 y no 5 (0.5*10).

  • El score de una escuela para el ranking histórico es calculado de la misma manera que el rank mensual, con el diferencial de que el score se calcula a partir de todos los problemas que se resolvieron desde que la escuela fue creada.

Recuerda que un problema se cuenta como resuelto por una escuela, siempre que un usuario asociado a la misma, lo haya resuelto. Si dicho usuario, luego modifica su escuela actual en su perfil, dicho problema y el puntaje que éste aportaba al score de su escuela anterior, no se mueven a la nueva, puesto que a la fecha en que resolvió dicho problema, el usuario aún no pertenecía su nueva escuela.

Así que si lo que un coder desea es que su escuela mejore su score en el ranking de omegaUp, debe priorizar que los alumnos de la misma resuelvan la mayor cantidad de problemas distintos en la plataforma, pues el hecho de que varios resuelvan el mismo problema, aportaría lo mismo a que uno solo lo haga.

Atentamente,

El equipo de omegaUp

Insignias de Usuario en omegaUp

Estimados coders,

Tenemos el agrado de presentarles una nueva característica de la plataforma: “Insignias de Usuario”. Estas insignias son pequeños reconocimientos para los diversos logros alcanzados por ustedes y se encuentran ya disponibles en la plataforma.

Para ver las insignias que has obtenido, simplemente debes acceder a tu perfil en omegaUp, ahora existe una nueva sección donde se listarán todas tus insignias conseguidas:

Además, si quieres ver todas las insignias existentes, solo debes hacer click en el enlace Ver todas, que se encuentra al costado del número de insignias obtenidas. Recuerda que al poner el mouse sobre el ícono de la insignia, podrás ver la descripción de lo que tienes que hacer para poder obtener dicha insignia. Hay insignias que tienen un ícono sombreado por completo de negro, eso significa que aún no la has obtenido, ¡podrás ver el ícono de la insignia una vez la obtengas!

Si quieres ver un poco más de información de una insignia, basta con que hagas click sobre ella, de esta manera, podrás acceder a una vista más detallada:

Y eso no es todo… Ahora, cada vez que recibas una insignia nueva, recibirás también una notificación, así siempre estarás al tanto de los nuevos reconocimientos adquiridos.

Y si te estás llenando de notificaciones, puedes marcarlas como leídas a todas, o de manera individual.

¡Tú también puedes proponer nuevas insignias, solo debes seguir la Guía para la propuesta de Insignias de omegaUp!

Esperamos que te guste esta nueva característica y que puedas desbloquear todas las insignias de usuario en omegaUp.

¡Muchas gracias! – 2da Gala Anual de omegaUp

Prof. Pedro Fuentes dando un gran discurso en la 2da Gala de omegaUp.

Queridos amigos,

Gracias a la increíble generosidad de todos los participantes, nuestra 2ª Gala Anual celebrada el 19 de Octubre trajo casi $ 40,000 en fondos que serán utilizados para ayudarnos a mejorar omegaUp.com como una plataforma de aprendizaje gratuita para llegar a más estudiantes, y continuar nuestros programas sociales.

Códigos de Yucatán by Rafa Díaz, Artist & member of omegaUp Board of Directors
Eduardo Sosa, Consul Adscrito de México en Seattle, en el discurso de apertura.

Hemos sido honrados por la presencia de Eduardo Sosa, Cónsul de México, Clary Monzón, Cónsul General de El Salvador y Miguel Ángel Velásquez, Cónsul General de Perú. “El trabajo de omegaUp debe ser visto como el puente que une los sueños de nuestros estudiantes con un entorno de innovación que ya está sucediendo en todo el mundo”, fueron las palabras de apoyo del honorable Cónsul Eduardo Sosa. “Los puentes te van a llevar más lejos que las paredes. Son más difíciles de hacer, y deshacer.”, fueron las palabras de aliento del honorable Cónsul Miguel Ángel Velásquez.

Miguel Ángel Velásquez, Honorable Consul de Perú. Clary Monzón, Honorable Consul de El Salvador in Seattle

Miguel Ángel Velásquez, Honorable Consul de Perú en Seattle

Hemos celebrado los logros de la Escuela del Año, el Instituto Técnico Superior del Sur de Guanajuato representado por el Prof. Germán Gutiérrez, el organizador principal de la Coding Cup ITSUR 2019, un concurso de programación organizado en omegaUp que cuenta con 1500 estudiantes que participaron en todo México.

 

La Escuela del Año: Nancy Pacheco, parte del omegaUp Board of Directors y Prof. Germán Gutiérrez del Instituto Tecnológico Superior del Sur de Guanajuato.

 

El Prof. Pedro Fuentes compartió, en un emotivo discurso, su experiencia al guiar a los alumnos del Centro de Bachillerato Tecnológico Agropecuario #39 en Temoac, Morelos, a participar en competiciones internacionales de robótica utilizando la magia de la programación como su fuerte. La historia del Prof. Pedro estará siempre grabada en nuestros recuerdos como un ejemplo de logro y éxito a través de la perseverancia.

Salvador Segura  – parte del  omegaUp Board of Directors, cerrando la Gala 2019.

 

Gracias – amigos, voluntarios y donadores – por hacer posible estas historias de éxito. Su apoyo inspira talento y nos motiva a continuar en este viaje.

omegaUp Fundraising Team y amigos

Para mayor información sobre la organización, visita omegaUp.org y síguenos en Facebook.

Sinceramente,

 

 

 

 


Joemmanuel Ponce
Director Ejecutivo – omegaUp.