lunes, 22 de enero de 2007

Cantidad de información en los tatuajes del protagonista de Prison Break (II)

Hace unos cuantos posts hablamos de la cantidad de información que podría recogerse en la piel del genial Michael Scofield (no confundir con el pelma de John Scofield).

Recordé este post en el que se afirmaba que se podían almacenar 450 GB en una hoja de papel. Aunque luego se matizó este resultado, la idea de fondo es conocida, en lugar de usar el poco eficiente (aunque altamente conveniente para los ordenadores) sistema binario, el sistema es multidimensional (idea parecida a la que se usa en la computación cuántica) basándose en colores y formas.

En el caso de Prison Break, la verdad es que el sistema es algo estúpido. Utiliza pequeños recordatorios dispersos por su cuerpo, pero hay que entender que el muchacho necesitaba que los tatuajes pasasen desapercibidos.

En cuanto a qué sistema podríamos utilizar para codificar la información, el propuesto de formas y colores puede ser interesante. Las formas se pueden tatuar (un sistema sencillo - | / \ o < > , etc) y por supuesto con distintos colores. Dada la aleatoriedad de la secuencia, quedaría muy mono y además sería seguro. El incoveniente sería la descodificación "visual" por parte de Scofield. Pero con papel y lápiz todo es posible. Lo bueno de este sistema es que no sería preciso memorizar nada (salvo el propio código).

Por ejemplo, acabo de idear el siguiente código:

* 7 colores: rojo, azul, amarillo, verde, rosa, naranja y negro
* 4 caracteres: - + | O

En total tengo 7*4=28 símbolos (por ejemplo las 25 letras minúsculas y el espacio)
a: -
b: +
c: |
d: O
....

Así, la frase "prison break" se codificaría como:

O+-||+|++--|


Bonito, ¿verdad?

OS adjunto un pequeño código en C que lo hace.

#include
#include

main(int argc,char*argv[])
{
int i,c;
char *color[]={"#ff0000","#0000ff","#ffff00","#00ff00","#ff00ff","#ff8040","#000000"};
char *simbolo[]={"-","+","|","O"};


if(argc!=2) {
printf("Sintaxis: %s \"texto\"\n",argv[0]);
return;
}

for(i=0;i< strlen(argv[1]);i++) {
c=argv[1][i]-97;
c=(c<0)?26:c;
printf("%s",color[c/4],simbolo[c%4]);
}
}



Se compila y se ejecuta redireccionando la salida a un fichero con extensión html que podéis ver en vuestro navegador.

Os dejo con un poema de Mario Benedetti (a ver si adivináis cuál, podeís descargarla y ampliarla)

1 comentario:

Gonzalo dijo...

Es código de +-0 quedaría muy cantoso o llamativo en una cárcel, ningún delincuente se tatúa tal cosa y mucho menos en colores, vamos que entras con ese código tatuado en una cárcel y todo el mundo sospecharía que es un código (en el caso de Michael Scofield mucho mas pues entro por robar un banco y ese código es excelente para apuntarte donde dejas los dineros de los atracos) El tatuaje de Michael Scofield es más adecuado para una cárcel aunque claro tienes que ser un empollón increíble como lo era Michael Scofield en la serie