18 octubre 2009

Libros de programación

Hoy seré breve.

Odio los libros de programación que ponen los ejemplos en pseudocódigo y encima asumiendo que los arrays empiezan en 1.

14 octubre 2009

Me cago en la Universidad de los Andes

Desde agosto vengo recibiendo emails todas las semanas de una tal Sandra Parra que trabaja en:

Coordinación de Prácticas Académicas
Centro de Trayectoria Profesional
Universidad de los Andes
3394949 Ext. 2796
ctp@uniandes.edu.co


Supuestamente estoy apuntado a un curso tallar en Bogotá sobre “Herramientas útiles para identificar y desarrollar competencias”. No sé cómo han conseguido mi email, pero cada semana me invitan a ir a seminarios y "reuniones de jefes".

Este es el último email, aunque básicamente son todos muy parecidos.


Estimado Estudiante:

Esperamos que hasta el momento haya tenido una experiencia satisfactoria en su respectivo lugar de práctica. El segundo taller de seguimiento se denomina “Herramientas útiles para identificar y desarrollar competencias”. Continuaremos con el objetivo general del ciclo de talleres: Brindar a los estudiantes herramientas útiles para orientar y aprovechar autónomamente su experiencia de práctica.

El segundo encuentro se realizará el próximo VIERNES 16 DE OCTUBRE en el horario de 7:00 A.M. a 10:00 A.M. Por favor tenga en cuenta que:

1. A esta reunión ASISTEN SOLO LOS PRACTICANTES.

2. Recuerde que debe traer su carné para ingresar sin contratiempos y un bolígrafo.

3. La reunión se hará en grupos definidos por afinidad de las carreras, SU SALON ASIGNADO ES: O103. (Es importante que tome nota y asista únicamente al salón asignado para usted)

Le agradecemos de antemano puntualidad. Con el fin de iniciar a tiempo la reunión, las puertas se cerraran a las 7:15 AM.

Si bien es una reunión de carácter obligatorio, deberá confirmar asistencia antes del MARTES 13 OCTUBRE DE 2009 vía mail (ctp@uniandes.edu.co) o al teléfono 3394949 Ext. 2093 con Sandra Parra.

Nota: Recuerde que el próximo jueves 29 de octubre es la reunión de Jefes, es por esto que agradecemos nos notifique si su Jefe o supervisor inmediato ha cambiado. De ser así les solicitamos nos envié por este medio antes del martes 13 de octubre los siguientes datos (Nombre completo de su jefe, cargo, teléfono y correo electrónico).


Les he mandado montones de email educadamente y han pasado a mí. Así que a este email les respondí esto:


Hola!

Confirmo mi asistencia. ¿Puedo llevar a un acompañante? Es que no
tengo brazos ni piernas y necesitaría a alguien que me ayudase a tomar
mis notas.

Gracias.


Si sigo recibiendo emails supongo que comenzaré a apuntar a Sandra Parra a las mismas webs que me apuntan a mí: la web de Betty la fea, durex, evax, twitter, etc.

13 octubre 2009

USACO: 2009-2010 Season Announcement

Comienza una nueva temporada en la USACO (registrarse, entrenamiento) para los que les interese las competiciones de programación.

Las competiciones de la USACO se dividen en 3 divisiones. Se comienza en la división de bronce y quedando bien en las competiciones se va ascendiendo a las divisiones plata y oro.

Copypaste del contenido de las divisiones según el mail de la USACO:
  • BRONZE: Students who can write programs that work, including ad hoc programs that don't require fancy optimized algorithms.

  • SILVER: Just below the Gold division, Silver competitors should know a number of standard computer algorithms (e.g., the flood-fill algorithm). Silver is similar to the old Orange division.

  • GOLD DIVISION: The elite level with the most difficult challenges. The lowest-level competitors in this division should be able to create a dynamic programming algorithm from scratch (similar to the old Green division).


En mi opinión personal, la división plata es mucho más difícil de lo que pone en la explicación.

Calendario de competiciones:

  • 23-26 Oct, 2009 - USACO Qualification Contest (OPTIONAL)

  • 6- 9 Nov, 2009 - USACO November Contest

  • 4- 7 Dec, 2009 - USACO December Contest

  • 8-11 Jan, 2010 - USACO January Contest

  • 5- 8 Feb, 2010 - USACO February Contest

  • 12-15 Mar, 2010 - USACO March Contest

  • 23-26 Apr, 2010 - US Open for International


Las competiciones son de 3 horas en el horario de elijamos. La competición está abierta durante 3 o 4 días y en el momento en que se acceda a los enunciados comienza a contar el tiempo.

12 octubre 2009

Inverso de la raiz cuadrada

