“Acepta el reto” alcanza los 100.000 envios

El juez automático de problemas de programación “Acepta el reto” ha alcanzado los 100.000 envíos. Desde aquí darles la enhorabuena tanto a los administradores como a todos ellos que han realizado algún envío.

Recordad que podéis acceder a el a través de https://www.aceptaelreto.com/

Post to Twitter

Posted in Concursos de Programación, Programacion, ProgramaMe | Tagged , , , , , , , , | Leave a comment

Hackstory Ebook

“Si no eres uno de ellos, o no viviste en la Internet de los años 90, te recomiendo leer el siguiente glosario. Sí, ya sé que nadie lee los glosarios. Pero no voy a bajar el nivel a media historia para explicar cosas que deberían estar entendidas. Así que, como te diría un hacker: Read The Fucking Manual!”

Bajo esta reseña se esconde un ebook disponible en PDF y EPUB que recoge la historia del hacking en la España en la decada de los 90. Por supuesto aparece nuestro site bajo su anterior nombre “prehackers.com”.

Podeis acceder a el aquí: https://snifer.github.io/HackStory/

 

Post to Twitter

Posted in Programacion, Seguridad, Virus / Troyanos | Tagged , , , , , , , , | Leave a comment

España medalla de bronce en la IOI 2014

Desde aquí nos hacemos eco de la crónica de la IOI 2014 realizada por nuestro compañero Ximo.

La tenéis en la fuente original en http://ximo.planells.es/blog/?p=90

Aqui la crónica:

2014-07-17 13.53.22

Hace unos días terminó la International Olympiad in Informatics
(IOI)
, estudiantes de instituto de 81 países se enfrentaron durante dos días a 6 problemas de algorítmica que la mayoría de informáticos con carrera no sabrían resolver (yo entre ellos). Pasé una semana en Taipei en calidad de entrenador del equipo de Irlanda.

DSC01363

La medalla de bronce conseguida por Irlanda  ha tenido cierta repercusión en los medios pero no he visto ninguna noticia sobre el equipo español así que voy a contar un poco sus resultados.

Los resultados al completo se puede ver en http://live.ioi2014.org/Ranking.html  y aquí todo tipo de estadísticas.

Primer día de competición (enunciados de los problemas aquí)

DSC00917

El primero en enviar una solución al juez fue Oscar a los 22 minutos que obtuvo 8 puntos en el problema wall. A los 10 minutos llegó el primer envío de Cesc pero que no consiguió ningún punto en el
problema rail. A los 45 minutos de competición Enric hizo su primer envío, consiguiendo 30 puntos en el problema rail. Realizó más intentos en ese problema durante la competición pero no consiguió mejorar el resultado.

Gerard no envió ninguna solución hasta pasada hora y media desde el inicio de la competición. Consiguió 8 puntos en el problema wall. A esas alturas Enric ya tenía 62 puntos, Oscar 8 y Cesc 30. Gerard podría justificar su bajo rendimiento en la primera hora: también representó a España en la International Mathematical Olympiad de
Suráfrica
que terminó el día 13 julio, el mismo día que empezaba la olimpiada informática en Taiwan. Menudos viajes en avión se pegó esa semana.

Durante las siguientes horas los competidores siguieron intentando mejorar sus soluciones para arañar algunos puntos más.

Al final de la primera jornada los resultados fueron: Cesc 79 puntos, Enric 77 puntos, Gerard 77 puntos y Oscar 31 puntos. Ningún integrante del equipo español terminó el día en puestos de medalla aunque Enric, Gerard y Cesc estaban bastante cerca.

Seis personas consiguieron la puntuación máxima el primer día: un australiano, 2 estadounidenses y 3 chinos. Unos genios.

En la asamblea posterior a la competición los líderes de las delegaciones discutieron qué hacer en caso de que 6 personas empataran con la máxima puntuación al final de la Olimpiada, al parecer no habían comprado tantas copas.

Segundo y último día de competición (enunciados de los problemas aquí)

