Empecé a codificar hace menos de un año, quizás unos once meses atrás para ser precisos.
Decidí comenzar a programar en C, ya que también lo tenía en mi curso universitario. Después de aprender la sintaxis básica (hasta punteros) comencé a resolver problemas desde la sección de práctica de Hackerrank. No los hice con demasiada frecuencia, tal vez un problema o dos en dos semanas más o menos. Esos problemas parecían difíciles y desafiantes al principio, y muchos de ellos todavía toman tiempo, pero definitivamente a medida que resuelve más y más problemas, comienzan a parecer manejables. Creo que estoy bastante cómodo en matemáticas, y debes tener en cuenta este aspecto. Desde mi experiencia hasta ahora, una buena comprensión de las matemáticas es un gran beneficio en estos desafíos de programación, ya que la idea clave en muchos de los problemas es de naturaleza matemática. Al principio, lleva mucho tiempo convertir la idea clave que se le ocurrió en código real. Pero a medida que practica más y más, el tiempo de conversión disminuye drásticamente y el código comienza a salir rápidamente, sin demasiado esfuerzo. Inicialmente, intente resolver tantos problemas como sea posible.
Luego, hace unos seis meses, leí sobre Google Code Jam y me interesó. Comencé a resolver los problemas de calificación del año pasado en el sitio web de CodeJam. Y los problemas parecían ser cada vez más fáciles de codificar, a medida que resolvía más de ellos.
- ¿Qué significa Yoshua Bengio que la principal limitación de los algoritmos de aprendizaje automático actuales es que necesitan demasiados datos para aprender?
- En C #, ¿cómo podemos dividir un número BigInteger en otros dos números BigInteger?
- ¿El aprendizaje por refuerzo está recibiendo actualmente más atención que los algoritmos genéticos?
- ¿Qué algoritmos se utilizan para construir árboles filogenéticos?
- ¿Qué idioma debo aprender para el comercio de algoritmos?
Habiendo hecho tan pocos problemas (en Hackerrank), no estaba muy seguro de pasar los clasificatorios. Pero luego, después de pasar más de 6 horas, ¡resolví 3 de los 4 problemas correctamente! Pasé el umbral mínimo y obtuve un rango final de aproximadamente 12k (más sobre eso aquí: “The Road Leading to Google Code Jam 2016).
Acabo de participar en Code Jam 2016 Round 1A. Esta ronda fue de una naturaleza mucho más seria en comparación con la Ronda de Calificación, la dificultad fue mayor y duró solo 2 horas y 30 minutos (en comparación con las clasificatorias de un día). Para mi sorpresa, hoy también me las arreglé bastante bien, resolviendo 2 de los 3 problemas correctamente (al menos 1 pequeña entrada correcta). Obtuve un rango de 3k de aproximadamente 6k participantes en esta ronda y perdí en 1B.
Entonces, habiendo tenido al menos un poco de éxito como principiante, destacaré algunos puntos que me han sido útiles:
Intenta resolver tantos problemas como sea posible. Cuanto más practiques, más rápido y mejor no renunciarás a un problema. Dedique al menos un par de horas a un problema determinado. Si no tiene éxito, tome un descanso y regrese nuevamente e intente resolverlo más tarde. Sigue pensando en el problema, lo más probable es que te topes con una idea. Una vez que tenga la idea clave, la codificación no será demasiado difícil. Intente resolver al menos un problema cada semana. Si no hace esto, será más lento a medida que pase más tiempo. Después de resolver el problema por su cuenta, pruebe otras soluciones. A veces son mucho más eficientes y comprenderlos puede ser beneficioso para usted más tarde. Regístrese en el Portal de Entrenamiento de la Olimpiada de Computación de EE. UU. (USACO) e intente completar el curso. (Actualmente estoy haciendo esto)
Después de sentirse cómodo con los problemas, participe en concursos mensuales en sitios web como Codechef. Son divertidos y pueden ayudarte a mantenerte interesado. Podrías inscribirte en un curso de Algoritmos en Coursera, que podría resultar útil no solo para esto, sino también para el trabajo de tu curso si estudias Ciencias de la Computación. es realmente importante No se deje intimidar por un concurso y decida “participar más tarde”. Tenía ese pensamiento en mente, pero decidí probar Code Jam y realmente lo logré. Así que no seas tímido para intentarlo. Incluso si falla, puede seguir intentando los problemas y luego, si es necesario, ver las soluciones.
Seguiré todos estos puntos y espero obtener un rango mucho mejor cuando participe nuevamente el próximo año en Google Code Jam 2017.