domingo, marzo 27, 2011

Un juego II

Primero lo primero, si alguien quiere mandar el CV a adku (www.adku.com/jobs) la dirección es:

8512@adku.com

Si te preguntan de un tablero de 6x6: 1262816 :D

Segundo el código; backtracking de toda la vida con una representación del estado lo más sencilla posible.

En C tiene los puntos claves son:

Definición de tablero:

typedef struct _State
{
int table[TABLE_SIZE][TABLE_SIZE];
int pos_x;
int pos_y;
} State;


Inicialización tablero:

void State_Init(State* s)
{
int i, j;
for(i = 0; i < TABLE_SIZE; i++)
for(j = 0; j < TABLE_SIZE; j++)
s->table[i][j] = EMPTY_SQUARE;

s->table[START_POS_Y][START_POS_X] = OCCUPIED_SQUARE;
s->pos_x = START_POS_X;
s->pos_y = START_POS_Y;
}


Recorrido del tablero:

int CalculatePaths(State* s)
{
int i, total = 0;

if(State_IsSolution(s))
{
return 1;
}

for(i = UP; i < NUMBER_OF_DIRECTIONS; i++)
{
if(State_CanMove(s, i))
{
State_Move(s, i);
total += CalculatePaths(s);
State_Unmove(s, i);
}
}

return total;
}


El resto del código no lo pongo para no enrollarme.

Oye Iván, sabia que eras un poco bobo pero esta vez te pasas:

¿Porqué me cuentas esto?

El post sólo pretende remarcar una idea que vengo teniendo en cabeza desde hace unos meses, resulta que el futuro de la informática es nuestro pasado.

Con 19 años hubiera tardado 20min. como mucho en resolver el problema, ahora con unos cuantos más y algún que otro año trabajando en el mundo de la consultoría en fin..es otra cosa.

Esos temarios de los que tanto nos quejamos, esas asignaturas que no "servían para nada" resulta que si hoy viviesemos en un país de primer orden tecnológico, y no en España, nos darían trabajos como ingenieros de software de primer nivel, no como consultores de servicio.

Lo dicho, con 19 años y por culpa de Oliverio 20 minutos como mucho.

PD: La solucion en C dada por Pablo Bravo, http://www.lowlevelsolutions.com/

PD(2): La solución en java merece un análisis y conclusiones aparte, otro día.

sábado, marzo 19, 2011

Un juego

Hace alguna semana vi un juego/oferta que me hizo gracia.



http://www.adku.com/jobs

Al leer el enunciado tuve la sensación de que el tema se podia resolver por teoria de grafo pero como no tenia a mano los apuntes de caminos, ciclos, etc. decidí coger una libreta y empezar a divagar sobre el asunto.

Ahora tengo 5 hojas de una libreta pequeña llena de basura pseudomatemática y un par de cachos de código (Java y C) de los que tuve que tirar para sacar la solución.

En el próximo episodio contaré las soluciones; sirva comentar que lo necesario para resolverlo ya lo sabia con 19 años, otra cosa es que ahora con 31 vaya para atrás como los cangrejos, :D

PD: Para que conste la solución en C es de Pablo Bravo, a cada uno lo suyo.