Tres de los representantes de España comenzaron con el problema gondola. Enric a los 14 minutos de competición ya tenía 10 puntos en ese problema. Cesc en tan solo una hora consiguió 55 puntos mientras que oscar en hora y media consiguió 20 puntos. Gerard mientras tanto sólo había conseguido 7 puntos en el problema holiday. Así que se cambió de problema y envió una solución para gondola que consiguió 10 puntos.

El que esté interesado puede ver los envíos de todo el mundo en el ranking pinchando en el participante deseado.

Después de gondola, el siguiente problema era friend. Enric consiguió 46 puntos, Gerard y Oscar 27 y finalmente Cesc 8.

Holiday era el problema más difícil de la competición. La prueba es que ni Cesc (5 envíos) ni Oscar (11 envíos) consiguieron puntuar en ese problema. Enric sólo consiguió 30 puntos. Oscar envió su última solución para holiday a falta de 5 segundos para el final de la competición pero no consiguió pasar de los 30 puntos.

Enric consiguió 151 puntos en el segundo lo que le aupó al puesto 147 de la clasificación y consiguió medalla de bronce. ¡Enhorabuena! A continuación una foto de Enric durante la entrega de medallas. Se equivocaron y le dieron el diploma de otra persona.

DSC01531

Sólo los 153 primeros conseguía medalla así que Gerard (puesto 185), Cesc (189) y Oscar (244) se volvieron a casa sin premio. Quizá en próximas ediciones puedan conseguirlo.

Otros equipos:

Como ya he escrito más arriba Richard de Irlanda consiguió una medalla de bronce. La primera medalla para Irlanda desde 2009.

Los ganadores fueron Ishraq de Australia, Scott Wu de Estados Unidos Yinzhan Xu (China). Los tres consiguieron la máxima puntuación resolviendo correctamente los 6 problemas. Scott Wu consiguió resolver los 3 problemas del primer día en 2 horas y los del segundo día en unas 3 horas.

DSC01602

México consiguió su primera medalla de oro quedando en el puesto 14 global.

Los 4 estudiantes chinos terminaron la competición entre los 10 primeros puestos. Si no me he equivocado contando, sólo Estados Unidos y China han conseguido medalla de oro para todos sus participantes en 2014.

La siguiente IOI será en Almaty, capital de Kazajistán hasta la creación de Astaná.

Post to Twitter

Posted in Concursos de Programación, OIE, Programacion | Tagged , , , , , , , | Leave a comment

Resultados ACM ICPC World Finals 2014

El pasado 25 de junio se celebró la “ACM ICPC World Finals 2014, competición que reune a los mejores equipos de programación a nivel universitario del globo terraqueo.

Tras una dura competición el ganador fue “St. Petersburg State University” con 7 problemas resueltos, seguidos de “Moscow State University” con 7 problemas resueltos también pero con mayor penalización.

Este año habia un representante español, la “Universitat Politècnica de Catalunya” (ganadores de la SWERC 2013) y quedó en posiciones debajo de la 45, recibiendo mención de honor y resolviendo 1 problema.

Para ver la clasificación completa, la tenéis en el siguiente link:

http://icpc.baylor.edu/worldfinals/results

Post to Twitter

Posted in Concursos de Programación, Programacion | Tagged , , , , , , , , | Leave a comment

Final de ProgramaMe 2014

Ha finalizado ProgramaMe 2014 y nos disponemos a publicar los resultados de la final nacional.

La clasificación es la siguiente:

  • Primer clasificado y ganadores de ProgramaMe 2014 Code Rangers del IES Gaspar Melchor de Jovellanos de Fuenlabrada. ¡Bien hecho muchachos!
  • Segundo clasificado Los Hooligans de Joatzel del IES Laguna de Joatzel de Garaje (Madrid)
  • Tercer clasificado Objects Boys del IES Comercio de Logroño.


Muchas gracias a la facultad de Informática de la Universidad Complutense de Madrid por organizar el evento. Y a todos los profesores y participantes por asistir. Sin vosotros no sería posible.

Si queréis ver el marcador completo podéis consultarlo en: http://programa-me.com/2014/nac/marcador/

Espero os animeis todos a participar en futuras ediciones de ProgramaMe.

Post to Twitter

Posted in Concursos de Programación, Programacion, ProgramaMe | Tagged , , , , , , , | Leave a comment

