martes, 1 de junio de 2010

Videos de GCJ10 Round 1C y TCO10 Qual 3

Esta semana he estado probando un programa para grabar la pantalla mientras programo las soluciones para problemas en competencias de programación. Aquí hay algunos de los resultados que he obtenido después de probar este software de grabación.

Esta semana he estado probando un programa para grabar la pantalla mientras programo las soluciones para problemas en competencias de programación. Primero, grabé las soluciones para la Ronda 1C del Google Code Jam (hice la competencia como práctica, ya que avancé en la Ronda 1A), e hice un video para el problema A - Rope Intranet.


Video para el problema A de la Ronda 1C del Google Code Jam 2010, Rope Intranet.

Este problema es fácil de resolver, iterar sobre cada par de cuerdas chequeando si éstas se intersectan es suficiente para tener el problema aceptado. Como pueden ver en el video, mi único error fue leyendo los datos de entrada; esto pasó porque lei el enunciado del problema por encima. Todavía tengo la grabación de los otros dos problemas, pero aun no los he post-procesado.


Después, grabé mis soluciones para los problemas de la 3ra ronda de clasificación del TopCoder Open 2010. De nuevo, las hice como práctica, ya que avancé a la Ronda 1 utilizando un comodín (Bye). El primer video que creé fue para el problema fácil, SumRectangle. Para este video, mejoré el manejo del zoom y la calidad, corté las partes donde leo el enunciado (añadiendo un indicador amarillo con el tiempo transcurrido), y añadí una firma en la esquina inferior-derecha.


Video para el problema fácil de la 3ra ronda clasificatoria del TopCoder Open 2010, SumRectangle.

Este problema es sencillo, sólo hace falta calcular los valores faltantes dentro de la matriz utilizando aquellos que ya se encuentran calculados. Sin embargo, hay que tener cuidado con el enunciado, ya que éste dice que la respuesta final podría no ser única. No obstante, después de un análisis sencillo se puede deducir que la respuesta siempre existe y es única, dados leftColumn y topRow.


También creé un video para problema medio, llamado WhatsThisChord. Este problema puede ser resuelto por una simulación directa, después de observar que las notas se pueden convertir a enteros entre 0 y 12, inclusive, implementando la adición en módulo 13.


Video para el problema medio de la 3ra ronda clasificatoria del TopCoder Open 2010, WhatsThisChord.

Aquí hay algunas características del ambiente que utilizo para programar para las competencias de programación:


  • Utilizo Windows 7 Profesional de 64 bits como sistema operativo y Visual Studio 2010 como entorno de desarrollo. También tengo Linux, pero utilizo Visual Studio para trabajar y mi AddIn sólo funciona ahi.

  • Tengo una HP DV7-3188CL, con una pantalla de 17'' 16:9, un procesador Intel Core i5 de 2.5Ghz, 6GB de memoria RAM DDR3 y una tarjeta de video NVIDIA GeForce G105M. Además, tengo un ratón externo Logitech G5, un teclado en inglés HP externo y un monitor de alta definición de 26''.

  • Utilizando el monitor de alta definición y la pantalla de la computadora portátil, tengo un área de trabajo de 1920x1200 + 1600x900 píxeles, los cuales divido verticalmente en cuatro ventanas (dos por cada pantalla). De esta forma, puedo ver el enunciado del problema, el código fuente y la tabla de puntuación actual al mismo tiempo.

  • Utilizo CodeProcessor 2, FileEdit y moj al resolver problemas en TopCoder. De esta forma, un archivo fuente con una plantilla básica (nada especial, sólo #includes y el esqueleto de la clase) y funciones de prueba son generadas automáticamente en cuanto abro el problema. De esta forma, puedo programar en mi IDE favorito y puedo probar todos los casos de prueba en una sola corrida.

  • Utilizo un AddIn personal para Visual Studio, el cual expande macros de código parametrizables mientras programo. Implementé este AddIn utilizando C++/CLI para interactuar con el IDE y Boost.Spirit para interpretar las definiciones de macros. De esta forma, puedo escribir de forma rápida y confortable como si utilizara #defines, pero sin el código ilegible que éstas dejan.

Workspace and Wii
Área de trabajo con computadora portátil, teclado, ratón y monitor externo y Wii.

Espero que le hayan gustado los videos, voy a tratar de hacerlos y subirlos tanto como pueda. Probablemente, en otra publicación, hable más sobre mi ambiente de programación y el AddIn (el cual se llama TopCoderAddIn).


8 comentarios:

  1. Es posible que compartas tu AddIn TopCoderAddIn, para no utilizar los #defines.
    Gracias

    ResponderBorrar
  2. @Luis: Actualmente el AddIn es usable, pero es difícil de configurar, y no tiene ninguna documentación para la creación de las macros. La versión actual utiliza unos archivos en lenguaje propio que se especifican en el registro de Windows.

    Cuando tenga tiempo corregiré un par de errores que tiene y le haré una documentación decente, pero mientras tanto no lo puedo hacer público. Creo que para Septiembre tendré tiempo de terminarlo, en cuanto sea público lo publico por aca.

    ResponderBorrar
  3. @Jorge Bernadas que buena noticia lo esperare.
    Que programa utilizas para el screencast?.

    ResponderBorrar
  4. @Luis: Camtasia Studio 7, es bastante completo y genera videos de buena calidad en varios formatos.

    ResponderBorrar
  5. yo uso el netbeans que también tiene esa funcionalidad de tu AddIn con el uso de templates y shorcuts, no se que opinas tu de esa alternativa derepente te venga a bien, aunque viendolo bien el tuyo esta más completo te permite especificar la variable antes de desplegarlo en forma normal, pero creo que también puedes hacer macros en netbeans yo recién estuve investigando y encontré tu blog, lo voy ver me gustaría que tmb lo tomes en cuenta derepente te gusta más el netbeans especificamente el 9.0.1 para c/c++.

    ResponderBorrar
  6. @Dennisbot: No se, la única vez que probé Netbeans no me gustó, además que el depurador de Visual Studio es demasiado útil.

    ResponderBorrar
  7. acabo de darme cuenta de ello, en el visual studio es mucho mejor, pero me gustaría saber que tan complejo te resultó el desarrollo de tu addIn me gustaría usarlo, ¿esta disponible para descargarlo en alguna comunidad? , gracias.

    ResponderBorrar
  8. No fue tan difícil de desarrollar, más que todo tuve que sentarme a ver el API del Visual Studio y de Boost Spirit para hacer el parser. Ahorita no está disponible en ningún sitio, todavía no está listo para ser liberado.

    ResponderBorrar

Creative Commons License
All the contents in this blog (except blog comments) are licensed under a Creative Commons License.

This template made by and copyright Christine's Blog Templates, edited by Jorge Bernadas.