Problemas de ¡Acepta el reto! propuestos como ejercicios de práctica en los grupos B y H de la asignatura Fundamentos de Algoritmia de la Facultad de Informática de la UCM.
En esta página irán apareciendo los ejercicios sugeridos, organizados en distintos periodos temporales y/o temáticos. Cada pestaña permite visualizar la lista de problemas de ¡Acepta el reto! correspondientes a un periodo, así como las personas que los han intentado resolver durante el intervalo temporal indicado.
Te recomiendo enfrentarte a la resolución de todos los problemas: picarte con ellos, probar ideas, pensar cómo hacerlo mejor... La experiencia, y lo que de ella aprendas, te resultará de gran ayuda para entender y preparar la asignatura, y te permitirá coger soltura para enfrentarte con los problemas del examen.
| Sesión | |
|---|---|
| #1 | Calentando motores... |
| #2 | De qué va la algoritmia... |
| #3 | Algoritmos iterativos (1) |
| #4 | Algoritmos iterativos (2) |
| #5 | Algoritmos recursivos |
En la parte inferior puedes ver el resumen/resultado de todos los envíos realizados a lo largo del primer cuatrimestre del curso 2026-2027 por parte de estudiantes de los grupos B y H de 2º de la Facultad de Informática de la UCM.
Los envíos están divididos en distintos periodos que se corresponden con secciones temáticas o conceptuales de la asignatura.
Cada periodo tiene su propia pestaña, en la cual podrás ver sus detalles. Además del intervalo temporal correspondiente a ese periodo y los ejercicios recomendados, aparecerá una clasificación con las personas que han resuelto más ejercicios (en caso de empate, ganan las que los hayan resuelto en menos tiempo).
Ten en cuenta que en la clasificación aparecen solamente las personas que sean usuarias de ¡Acepta el Reto!, estén matriculadas en la asignatura y hayan comunicado a la profesora su identificador de usuario a través del Campus Virtual de la asignatura.
La tabla que aparece a continuación resume el número total de problemas resueltos en cada periodo por cada estudiante.
Arrancamos con unos sencillos retos que no requieren conocimientos de programación más avanzados que los ya estudiados en 1º. Además, te permiten poner en práctica los tres tipos de esquemas con los que te encontrarás (referenciados en el CV).
No son más que una excusa para utilizar el juez, desentumecer tus músculos y comprobar que tus envíos aparecen. Para ello, solo debes completar la tarea del CV en el que me comunicas tu número de usuario y esperar a que yo procese tu respuesta (manualmente).
Un consejo a no perder de vista: piensa con calma antes de lanzarte a programar.
Primeros problemas para descubrir que la algoritmia no es únicamente programar.
Algunos de estos problemas parecen tener solución obvia pero, al programarla y enviarla al juez, descubrimos que es demasiado lenta. En eso consiste la algoritmia: en encontrar métodos más eficientes que la primera solución que se nos viene a la cabeza.
Si no conseguís escapar del time-limit (TLE), no os preocupéis. Los algoritmos eficientes son el alma de la asignatura y no hemos hecho más que empezar...
Hablaremos de ellos (o de casi todos ellos) en las clases venideras.
Estos problemas se resuelven guardando información sobre la parte de la secuencia ya recorrida, o bien procesando la secuencia para obtener datos que luego permitan resolver el problema más fácilmente.
Debes pensar bien la información necesaria para resolver cada problema antes de empezar a programarlo, así como calcular el coste del algoritmo para evitar un time-limit (TLE).
Lo importante no es únicamente conseguir el AC, sino implementarlos con un código compacto y claro.
Además, recomendamos practicar en todos ellos su especificación pre/post, la función de cota y el invariante.
Con estos problemas pondrás en práctica varios de los esquemas algorítmicos iterativos que estudiamos durante el curso.
Debes pensar bien la información necesaria para resolver cada problema antes de empezar a programarlo, así como calcular el coste del algoritmo para evitar el time-limit (TLE).
Lo importante no es únicamente conseguir el AC, sino implementarlos con un código compacto y claro.
Además, recomendamos practicar en todos ellos su especificación pre/post, la función de cota y el invariante.
A partir de ahora, nos dedicaremos a la recursión. El tema 4 sienta las bases de los algoritmos recursivos, que ya no abandonaremos.
Algunos de los ejercicios que aparecen aquí pueden implementarse también de forma iterativa. Pero para familiarizarte cuanto antes con el pensamiento recursivo, es preferible que los resuelvas con recursión y practiques así los conceptos del tema. Mejor aún sería que dieras varias pasadas por cada problema: empezando con recursión, buscando luego recursión final, para terminar con la versión iterativa del algoritmo.
Hay un problema que, incluso, puede resolverse con una expresión.
Estos ejercicios ponen en práctica lo básico de la recursión: todos ellos han sido resueltos por mis estudiantes de FP2 de los últimos cursos.