Problemas de la final de ProgramaMe 2014 estarán disponibles en Acepta el reto

La organización de ProgramaMe 2014 no informa que el día de la final de nacional (día 6 de junio) aproximadamente a las 11:00  se publicaran los problemas con los que estaran compitiendo los finalistas en el portal Acepta el reto  https://www.aceptaelreto.com/
Desde aquí os animamos a todos a intentarlos. ¿Cuantos problemas de la final os veis capaces de resolver? ;)

Post to Twitter

Posted in Concursos de Programación, Programacion, ProgramaMe | Tagged , , , , , , , | Leave a comment

Publicados los premios para la final de ProgramaMe 2014

La final de ProgramaMe 2014 se acerca (será el próximo viernes 6 de junio).

Además del prestigio y a valorar como parte del curriculum que tiene obtener una buena posición en un campeonato de estas características, los patrocinadores del evento han puesto a la disposición de los concursantes los siguientes premios:

Primer premio

Para cada uno de los tres miembros del equipo que quede en primer lugar, un Apple iPad mini 16 GB WiFi, premio patrocinado por Coritel.

Segundo premio

Para cada uno de los tres miembros del equipo que quede en segundo lugar, un Kindle Paperwhite, premio patrocinado por Coritel.

Tercer premio

Para cada uno de los tres miembros del equipo que quede en segundo lugar, una memoria USB de 64 GiB Western Digital, premio patrocinado por la Universidad Complutense de Madrid.

Premio sorpresa

Para cada uno de los tres miembros del equipo que primero resuelva un problema, habrá un premio sorpresa. Este premio lo patrocina El Corte Inglés.

La publicación oficial se encuentra en http://www.programa-me.com/2014/nac/premios.php

Post to Twitter

Posted in Concursos de Programación, ProgramaMe | Tagged , , , , , , , | Leave a comment

Lista de participantes y fechas para la final del ProgramaMe 2014

La final del ProgramaMe 2014 será el viernes 6 de junio.

Se ha publicado la lista de equipos clasificados para la final y el programa de la final del día 6.

Desde aquí aprovechamos para desear mucha suerte a todos los participantes.

Recordad que podéis practicar desde Acepta el reto (Juez automático de problemas en C/C++ o Java en Español)

Post to Twitter

Posted in Concursos de Programación, ProgramaMe | Tagged , , , , , , , , , | Leave a comment

Ximo nos cuenta su experiencia en el Tuenti Challenge #4

Ximo, un colaborador de la web, nos cuenta su experiencia en el Tuenti Challenge # 4. Podeis ver el post en http://ximo.planells.es/blog/?p=12 . También publica sus soluciones, que se pueden encontrar aquí.

Aqui una transcripción de su experiencia

—————————————————————————————————————–

Hace un rato que ha terminado el Tuenti Challenge # 4. Pego aquí las notas que he ido tomando durante la semana que ha durado. No he cambiado nada salvo añadir algún enlace.

Ha subido a Bitbucket mis soluciones. Puedes verlas aquí.

Aviso: este artículo es más largo que una historieta de Wardog y además bastante menos divertido.

Lunes 28 de abril – 11:37 – Dublín

Queda 1 hora para que comience la competición Tuenti Challenge #4  y se me ha ocurrido escribir lo que voy haciendo para llenar un poco el blog. Durante el fin de semana he estado viendo los diarios de desarrollo de la gente que estaba participando en Ludum Dare #48  así que la idea no ha salido de la nada.

Mi objetivo es quedar entre los 50 primeros para que me envíen una camiseta. Tengo las camisetas de Tuenti Challenge #2 y #3 y toca ampliar el fondo de armario.

Lunes 28 de abril – 12:46

Ha empezado la competición y no me dejaba entrar con mi contraseña del año pasado. Se ve que no me había registrado este año. Me he bajado los scripts para enviar las soluciones y los he modificado para que se guarde el caso de prueba que descarga.

El primer problema parece sencillo. Lo intentaré en node.js después de comer.

Lunes 28 de abril – 13:46

