Gatos y Piernas

Escuchando: "Song 2" by Blur
Viendo: Seirei no Moribito
Jugando: Obscure (XBOX)
 
Ayer recibí un correo que traía un archivo de excel adjunto, protegido por contraseña, y el siguiente acertijo:
 

Cómo abrir el archivito de los gatos !!!!

Existe un autobús con 7 niñas
Cada niña tiene 7 mochilas
Adentro de cada mochila hay 7 gatos grandes
Cada gato grande tiene 7 gatos pequeños
Todos los gatos tienen 4 piernas cada uno

Pregunta: ¿Cuántas piernas hay adentro del autobús?

El número de piernas es el password del archivo adjunto. jejejejeje

Si logran abrir el archivo escriban su nombre en la hoja 1 para dejar
evidencia de que lo abrieron y reenvienlo a quien quiera

 
 
Ya que se que cualquiera de mis lectores puede resolver esto fácilmente, voy a tomar un crudo tono sarcástico a lo largo del post, pero es tan sólo para aquellos lectores que sufran de jaqueca con tan sólo ver el problema. Los demás no deben ofenderse smile_wink.
 
La solución es bastante sencilla y por eso me sorprendí al abrir el archivo, encontrándome un listado de 93 personas regodeándose de haber hallado la solución como si hubieran acabado de decodificar el genoma humano… inclusive hay grafiquitos y tablitas… ¿acaso cuál es el mérito?, ¿saber multiplicar?, ¿qué eso no se aprende como en segundo de primaria? smile_sarcastic
 
Personalmente  me pareció muchísimo más interesante hacer un programita en .net que se encargara de hacerle un ataque de fuerza bruta al archivo para encontrar el número… (Si, ya sé que hay más que suficientes programas en internet que se encargan de hacer lo mismo y que hacer el programa no tiene ningún misterio. Igual estaba aburrido, ¿y de cuándo a acá las cosas que hago tienen sentido?)
 
Las opciones básicas para acceder información almacenada en un archivo de excel desde una aplicación normalmente son usar OLEDB o usar el modelo de objetos de excel.
La primera opción no es muy flexible y tiene el gran defecto de que no soporta trabajar con archivos de Excel protegidos por contraseña, así que tras probarla y encontrar el error genérico "No se pudo desencriptar el archivo" (Couldn’t decrypt file) recurrí a la segunda opción, aunque eso de que Office, aún en su versión 2007, siga exponiendo en su API puros objetos COM a muchos nos causa neura.
 
El código en resumidas cuentas es el siguiente:
 
            using Microsoft.Office.Interop.Excel
            ...

            String Path = @"c:\GATOS-HAR_6.xls";
            ApplicationClass exc = new ApplicationClass();
            Int64 i = 0;
            Boolean Error = true;
            System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
            while (Error)
            {
                try
                {
                    Workbook wo = exc.Workbooks.Open(Path, 0, true, 5, i.ToString(), "", true, XlPlatform.xlWindows,
                         "\t", false, false, 0, true, 1, 0);
                    Error = false;
                }
                catch (Exception)
                {
                    i++;
                }
            }
            System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
            this.label1.Text = i.ToString();
            exc.Quit();
 
Si se dan cuenta el código es muy sencillo:
  1. Agregamos una referencia a la librería de objetos de Excel.
  2. Definimos el path del archivo.
  3. Creamos una nueva instancia del AplicationClass.
  4. En un ciclo infinito intentamos abrir el archivo con una contraseña que va aumentando desde 0.
  5. Si la contraseña es erronea se genera una excepción, ante lo cual aumentamos el número para la contraseña y continuamos con el ciclo infinito.
  6. Si la contraseña coincide salimos del ciclo y mostramos la contraseña que funcionó (en este caso en un label).
  7. Cerramos la instancia de excel que se utilizó para el proceso.

Y eso es todo, supremamente simple, aunque tal vez mi aproximación hecha a la carrera no sea la más adecuada. Si se preguntan para qué me meto con la cultura del hilo actual, lo hice ya que al tener el office en un idioma distinto al del locale del Sistema Operativo, apenas intento utilizar la instancia de Excel se levanta un error COM (Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))), tal como está documentado acá.

 

