Nick: lobishomen
Nombre completo: Luis Enrique Vargas Azcona
Edad: 21 años
Estudios: estudiando la licenciatura en ingeniería en computación
Escuela: Universidad de Guadalajara
Cómo empezaste a programar?
Mis primeros intentos de programación los realizé con archivos por lotes en DOS, había visto un documental llamado algo asi como “Cómo Utilizar MS DOS con un Disco Duro” y me llamó la atención la parte de los archivos por lotes. Mas tarde me compraron un libro de programación en Quick Basic y desde entonces no he dejado de programar.
¿Cómo practicas para los concursos de programación?
La estrategia básica de entrenamiento se abrevia como MPS, siglas que significan “Massive Problem Solving”, la lectura de libros y/o tutoriales de algoritmos tambien complementa el MPS pero en lo personal yo dedico al menos un 90% de mi entrenamiento a resolver problemas y menos de un 10% a leer sobre algoritmos. Esto es porque los problemas de los concursos de programación rara vez se resuelven aplicando directamente un algoritmo conocido, normalmente hay que aplicarlo de una manera un tanto exótica por lo que por cada algoritmo que se lee es necesario resolver problemas que lo usen de muchas formas diferentes.
Aunque está claro que es necesario resolver muchos problemas, no siempre está tan claro qué clase de problemas resolver; en general procuro resolver problemas que se me dificulten para ir mejorando en esos aspectos.
También a veces sirve implementar varias veces la solución de un mismo problema para así ir encontrando formas mas prácticas de implementarlo.
¿Cómo fue tu experiencia en el ANPA 2007 como concursante?
Fué una buena experiencia pero difícil de describir fielmente, fue emocionante concursar tanto en la semifinal como en la final, me gustó convivir con los otros participantes y además no esperaba lograr quedar en 2° lugar absoluto. A decir verdad no pudo haber sido mejor.
¿Cómo atacas los problemas de un concurso.. abres el sobre y qué haces después?
Pues antes de abrir el sobre respiro y procuro concentrarme en resolver el mayor número de problemas posibles y solamente ver el marcador para saber si juzgué mal la dificultad de algún problema. Luego de abrir el sobre leo los problemas, a veces funciona leer primero los mas cortos o los que tienen entradas mas simples(si se encuentra un problema fácil y de redacción corta da cierta ventaja haberlo leido primero).
Estimar la dificultad de los problemas no es algo fácil, hay algunos problemas que con solo entenderlos ya logro saber cual es su solución pero también hay otros en los que requiero pensar, y en ese tipo de problemas es difícil determinar su dificultad.
Justo después de leer un problema lo primero que intento hacer es buscar la manera de reducirlo en uno o más problemas mas simples y luego estimar la dificultad de cada uno de ellos. Básicamente en un problema o subproblema se tiene un conjunto de datos y se quiere descubrir cómo obtener un conjunto de incógnitas sujetas a un conjunto de condiciones, así que la dificultad de un problema la suelo estimar por qué tan lejos parecen estar las incógnitas de los datos.
¿Cuáles son tus hobbies… fuera de la programación?
La lectura, las matematicas y el ánime. También me gusta el basquetbol y los videojuegos pero lamentablemente casi no he tenido tiempo de practicar estos últimos dos hobbies.
¿Algunos tips para los concursantes?
Durante el concurso se deben de concentrar en resolver los problemas y en su propio trabajo, no en el trabajo de los otros, así mismo para cada problema deben de buscar la manera de resolverlo y no pensar en un algoritmo y buscar el problema que se resuelve con eso(esto último les suele pasar a quienes no estan acostumbrados a este tipo de concursos).
Otro tip, muy ligado al anterior, es que utilizen lo que sea que les funcione para resolver los problemas de la manera más rápida posible; muchas veces los programadores se mentalizan a que jamás van a hacer ciertas cosas por considerarlas malos hábitos(por ejemplo hibridar C y C++, reservar más memoria de la que se necesita, usar variables globales, etc.), siempre hay que pensar en qué clase de cosas se necesitan para cada propósito y no al revés.
Tampoco hay que olvidar que todos los problemas cuentan lo mismo y no vale la pena intentar resolver un problema difícil sin resolver antes los fáciles.
Hay que fijarse muy bien en lo que pide cada problema y en que lo que se esté calculando sea exactamente eso, suele darse el caso de que cuando un problema pide calcular algo óptimo hay quienes implementan algoritmos que encuentran algo bueno, mas no óptimo. En este tipo de problemas es indispensable pensar utilizando la lógica clásica, donde las cosas son verdaeras o falsas sin posibilidad de un término medio.