Al final he estado comiendo empanadillas mientras resolvía el problema. Aunque he utilizado bastante javascript para web, nunca había programado nada con node.js. El hecho de que casi todo se ejecuta asíncronamente me ha dado algunos quebraderos de cabeza así que al final he optado por usar Javascript puro y duro.

Voy a trabajar un rato y luego intentaré hacer el segundo problema.

Lunes 28 de abril – 15:43

Acabo de leer el problema 2. Parece fácil. Recorreré primero el camino una vez para saber cuáles son las posiciones X e Y máximas y así saber el tamaño del circuito. Luego crearé una matriz de ese tamaño y dibujaré el circuito. Voy a hacerme un té mientras pienso en qué lenguaje lo hago.

Lunes 28 de abril – 15:54

He decidido hacerlo en Go. Nunca he usado este lenguaje aunque he visto algunos ejemplos simples. Para el desarrollo voy a usar lo que yo llamo SODD (“Stack Overflow Driven Development”).

Lunes 28 de abril – 18:00

Me ha costado más de lo que pensaba. La sintaxis es muy diferente a la de los lenguajes a los que estoy acostumbrado. Además, he tenido que usar Kate para escribir el código porque Vim ni siquiera me coloreaba la sintaxis.

La primera vez que he enviado mi solución ha fallado por la forma que tiene Go de tratar la aritmética modular con enteros negativos: yo asumía que (-1)%4 sería 3 igual que en Python pero resulta que Go devuelve -1.

Una vez resuelto este problema me ha aceptado la solución. Espero que funcione también para el test grande.

Lunes 28 de abril – 18:30

El problema 3 parece muy sencillo. La función misteriosa parece ser la hipotenusa de un triángulo rectángulo de lados X e Y. He escrito un programa super chorra en Python 3 pero no consigo que me lo acepte.

El script de envío dice que es correcto pero la web dice que no. Es más, si pongo un programa que no hace nada o escribe siempre “ojete” el script de envío me dice siempre “* Test PASSED! :)”.

Lunes 28 de abril – 18:56

He probado a introducir todos los valores del caso de prueba pequeño en la web que han creado para éste problema  y he descubierto que en caso de que el resultado sea un número entero no ponen decimales. He modificado cutremente mi solución para ver si era eso y me lo ha aceptado. Así que al parecer ese era el problema.

Lunes 28 de abril – 19:01

Problema 4: Parece un problema sencillo de grafos pero quedan muchas cosas en el aire:

  • ¿Cuál es el tamaño máximo de las secuencias?
  • ¿Cuántas secuencias puede haber?
  • ¿Qué pasa en caso de que haya varios caminos mínimos?
  • ¿Se garantiza que siempre hay solución?

He enviado una solución que escribe “hola” para poder tener el caso de prueba pequeño y ver si me saca de dudas.

Lunes 28 de abril – 19:47 

He escrito un BFS en C++ 11. No estaba seguro de cómo de grande sería la entrada así que intentando hacerlo con el lenguaje más rápido. Mi algoritmo es cuadrático con el número de estados válidos porque necesito crear el grafo a partir de ellos.

He conseguido pasar el caso de prueba pequeño y el caso grande me ha tardado menos de una décima de segundo. No era tan grande como me pensaba.

El problema 4 parece que consiste simplemente en simular el Game of Life de Conway y mirar si hay algún ciclo. La página de la Wikipedia del “juego” no dice nada sobre detección de ciclos así que supongo que habrá que hacerlo a saco.

Lunes 28 de abril – 22:18

Después de cenar he implementado el juego de la vida. La “dificultad” del problema era que no dicen en ningún lugar que haya que implementar el Game of Life pero si que dan algunas pistas como el nombre del autor. Lo he programado en PHP que hacía un par de años que no usaba. No creo que pueda seguir mucho tiempo usando un lenguaje distinto para cada problema…

Al final me he dado cuenta de que el script de envío tenía un fallo por culpa de las modificaciones que yo he hecho. Me decía siempre que estaba bien aunque fuera mentira. Ahora ya está arreglado.

Lunes 28 de abril – 23:42

