Posts etiquetados ‘matrioska’

Una matrioska o muñeca rusa (ruso: Матрёшка /mʌˈtrʲoʂkə/) son unas muñecas tradicionales rusas creadas en 1890, cuya originalidad consiste en que se encuentran huecas por dentro, de tal manera que en su interior albergan una nueva muñeca, y ésta a su vez a otra, y ésta a su vez otra, en un número variable que puede ir desde cinco hasta el número que se desee, siempre y cuando sea un número impar, aunque por la dificultad volumétrica, es raro que pasen de veinte. ver más

Este ejercicio solo lo posteo para que nos demos cuenta la facilidad que es trabajar con Python y ver su sencillez a la hora de resolver cualquier tipo de problemas, ejercicio que en otros lenguajes podemos gastar varias lineas de Código en Python lo resolvemos en unas cuantas lineas

Para comenzar necesitaremos el archivo en el cual esta la misión y se usara para llegar a la respuesta, lo puedes descargar de aqui, luego si manos a la obra.

Como podemos mirar hay que realizar 2 partes y por lo tanto 2 scripts. Comencemos con el primer script

#!/usr/bin/env python
mp3=open("mision.mp3","r" )
photo=open("foto.png","w") 
for i in range (20, 1222100+20):
	c=mp3.seek(i)
	c=mp3.read(1)
	photo.write(c)
mp3.close()		
photo.close()

Como podemos mirar es muy simple es uso de Pyhton, a continuación explico algunas partes de este script. Primero: abrimos el archivo mision.mp3 en modo lectura y el archivo foto.png en escritura si el archivo no existe se crea. Segundo: Aqui ya solo queda recorrer el archivo desde el byte 20 hasta el tamaño 1222100 más los 20 del inicio, el método seek() hace que nos ubiquemos en un byte determinado, el método read() nos permite leer, al escribirle el numero 1 lo leemos el archivo byte a byte y por último el método write() es el que nos ayuda a escribir. Tercero: ya por ultimo sobra cerrar los archivos con el método close().

Si todo ha salido bien miraremos que se nos creo la siguiente imagen

Con esto ya estamos listo para el segundo paso que es leer la foto.png generada en el anterior script y leerlo de la misma forma pero decrementando desde el byte 1222100-1 ya que en la ultima posicion no se encuentra nada hasta el byte 1222100-249686-1

#!/usr/bin/env python
photo=open("foto.png","r")
pdf=open("coordenadas.pdf","w")
for j in range(1222100-1, 1222100-249686-1, -1): 
	d=photo.seek(j)
	d=photo.read(1)
	pdf.write(d)
photo.close()
pdf.close()

Al ejecutar este script obtenemos el siguiente archivo: coordenadas.pdf

Eso es todo, como pueden la facilidad de python frente a otros lenguajes es muy tremenda(solo 8 líneas por nivel). Espero que les haya gustado y si no intenten resolverlo en otro lenguaje de programación y hagan ustedes mismos la prueba

Hasta la próxima