lunes, 20 de febrero de 2012

TOPCODER : EL MEJOR GIMNASIO PARA ENTRENAR CON LOS MEJORES PROGRAMADORES DEL MUNDO

Hola Amigos:

El TOPCODER http://www.topcoder.com es una plataforma donde programadores de todo el mundo se reúnen para participar en competencias de programación llamadas SINGLE ROUND MATCHES o SRM's, esta plataforma está compuesta por una comunidad de 391,893 programadores de todo el mundo. No es un lugar para hacer ventanitas sino para programar.

Se resuelven problemas algorítmicos clasificados en tres niveles, el fácil (250 puntos), el intermedio (500 puntos) y el difícil (1000 puntos). Los coders están divididos en dos grupos, la División 2 (los que recién empezamos) y la División 1 (selecto grupo donde están los programadores más experimentados del mundo).

Es el lugar ideal para entrenar tus habilidades de programación si es que estás pensando en ser un CODER Competitivo. Los SRM's que son tres al mes quedan almacenados, es decir están disponibles las 24 horas del día, los 7 días del mes, los 12 meses del año para que cualquiera pueda entrenar y elegir el SRM, la división y problema que desee.

Una vez al año se celebra el TopCoder Open, este año 2012 tiene entre sus Sponsors a GOOGLE. Este evento competitivo reúne a los mejores programadores del mundo de todas las edades y todos exponen lo mejor de sus habilidades algorítmicas y en programación para poder clasificar a la siguiente ronda y llegar a las finales.

En este How To aprenderás a instalar lo necesario para entrenarte en esta plataforma y ponerte a punto para los SRM's.

Lo haremos en 4 pasos:


a. Registrarse en el TopCoder.
b. Ejecutar el applet o "Arena".
c. Instalar el PLUGIN KawigiEdit.
d. Resolver un SRM de ejemplo.

Empecemos:

a. Registrarse en el TopCoder.

1. Ingresamos al http://www.topcoder.com/ y nos vamos al portal de la comunidad como se ve en la figura:

Si deseas puedes ir de frente al siguiente LINKhttp://community.topcoder.com/tc


2. Una vez en la plataforma tendrás que registrarte, clic en "Register Now" como se ve en la figura:

Si deseas puedes ir de frente al siguiente LINKhttps://www.topcoder.com/reg/


3. Completa el formulario de registro, para los que desean competir les sugiero que hagan check en las dos casilleros debajo de "I Want to Compete", los demás pasos para registrarse son elegir tu nick y contraseña y completar tus datos personales como en cualquier plataforma.




b. Ejecutar el applet o "Arena".

4. Una vez registrado entramos a la "arena" (así se le llama al applet donde podemos entrenar con SRM's anteriores - Carreritas), para eso hacemos clic en "O(n)", ahí también podrás competir en los SRM's.


5. Descargamos el applet para poder loguearnos haciendo clic en "JAVA WEB START".


6. Una vez descargado abrimos la carpeta donde nuestro navegador descarga el applet por defecto. Es indiferente si es Linux o Windows.


7. Ejecuta el applet descargado (Doble clic).


8. Marcamos el Check "Always trust content from this publisher" para que no nos pregunten de vuelta y le das clic en el botón "RUN" para ejecutar el applet.




9. Te logueas con tu nick y password con los que te registraste.




10. Y entras a la "Arena" como buen gladiador.





c. Instalar el PLUGIN KawigiEdit.

11. Para facilitar tu entrenamiento y participación en concursos aprenderemos a instalar un PLUGIN llamado KawigiEdit.


Luego guárdalo en una ubicación donde no lo borrarás y que recuerdes, como en mi caso en la imagen.




12. En el applet nos vamos a OPTIONS + EDITOR.




13. Se abre el Editor de Preferencias.




14. Podemos ver que sólo está configurado el Editor por defecto, tendremos que configurar el KawigiEdit.

Clic en Add.




15. Configuramos como en la imagen, escribe:

En Name: KawigiEdit
En EntryPoint: Kawigi.KawigiEdit




16. Clic en Browse:




17. Buscamos el KawigiEdit que descargamos en el paso 11.

Seleccionar + Clic en Abrir.




18. Seleccionada la ruta clic en el botón OK.




19. ya tenemos el PLUGIN "KawigiEdit" como parte de los editores, ahora habrá que seleccionarlo como Editor por defecto.




20. Marcamos los dos Checks como en la imagen.




21. Ahora habrá que indicarle al KawigiEdit la ruta del compilador de nuestro lenguaje de programación, yo uso JAVA en mi caso el compilador es el javac.

Clic en "Configure":




22. Existen 4 lenguajes con los que puedes participar en el Topcoder, puedes configurar los que desees, en mi caso haré el ejemplo de configuración con JAVA.




23. En "Compile Command" como se ve en la figura pegas la ruta  /usr/lib/jvm/java-6-openjdk/bin/ que es donde esta el compilador de JAVA, el JAVAC.

Esto es en Linux, en otro Sistema Operativo la ruta generalmente empieza con "C:/Archivos de Programa/...". Ya casi no lo recuerdo llevo más de un año y medio usando sólo Linux :)