He conseguido resolver el problema 6. Te daban el código en node.js de un cliente y un servidor que se comunicaban de manera cifrada, aunque compartían las claves al principio en claro. El problema se resolvía como su nombre indicaba haciendo un “man in the middle”. He juntado el código del cliente y del servidor en un sólo fichero y he renombrado alguna variables que se llamaban igual en ambos ficheros. Tras un rato de prueba y error he conseguido que funcionara. El resultado han sido unos cuantos proverbios en inglés que no me he parado a analizar.

El problema 7 tras una lectura rápida parece que es simplemente implementar una estructura union-find. No parece muy difícil.

Martes 29 de abril – 00:57

Acabo de volver de dar una vuelta y he enviado el problema 7 que había estado escribiendo antes de salir.

La primera versión que he hecho utilizaba simplemente una estructura union-find para llevar un registro de los contactos. El problema es que el valor de los IDs es 10^9. Al crear una estructura para esa cantidad de IDs me he quedado sin memoria en el portátil. Como el número de IDs diferentes es como mucho de unos 2 millones, he creado un índice para ir asignando IDs conforme iba leyendo números y así he podido rebajar la memoria necesaria.

Ahora voy a leer el problema 8, me ducho y a dormir.

Martes 29 de abril – 01:25

El problema 8 es similar al 4. Puedo crear el grafo a priori (hay unas 9! combinaciones distintas solamente, menos de medio millón) y luego responder a cada caso de prueba a partir de ese grafo.

En el 4 he hecho el grafo con un doble bucle for (cuadrático). Esta vez tendré que hacerlo algo mejor porque 9! al cuadrado es un número bastante grande.

El enunciado habla de que los nombres de personas serán caracteres UTF-8. Me da un poco de miedo. Creo que lo resolveré con Python 3.

A dormir. Mañana más.

Martes 29 de abril – 13:26

Vuelvo de comer. He hecho algunas pruebas antes de comer generando el grafo de todas los posibles movimientos y me da salido un grafo conexo. Esto querría decir que de cualquier posición se puede ir a cualquier otra. Es un poco raro porque en el enunciado pone que si no hay forma de llegar a la posición indicada hay que devolver -1.

Martes 29 de abril – 14:01

Acabo de enviar el problema 8. El caso grande ha tardado 9 segundos en mi portátil. En C++ hubiera sido menos de 1 segundo pero no me fiaba del UTF-8 así que lo he enviado en Python 3.

El problema 9 es algo complicado de entender. Parece que es una red de flujo con la capacidad de cada arista escondidas detrás de una fórmula rara. Tendré que leerlo más detenidamente…

Martes 29 de abril – 14:50

He visto en Twitter la url de la clasificación. Parece que voy quinto (sin tener en cuenta que puedo tener mal alguno de los envíos o todos).

Martes 29 de abril – 15:20

Al final la fórmula para sacar la capacidad de cada aristas era más simple de lo que parecía. He usado mi implementación del algoritmo Ford-Fulkerson en C++ y ha entrado sin problemas el caso pequeño. El caso oculto no era muy grande tampoco.

En el problema 10 hay que interactuar otra vez con un servidor al parecer… no me gustan este tipo de problemas. Me he descargado el caso de prueba pequeño y tiene pinta de ser un número en hexadecimal: a93018a023.

Miércoles 30 de abril – 11:26

Ayer no hice mucho del problema 10. Estuve probando algunas cosas para ver qué era la cadena a93018a023: base64, ascii, utf-8, … no conseguí sacar nada en claro y me dediqué a hacer cosas de provecho.

Ahora he visto en la clasificación que ya hay varios que han resuelto este problema. De momento voy el 9 así que cumplo sobradamente el objetivo de estar entre los 50 primeros.

Miércoles 30 de abril – 12:50

He hecho algunas pequeñas pruebas que no me llevan a ningún sitio. El número hexadecimal 0xa93018a023 es 726656393251 que se puede descomponer como 76033943 * 503 * 19.

A lo mejor es el hash de un password pero es un poco raro que tenga 10 caracteres sólo. He escrito un programa en Python3 que va probando todas las cadenas de letras mayúsculas y minúsculas y mira a ver si la secuencia a93018a023 está al principio del MD5 o al final. ¿A lo mejor es SHA1? No lo sé. Ahí lo tengo ejecutándose mientras hago otras cosas.