Probando cosas en OpenGL he encontrado esta función "mágica" que calcula el inverso de la raiz cuadrada de un número. Es decir, 1/sqrt(x) o x^(-1/2). Investigando un poco he visto que tiene artículo en la wikipedia explicando sus propiedades mágicas.

La función sacada de la WP:

float InvSqrt (float x) {
float xhalf = 0.5f*x;
int i = *(int*)&x;
i = 0x5f3759df - (i>>1);
x = *(float*)&i;
return x*(1.5f - xhalf*x*x);
}


La función recibe un número en coma flotante de 32 bits, convierte el número a entero y hace un desplazamiento de bits a la derecha (equivalente a dividir entre 2). Este número entero lo resta a la constante mágica 0x5f3759df y convierte el resultado a coma flotante de nuevo. Ahora con un par de operaciones se obtiene una aproximación para 1/sqrt(x). Un poco raro ¿no?

Parece ser que se comenzó a conocer esta función cuando publicaron el código fuente de Quake 3 como GPL, aunque ya se había utilizado anteriormente en más sitios sin publicarla.

El artículo de la wikipedia: Fast inverse square root

10 octubre 2009

Juegos gratis en Steam

Guía para conseguir juegos gratis:


Ahora en serio, en Steam hay una sección de "cosas gratis", suelen ser mods del Half Life o demos aunque también hay juegos completos que son gratuitos. Yo en verano descubrí el American Army 3 que es gratuito porque creo que lo ha pagado el ejercito de USA y lo usa para hacerse publicidad. No jugué mucho pero ayer me preguntaba si habría más juegos gratis y buscando descubrí este post: Free Steam games list

En él aparecen listados varias cosas gratis, pero yo destaco las siguientes:

Los dos últimos packs creo que abarcan todas las tarjetas gráficas que permiten ejecutar decentemente videojuegos. Gracias a esta promoción he obtenido el HL2: Deathmatch que es el único juego que me faltaba de la serie HL2 porque no viene con el Orange Box.

03 octubre 2009

Memory Limit Exceeded

Este es un pequeño truco para saber cuánta memoria ocupan las estructuras estáticas de nuestro programa. Esto es útil para competiciones de programación y podemos evitarnos el típico error de Memory Limit Exceeded.

Si definimos una array global en C y C++ por defecto está a 0.


typedef struct {
int x1, x2;
int y1, y2;
int area;
int valid;
int color;
} RECT;
RECT rects[500000]; // todo a 0


Si compilamos el programa así (añadiendo un main y todo eso). El ejecutable ocupa 11KB.

Pero en cambio si inicializamos aunque sólo sea un valor de la estructura


typedef struct {
int x1, x2;
int y1, y2;
int area;
int valid;
int color;
} RECT;
RECT rects[500000] = {{1,1,1,1,1,1,1}}; // inicializar el primer elemento


Al compilar ahora el programa el ejecutable contiene la estructura completa y ocupa 14MB.

Si inicializamos a 0 el ejecutable no aumenta de tamaño y se queda en 11K. Tiene que ser un valor distinto de 0.


RECT rects[500000] = {{0,0,0,0,0,0,0}};


Yo utilizo este pequeño "truco" para ver si el programa cumple los requisitos de memoria en la USACO o la UVa antes de enviarlo. También puedes calcularlo a mano pero yo soy más vago para eso...

Como curiosidad: Descubrí esto hace un montón de años cuando al enviar un programa a la USACO, el servidor de la USACO murió y no volvió a funcionar hasta 30 minutos después. Cuando miré el programa resulta que me había generado un ejecutable de más de 1GB.

01 octubre 2009

Libros de fisica

La semana pasada termine de leer un libro llamado Los tres primeros minutos del universo del fisico Steven Weinberg. El libro intenta explicar de manera sencilla que se supone que ocurrió cuando se creó el universo en el Big Bang.

A mí que no me gusta demasiado la física me ha parecido que el libro tiene demasiadas fórmulas matemáticas y cosas extrañas. Y lo peor es que las fórmulas están en prosa tipo "la cuarta potencia de la constante de hubble" y cuesta más de seguir.

Recuerdo que hace unos meses leí el libro La textura del món de Jorge Velasco. Este trataba principalmente sobre los átomos y las partes que los constituyen como quarks, bosones y demás. Este libro me gustó más porque intenta explicar cómo es posible que detecten partículas tan pequeñas y los aparatos que utilizan. Además este libro tiene un capítulo al final que también explica los primeros momentos del universo.

Este libro me gustó más que el de Weinberg. Además de que me pareció más sencillo de entender, el libro de Weinberg es del 77 y ese tiempo es una eternidad en física porque cada año se inventan teorías nuevas.

De libros de física ya estoy servido para un tiempo largo.