Pegas la ruta donde está el compilador de tu lenguaje favorito, si usas otro diferente a JAVA
.
24. Clic en OK.




25. Clic en SAVE para guardar los cambios.




26. Clic en Aceptar.




27. Clic en Close para terminar la configuración del KawigiEdit.





d. Resolver un SRM de ejemplo.


Ahora con todo configurado sólo nos dedicaremos a entrenar y concursar.

28. Ahora sí entremos a la Arena y hagamos algunas carreritas para ponernos a punto para lo SRM's.

Si eres principiante como yo practica con SRM's de la División 2 y empieza con los fáciles (los de 250 puntos).

Para este caso de ejemplo elegiré uno que pongo de ejemplo siempre, el SRM 144 DIV 2.

Clic en "Practice Rooms" + "2 - SRM's" + "1- 16" + "2 - SRM 144 DIV 2".




29. Una vez dentro del ROOM seleccionamos el problema más sencillo el de "200".




30. Se abre el problema conteniendo el enunciado, sus restricciones, sus casos de prueba para que verifiques que tu algoritmo es correcto, y el método a codificar en este caso la Clase se llama "Time" y el método "whatTime" el cual recibe una cantidad entera (seconds) y devuelve una cadena.

La clase, el método y el puntaje (que va disminuyendo a medida que pasa el tiempo)  se ven en el "Coding Area", esto es posible gracias al PLUGIN KawigiEdit que instalamos, sino tendrias que codificar la clase y el método desde cero, ganamos así más tiempo, menor tiempo usado = más puntaje ganado.




31. Este problema si lo lees bien consiste en transformar una cantidad entera (segundos) en su equivalente en horas, minutos y segundos usando el siguiente formato: <H>:<M>:<S>, siguiendo las restricciones del problema una posible forma de codificar el método "whatTime" sería como el que se ve en la imagen, puedes hacerlo más eficiente, este código solo lo uso para el ejemplo.




32. Gracias al KawigiEdit podemos probar los casos de prueba que nos da el problema con el botón "Run Tests", si no se instala el KawigiEdit tendrías que hacerlo con el botón "TEST" de color verde y uno por uno ingresando las entradas manualmente.

En mi caso luego de hacer clic en "Run Tests" el KawigiEdit me informa que mi código es óptimo, por lo menos para los casos de prueba que me da el problema.

Esto último no te garantiza que tu código este bien al 100% ya que el Run System Test del TopCoder te dará muchos casos de prueba con combinaciones muy especiales, al subir tu código tienes que estar seguro que trabaja para todos los casos.



Clic en SAVE para guardar tu algoritmo.

33. Clic en "Aceptar".



34. Clic en "Compile".



35. Clic en "Aceptar".



36. Finalmente clic en "SUBMIT" para enviar nuestro algoritmo y que sea "juzgado".



37. Clic en "" para confirmar nuestro envio.



38. Clic en "Aceptar", en este caso este ejemplo lo uso siempre para enseñar a usar el TopCoder, es por eso qiue el puntaje es de 60 y es muy pero muy bajo, lo ideal para este problema sería 247.



39. Para saber si está bien nuestro algoritmo clic en "Practice Options" + "Run System Test".



40. El "Run System Test" o Juez en Línea me indica que mi algoritmo funcionó para 36 casos de prueba de 36, es decir es correcto, hay que recordar que si tu algoritmo supera el límite de 3 segundos para los casos de prueba el "Run System Test" nos dará error, este error es más conocido como TLE o Time Limit Exceeded, Límite de tiempo Excedido, basta que el algoritmo no funcione para un sólo caso de prueba será invalidado.



Conclusiones:

Hoy día hemos aprendido a:

a. Registrarse en el TopCoder.
b. Ejecutar el applet o "Arena".
c. Instalar el PLUGIN KawigiEdit.
d. Resolver un SRM de ejemplo.

Ahora podrás practicar hasta llegar a tener nivel competitivo en la programación go go go!

Hasta el próximo post.

Marcelo Chamorro Avendaño.
Creative Commons License
TOPCODER : EL MEJOR GIMNASIO PARA ENTRENAR CON LOS MEJORES PROGRAMADORES DEL MUNDO by Juan Marcelo Chamorro Avendaño is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
Permissions beyond the scope of this license may be available at http://marcelodata.blogspot.com.