Miércoles 30 de abril – 15:08

Acabo de ver que mi programa había encontrado una cadena cuyo md5 contiene “a93018a023”. La cadena es “adeekqqqI”. La he puesto en la web y pero no ha servido de nada.

Jueves 1 de mayo – 11:31

En Irlanda no es fiesta hoy. No he estado muy al tanto de la competición. Dejé ejecutando un programa y ha encontrado varios md5 y sha que tienen a93018a023 como subcadena pero los pongo como input y me dice “wrong!”. No creo que sea eso.

Jueves 1 de mayo – 12:47

Leyendo en Twitter he visto que alguien comentaba algo de que había que probar en otro puerto. Efectivamente, haciendo un escaneo de puertos he encontrado otro servidor web. Me ha salido una calavera pirata. He avanzado un poco pero sigo bloqueado.

Jueves 1 de mayo – 15:37

He encontrado otro servidor web en otro puerto. Tiene un fichero .py y un .pyc. He descompilado el .pyc y parece que tengo el código del servidor, pero no ahora estoy bloqueado aquí.

Jueves 1 de mayo – 23:16

Acabo de descubrir que los dos puertos que he encontrado son de otros problema. Varias horas perdidas esta tarde intentando conectar 3 problemas distintos… Los servidores de cada problema deberían estar en IPs distintas para no dar lugar a confusión.

Viernes 2 de mayo – 15:39

Tras la desesperación y algunas pistas via Twitter, he descubierto que había que buscar el fichero index.php~ para obtener el código fuente del servidor. La clave era aleatoria pero utilizaba como semilla la hora actual y un número de proceso. He hecho un script en PHP para hacer miles de peticiones con distintas contraseñas hasta que he conseguido dar con el proceso: 1336 (casi 1337).

Viernes 2 de mayo – 21:27

El problema 11 era de descifrar unas claves AES. Después de dejar el portátil unas horas esta tarde descifrando mensajes he pasado el caso de prueba de test. Acabo de enviar el final y ha tardado menos de 5 segundos. No era muy normal que tardara tan poco. Cuando he ido a mirar había dado una excepción mi solución nada más empezar… Uno que tengo mal seguro.

Ha sido una cagada considerable por mi parte: antes de hacer el envío he estado poniendo algunos comentarios y borrando código inútil. Luego he probado con el test pequeño que funcionaba. El problema es que había cambiado sin querer una línea de la función que consigue las claves por fuerza bruta. Además me guardaba en un fichero las claves que iba descubriendo así que la segunda vez que he ejecutado ese test no ha pasado por el código de descifrar ni una vez. Luego al ejecutar el caso grande ha fallado a la primera.

Viernes 2 de mayo – 21:49

Después de la cagada en el envío del problema 11 he leído el 12. ¡Por fin un problema de algorítmica! Es un problema típico de búsqueda de camino mínimo en una rejilla pero con direcciones. Cada casilla de la rejilla son en realidad 4 nodos y en cuál estás y a cuáles puedes ir depende del nodo del que provienes. No debería costarme mucho de hacer.

Viernes 2 de mayo – 22:30

Ya he escrito y enviado el problema 12 en C++11. He estado mirando como se usa la nueva estructura tuple. En el C++ clásico sólo teníamos pair.

Mañana miraré el problema 13.

Sábado 3 de mayo – 6:02 – Dublin Airport

Estoy esperando a subir al avión. Voy a ver qué saco en claro del problema 13. Es la página de la calavera que ya había intentando descifrar hace dos días por error. Por desgracia, requiere interactuar con un servidor así que no podré hacer nada mientras estoy en el avión.

Sábado 3 de mayo – 11:45 – Estación de Sants, Barcelona

He estado enviando la misma clave varias veces. Parece que el tiempo no depende de la clave porque cada vez salen tiempos distintos.

Sábado 3 de mayo – 15:42 Valencia

