Proyecto Euler: reto a tus conocimientos de programación

Posted on April 13th, 2008 in Devel, Retos by admin (315 lecturas)

El Proyecto Euler publica una serie de problemas de programación en los que es necesario tener algo más que conocimientos matemáticos básicos para resolverlos. Aunque las matemáticas ayudarán a encontrar soluciones elegantes y eficientes, el uso de un ordenador y buenos conocimientos de programación serán más que necesarios para resolver la mayoría de los problemas.

La motivación por la que comenzó el Proyecto Euler es la de ofrecer una plataforma para la mente inquieta que quiera adentrarse en nuevas áreas y aprender nuevos conceptos de una forma divertida e interesante.

¿Quieres saber en qué nivel están tus conocimientos de programación? Prepara tu cafetera, coge papel y lápiz, y entra en el Proyecto Euler…

Hackit! Nivel 4: ingeniería inversa

Posted on February 29th, 2008 in HackIt, Retos, Seguridad by admin (475 lecturas)

Al igual que en el nivel 3, un pequeño formulario con login y password ocupa la pantalla. A diferencia del nivel 3, donde tuvimos que romper un applet Java, en esta ocasión se nos plantea romper un componente Flash. Es decir, podemos asumir que la lógica que valida un login y un password está en el propio componente Flash, y que por tanto, se intenta garantizar la seguridad por ocultación… lo cual no suele funcionar (como acabamos de comprobar). Bien, hay que averiguar cuál es el algoritmo de validación que oculta el fichero binario .swf (Flash). El procedimiento: igual que en 3, obtener un buen descompilador de Flash, estudiar el código que genere y averiguar el camino a seguir, es decir, un poquito de ingeniería inversa sobre .swf. Esta prueba no fue tan fácil como la anterior; a pesar de ello, la clave cayó bastante rápido gracias a que uno de los miembros del equipo se llevó la artillería preparada en una máquina Windows… Desvelaré el secreto más adelante, dejo el fin de semana para que os divirtáis y cojáis fuerza para el nivel 5, que se nos atragantó a unos cuantos grupos… pero eso… es otra historia que contaré la semana que viene ;-)

Reto de programación: apretones de manos

Posted on August 27th, 2007 in Devel, EDA, Retos by admin (958 lecturas)

Hace poco he participado en una prueba más de TopCoder.com, un excelente sitio para mantener engrasados los conocimientos de estructuras de datos, algoritmos, análisis y diseño de sistemas y programación general. Una de las pruebas me dejó varado y no pude completar a tiempo el ejercicio. Posteriormente he leído bastante al respecto y profundizado en la serie de los números de Catalan, en la que se basa la solución al problema. Sin más, os dejo con el enunciado, a ver si conseguís solucionarlo ;-)

Consideremos una reunión de n personas alrededor de una mesa circular. Antes de comenzar la reunión, se dan la mano unos a otros. Cada persona estrecha la mano de otra persona en un momento dado (y sólo de una). Los apretones de manos se dan todos a la vez (es decir, en un momento dado, cada persona está estrechando la mano de otra) Decimos que un apretón de manos es perfecto si no hay brazos que se crucen entre sí en el momento del apretón. Dado un entero n, devolver el número de apretones de manos perfectos posibles que existen para n personas sentadas a la mesa.

Ejemplo:

si n = 4 personas, los posibles apretones de mano son:

HandsShaking_4_correct/tmp/HandsShaking_4_correct_2.GIF/tmp/HandsShaking_4_wrong.GIF

Las primeras dos figuras muestran apretones de manos perfectos. La 3ª no es un apretón de manos perfecto. La solución para n=4 por tanto es 2. Para n=8 sería 14.