Retos de programación

Con una cierta frecuencia, se convocan concursos de programación. Incluso si decides no competir en ellos, puede ser interesante echar un vistazo a los ejercicios propuestos, para no permitir que se oxiden tus conocimientos de programación. También, algunas empresas proponen retos de programación a sus candidatos para que puedan demostrar su valía.

Desde este apartado, tendrás acceso a algunos ejercicios propuestos en concursos anteriores o en pruebas de selección de algunas empresas.

Cuando sea posible, junto con el enunciado, tendrás ejemplos de datos de entrada y de sus correspondientes salidas.

En algún caso, el enunciado original puede tener "lagunas", aspectos que no queden totalmente claros, bien sea por falta de detalles o porque el texto original se encontrase en otro idioma y su traducción presentara alguna dificultad. Si consideramos que algún enunciado no queda claro, nos tomaremos la libertad de "adaptarlo", aunque a cambio quizá no sea una traducción exacta del original.

En ocasiones, tendrás alguna solución de ejemplo, aunque eso no nos parece una prioridad. Y también podrás contribuir aportando tus propias soluciones.

Los ejercicios estarán graduados en 5 niveles de dificultad:

  1. Ejercicios "de principiantes", para los que sólo necesitaras números enteros y estructuras básicas de programación (if, for, while). Algún ejercicio puntual puede necesitar números reales, pero sólo para cálculos sencillos
  2. Ejercicios "básicos", que además pueden necesitar arrays o cadenas de texto.
  3. Ejercicios "medios", para los que puede ser necesario meditar la solución, pero que cualquier alumno de primer curso de estudios superiores de informática debería estar preparado para afrontar, porque requerirán estructuras repetitivas, funciones, estructuras estáticas o dinámicas... En ocasiones, el concurso de origen imponía limitaciones de tiempo de ejecución, lo que obligaba a optimizar usando técnicas más avanzadas, pero no entraremos en tanto detalle.
  4. Ejercicios "largos", que necesitan soluciones más exhaustivas, pero para los que existe algún "metodo de resolución". Se podrán resolver empleando algoritmos voraces, backtracking y técnicas similares.
  5. Ejercicios "duros", propios de una final de un concurso de programación, cuya solución no es tan evidente ni tan automatizable.

 

Si te atreves con ello, puedes ver la lista de retos propuestos.