Tal vez les parezca chistoso, pero mi primera reacción al ver el acertijo fue responder "14"… a mi cuando chiquito me enseñaron que los animales tienen PATAS y que las piernas son las de los HUMANOS. Por lo tanto, las únicas piernas serían las de las niñas… sin embargo, ante mi obvia falta de cultura, la Real Academia Española aclara que pierna significa también "Muslo de los cuadrúpedos y aves" (sí, tengo a la RAE en mi lista de proveedores de búsqueda justo al lado de google y wikipedia, ¿acaso es tan raro? smile_embaressed). ¡HE VIVIDO ENGAÑADO TODO ESTE TIEMPO!

 

Ahh, y antes de que se me olvide, la respuesta al acertijo y la forma de resolverlo están acá abajo para aquellos que no pueden mascar chicle y caminar al mismo tiempo (sólo deben seleccionar con el mouse, ¿acaso también necesitan un manual para hacerlo?):

 

Gatos grande: 7 niñas * 7 mochilas * 7 gatos = 343 gatos.

Gatos pequeños: 343 gatos * 7 gatos = 2401 gatos.

Total gatos = 2744.

Patas gatos = 2744 * 4 = 10976.

Piernas niñas = 7 * 2 = 14.

Total piernas bus = 10976 + 14 = ¡10990!

 

Ahora necesito un descanso tras hacer tantas multiplicaciones smile_tongue, aunque creo que tiene mil veces más mérito apuntar bien cuando se entra a orinar al baño que resolver esto.

Mata ato de!


~ by Darsel on November 24, 2007.

11 Responses to “Gatos y Piernas”

  1. No era mas facil : http://www.lostpassword.com/

  2. Probablemente, pero es más divertido hacer las cosas uno mismo😀

  3. Si cuando dicen q los informaticos somos los q mas nos aburrimos sera por algo ^_^Pero en realidad el resultado es erroneo, ya que el autobus "lleva" a los niños, por lo q esta en movimiento, y dado q los niños no pueden conducir se debe añadir al conductor, por lo q son 2 piernas masAdemas el acertijo dice q en cada mochila hay 7 gatas, y q cada gata tiene 7 gatitos, pero estos no estan en la mochila por la premisa anterior, asi q solo habria q contar las 343 gatasEl resultado real, tal como esta escrito el acertijo es 1388Un saludo.

  4. Jajajaja, cierto, cierto. mi hermana también contó al conductor cuando intentó resolver el acertijo. Sin embargo, la versión que yo recibí no dice que el bus lleva… se limitaron a decir "existe un bus", quizás para evitar esa confusión.
     
    ¡Gracias por el comentario!🙂

  5. Pero qué listo eres con tu solución en rojito. ¿Acaso el conductor no tiene piernas? La prepotencia se paga, cada vez más.

  6. Jajajajaja, ¡super el comentario! Tal vez la próxima vez sea mejor leer bien el acertijo (o el comentario anterior donde se comenta lo del conductor) y el texto, particularmente donde dice "voy a tomar un crudo tono sarcástico", ya que eso de prepotencia suena bastante feo😛

  7. Ejem ejem… falta el conductor del autobus… nadie ha pensado que sino los niños no pueden ir a la escuela?? jijiji 10992 digo yo..

  8. Bueno, sinceramnete creo k aki ay mucha gente dandose de lista, pero el unico k lo a acertado a sido el anonimo, ya k si, son 10992. Pork claramente hay un conductor y "Realidad" los gatitos tambien se cuentan.
    Pero nada, vosotros seguir aburriendos…

  9. Holaa. Eres muy pilo y esto demuestra que no siempre debemos hacer de las cosas mas sencillas algo imposible!!!!No de le demos tantos rodeos a la vida y no la veamos tan complicada como parece. Besos.

  10. pasame el manual para caminar y mascar chicle al mismo tiempo. Lo que es estar al reverendo pedo no??? salgan a ver el sol. jaja

  11. No seas tan listo y vayas de enterado, porque la solución, obviamente está mal, porque se te olvidó la clave del enigma, esto es, que las niñas no pueden conducir solas por sí mismas, por lo tanto, son 10992, es decir, (para los que no puedan caminar y mascar chicle a la vez :P) hay que sumarle las piernas del conductor que lleva a estas criaturas😛😛

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: