Upsolving Red de Programación Competitiva

Problemas

Séptima Maratón

Sobre este sitio

¿Qué?

Este es un pequeño espacio dedicado a ejercitarnos en upsolving, usando las competencias de la Red de Programación Competitiva.

El término “upsolving” se usa con frecuencia en círculos y toda clase de polígonos de programación algorítmica (se encuentra mucho en los foros de Codeforces, por ejemplo), y su significado puede interpretarse más o menos así:

upsolve. v.

  1. Resolver “de pa’rriba”. Compárese con “rastrear de pa’trás” (backtrack).

  2. Resolver todos los ejercicios de una competencia después de que ésta ha terminado, usualmente ayudándose de los editoriales publicados por los problem-setters (si los hay), o mediante el trabajo en equipo.

  3. Tomar un problema que aun no se ha resuelto y estudiarlo detenidamente hasta ser capaz de resolverlo, y explicar la estrategia usada a los demás.

¿Porqué?

Es curioso lo que hacemos los seres humanos cuando se trata de cosas que nos apasionan. El físico Neil deGrasse Tyson lo ilustra de una forma muy bonita, cuando dice : “I know that the molecules in my body are traceable to phenomena in the cosmos. That makes me want to grab people on the street and say: «Have you heard this?»”. Es claro que a él le apasionan asuntos relacionados con la naturaleza física del Universo, que no es necesariamente el tema central de este sitio, pero ciertamente manifiesta un nivel de entusiasmo con el que, creo, todos nosotros nos podemos identificar.

La programación algorítmica es un campo hermoso, lleno de experiencias enriquecedoras, en aspectos que van más allá de lo académico. ¿No es perfectamente natural querer compartir aquello que amamos con las personas a nuestro alrededor? Espero que este pequeño experimento sea de ayuda a aquellos que participan en competencias de programación porque lo han elegido de corazón.

Muchos maratonistas expertos citation needed suelen dar la misma respuesta cuando se les pregunta cómo llegaron a tener el nivel que tienen: “Upsolving”. Intentemos, pues, acercarnos a ellos imitando sus métodos.

¿Cómo?

La idea es presentar explicaciones breves de los problemas, una pequeña discusión sobre la estrategia a utilizar, y luego un screencast que ilustre el proceso de escribir una solución.

Este formato que he elegido es el resultado de mucha reflexión, y aunque los detalles detrás de mi decisión no son muy importantes, quiero resaltar que el objetivo más importante detrás de todo esto es transmitir ideas de la forma más efectiva posible. Vamos a ver cómo nos va.

En cada problema pondré el enlace al hilo correspondiente en el foro de la Red, para charlar ahí sobre los detalles de lógica e implementación.

¿Quién?

¡Hola, mundo! a que no es la primera vez que ven este saludo… Mi nombre es Leonardo; mis amigos, que espero que lo seamos, me llaman Leo. Me pueden escribir a .

Pueden preguntarme lo que quieran—aunque si tienen dudas específicas sobre los problemas que presento, mi sugerencia es usar el foro—, contarme cosas, recomendarme películas, libros, canciones, etc. Vivo en Bogotá; si quieren reunirnos en alguna Universidad a discutir sobre programación algorítmica, lo hago con gusto, o si prefieren sentarnos a tomarnos un café o una cerveza y hablar sobre otras cosas, también lo hago con gusto.


Nota: Este sitio no pretende ser una “fuente oficial” de información o referencia única de cómo resolver problemas. Este es un proyecto personal; no está asociado a ninguna organización o grupo, y tan solo refleja cosas de mi forma de pensar y escribir código, y nada más que eso bueno, y mis chistes malos .

Finalmente, los invito a todos a compartir sus propias ideas sobre programación algorítmica, si les nace hacerlo. Entre todos podemos explorar diferentes formas de jugar con todos estos temas y transmitir nuestros descubrimientos a los demás, ya sea a través de texto, videos, programas, danza interpretativa, o cualquier otro medio que nos sugieran las Musas. Si ustedes, estimados amigos, crean sus propios sitios con explicaciones sobre problemas algorítmicos—ya sean los mismos que yo abordo u otros—¡genial! Me encantaría que así fuera, y con toda seguridad ahí estaré aprendiendo de la perspectiva y estilo de código de ustedes. We are all connected.