• GitHub
  • Facebook
  • LinkedIn
  • Instagram
  • Youtube

Buscar




Competir en programación - ¿Cómo se hace?

¿Quieres conseguir tu cinta negra en programación?
Entonces debes entrenar... y mucho.



Actualmente existen muchas plataformas web en donde podemos medir nuestras habilidades de programación participando en competencias y es muy común encontrar a personas que entran a la arena y abandonan rápidamente.

Éstas plataformas son creadas como "gimnasios de programación" porque buscan que las personas mejoren sus habilidades y al mismo tiempo puedan medir su progreso comparándose con otros competidores, si tú deseas entrar a uno de estos gimnasios, aquí te dejo unos consejos:

Escoge tu plataforma:


Personalmente y como parte de mi participación en la ORIG, he trabajado con la plataforma OmegaUp, Codeforces y Karelotitlán.



Ubica tu nivel de programación:

En cada plataforma es posible encontrar varios problemas y en cada uno viene indicado su nivel de dificultad; por ejemplo, en Karelotitlan vienen separados y es muy sencillo ubicarlos.

Por otra parte, en Codeforces es necesario ir al problemset y ordenar los problemas de acuerdo al nivel de dificultad. Otra de las ventajas es que nos permite saber de qué tipo de problema se trata... ¿Búsqueda? ¿Algoritmos glotones? ¿Estructuras de datos? Así es más fácil encontrar problemas para mejorar en lo que tú quieras.

 Entiende qué es lo que te piden resolver:

Esta es la parte más difícil de programar ya que muchas personas comienzan a programar antes de siquiera estar seguros acerca de lo que les piden.
Para evitar esto primero lee completamente el problema; normalmente está dividido en algunas partes:
  • Descripción: te da el background del problema, esto te permite imaginar el problema dentro del mundo real con ejemplos tangibles y así sea más fácil entenderlo.
  • Problema: este es el corazón de todo, el problema... Lo que debes entender. Presta atención a esta parte porque te explica el proceso esperado para poder cumplir con las tareas.
  • Entrada: aquí te dan un par de ejemplos de lo que tienes al momento de iniciar el problema para que así sepas cómo (o por lo menos busques la forma de) hacer que tu programa reciba los datos que va a procesar.
  • Salida: Es, dada la información de entrada, el resultado que tiene que arrojar el programa después de haber procesado la información y su formato. En pocas palabras, es un ejemplo del resultado. 
  • Consideraciones: ¿Cuánta memoria tiene disponible la computadora para ejecutar tu programa? ¿cuánto tiempo tienes para ejecutar tu código? Quizá al inicio no sea taaaan importante esta información pero conforme vayas avanzando sí que lo será porque, principalmente en temas de recursión, búsquedas y estructuras de datos, los algoritmos presentan un crecimiento exponencial conforme cambia la cantidad de datos y hay implementaciones que funcionan mejor que otras para resolver éstos problemas.

¡¡¡A codificar!!! 

Escoge el lenguaje de programación que más se te acomode y comienza a resolver tu problema.
La forma más recomendada de afrontar un problema es pensar en el peor de los casos, el mejor y 2 o 3 casos promedio... ¿Qué significa esto?
  • El mejor caso es uno pequeño y fácil de resolver. Puedes pensar en él tomando en cuenta las consideraciones del problema. ¿Cuál es la menor cantidad de información que se me puede presentar? ¿cuál es el ejemplo más pequeño y sencillo que se me ocurre?
  • El peor caso es todo lo contrario. Toma en cuenta el límite superior de las consideraciones del problema. ¿Mi solución consume muchos recursos para este caso? ¿mi programa está preparado para almacenar y procesar toda esa información?
  • Un caso promedio es precisamente eso, un caso a la mitad del mejor y el peor caso.

A la hora de calificar:

Si no recibes una puntuación perfecta al primer intento es perfectamente normal; solo piensa en qué es lo que te falló, qué errores te indica el programa y piensa en cómo resolverlo nuevamente.

Quizá solo tienes que pensar en más casos de uso que no hayas considerado.



Contacto

Envíame un correo


¡Contáctame!

Name

Email *

Message *

Email

galdana5190@gmail.com