Ya estoy en casa. La conexión a internet del móvil no era muy buena en el tren así que no he podido hacer muchas pruebas. Además el cargador de mi portátil tiene el enchufe tipo inglés. Tengo que ir a comprar un adaptador si no, me quedan un par de horas de Tuenti Challenge…

No consigo encontrar qué relación tiene el tiempo de ejecución de página con los valores que doy. Con los mismos valores dan tiempos diferentes.

Sábado 3 de mayo – 17:46

Ya tengo el adaptador. Es un adaptador universal de enchufes tiene tantos botones y artilugios que salen que me recuerda a los puzzles de The Room.

Sigo sin descubrir que papel juegan el dibujo de la calavera, el logo de los cazafantasmas y el “Tonight, tonight”. Además el enunciado habla de un “side channel”…

Ahora voy a hacer el Google Code Jam a ver si hay suerte y me clasifico para la siguiente ronda.

Sábado 3 de mayo – 20:41

Ya ha terminado la Ronda 1A del Google Code Jam. Me he clasificado por los pelos pero me he clasificado que es lo que importa. A ver qué tal se me dá la ronda 2 del Code Jam.

Sigo haciendo mediciones de tiempo. Enviando contraseñas de distintas longitudes para ver cómo varían los tiempos. Tengo la esperanza de que una de las primera líneas del programa sea algo tipo if len(key) == size.

Domingo 4 de mayo – 00:41

He leído una pista en Twitter “timing attack”. Leyendo un poco sobre esto he visto que no iba tan desencaminado. He decidido probar a enviar cada vez un caracter y he visto diferencias notables en el tiempo. Con una serie de bucles he podido identificar los 10 caracteres de la contrasenya: 6dcc0f835f

La verdad es que estoy aprendiendo bastante de estas cosas en la competición Tuenti. No sé si me servirá de algo en la vida pero los conocimientos ahí están. Eso sí, sin pistas de Twitter seguramente nunca hubiera resuelto los problemas 10 y 13.

Domingo 4 de mayo – 20:13

Voy a intentar hacer el 14 antes de retirarme de la competición. El 14 es de algorítmica. Trenes que van moviendo cosas de una estación a otra. El enunciado es bastante largo y habla de gasolina pero no explica en ningún momento cómo se gasta: ¿será distancia euclídea? ¿El coste de cada arista es 1? El ejemplo chorra que dan no aclara nada.

El enunciado dice: “all the numeric parameters are integers, but due to the distance between stations the fuel for each train can decrease in fractional values”. Matemáticamente para mí un valor fraccional es aquel que se puede conseguir dividiendo dos números enteros a/b por tanto la distancia euclídea no podría ser porque tiene una raíz cuadrada que suele producir número irracionales… algo no encaja aquí.

Domingo 4 de mayo – 23:10

Está ejecutándose el caso de prueba grande del problema 14. Con mi implementación en Python 3 el pequeño ha tardado 2 minutos. Ahora parece que está tardando un poco más…

Lunes 5 de mayo – 11:39

Quedan unas dos horas de competición pero tengo mucha faena. El 14 me ocupa mucha memoria RAM empieza a usar la memoria swap y va muy lento.

Pruebo todos los estados posibles que hay menos de mil millones. El problema es que usé una cola en vez de hacer DFS y entonces ocupa muchísima memoria. Si vas a probar todas las combinaciones siempre hay que usar DFS.

En fin, que me retiro ya. Estoy en el puesto 28 a falta de saber los problemas que tengo bien y mal. Cosa que nunca sabré porque los de Tuenti son unos rancios y no lo dicen.

Espero haber ganado algo.

Post to Twitter

Posted in Concursos de Programación, Noticias, Programacion | Tagged , , , | 1 Comment

Comienza el Tuenti Challenge

Se está celebrando el Tuenti Challenge, accesible desde https://contest.tuenti.net/

Tuenti Challenge una competición para demostrar nuestras habilidades técnicas en unos cuantos ámbitos, tanto el de la seguridad como el de las competiciones de programación.

El contest durá hasta el 5 de mayo, estais aun a tiempo de participar.

¡¡Mucha suerte a todos los participantes!!

Post to Twitter

Posted in Concursos de Programación, Sin categoría | Tagged , , , , , | Leave a comment