Bueno pues aqui voy con mi particular acercamiento al snippet de @thinbaker con la librería Pillow.
Claro que como ya adelanté, yo he integrado el código del tocayo en mi herramientilla/playground de python #Python
Ya dije q suelo iterar sobre un concepto en cada oportunidad. Como veis hay un fichero principal y una "carga de pago" consistente en uno o varios comandos como modulos independientes...
En este caso hay tres snippets sacados de Twitter integrados en la misma herramienta..
El modulo main se encarga de preparar la estrutura de argparse, aumentarla con "subparsers" para cada comando que se añada y de comprobar la cmdline y bifurcar al comando apropiado... Es casi lo mismo que visteis para el #AdventOfCode
En este caso el comando PNG2ascii está implementado en el modulo commands/png2ascii.py en incluye el subparser que se encarga de las necesidades propias de este comando..
El "main" a peticion del parser que veis arriba "sabe" que el comando en si está implementado en la función command a la cual se pasa el objeto Namespace que contiene los switches y rutas a ficheros que se hayan encontrado en la liena de comandos..
Una vez sabemos el fichero PNG lo abrimos, le tomamos medidas y convertimos cada pixel en un char, a la manera que hizo @thinbaker. Finalmente concatenamos el resultado en ascii_art
Si el bloque "Try" fué bien podemos bien imprimir por consola el resultado o escribirlo en un fichero cuestion que resolvemos mirando si existe args.output en caso de que el usuario solicitó escribir la salida a un fichero...
Yo no soy de Pokemons asi que permitidme que use el típico ejemplo de PNG sacado de la wiki:
Bien y como usamos la herramienta? Bueno, pues argparse se encarga de mostrarnos la ayuda principal y la ayuda de cada comando, cosa de la que nos aprovechamos inmediatamente..
Ejecutamos la herramienta y vereis el Loro convertido en ASCII (he partido la salida en dos) de igual manera que @thinbaker nos enseño con sus Pokemons..
Y ahora veamos el funcionamiento con el switch opcional "--output" Seguidamente abrimos el fichero en el propio @vcode y vemos que el resultado es correcto.
Bueno hasta aqui mi versión del código de @thinbaker en la que he tratado de preservar la parte uya con los cambios mínimos de CV2 a Pillow
Estaba leyendo sobre ASCII Art y dithering y se me ha ocurrido que el código sólo funciona para imágenes RGB por lo que he hecho los preparativos para poder jugar con otros formatos...
Primero segregamos el codigo de @thinbaker version Pillow en una función separada..
Despues he usado un salto con diccionario (que tanto le gustan a @Josheriff ) por lo que para poder procesar diferentes formatos (de los que soporta PiIllow claro!) usaremos nuevas funciones que añadiremos al diccionario.
Bueno pues estoy leyendo: publications.lib.chalmers.se/records/fullte…
asi que quizas me anime a ver si puedo codificar lo que proponen, y si quiero usar a "Lena" deberemos soportar el formato "L" escala de grises probablemente..
Bueno en realidad no sé que complicado es esto de codificar pero lo pongo igualmente por que se que a @thinbaker y a @Chucheria les molan mucho estas cosas..
Saludos!
Y si os preguntais para que vale esto:
• • •
Missing some Tweet in this thread? You can try to
force a refresh
El octavo de #AdventOfCode parte 2 en SQL. Un poco ñapas para mi gusto pero es lo que hay!
Empezamos como siempre..
Limpiamos linea alinea y separamos x, y, altura para cada arbol usando CTEs en secuencia.
Cruzamos cada arbol con su scan a derecha, izquierda, arriba y abajo con sub-consultas correlacionadas. Hay que cambair el orden de los que devuleven para que quedan en funcioón del punto de vista. Cada resultado se agrega en un array.
#AdventOfCode 5 Supply Stacks en SQL puro (PostgreSQL)
Si te gusta el SQL lo vas a flipar (creo) , sígueme en este triste historia (por lo de "La Roja") +
Empezamos como siempre, y toca cargar el fichero de test que ya tiene tela...
Empezamos enumerando las lineas del fichero (ya en la tabla de input), quedandonos con la parte de las pilas y calculando la longitud maxima de entre todas las líneas (por si caso no eran iguales)
Quien no sepa que esto que lea mis otros hilos porque ya va siendo lo mismo todo el rato
Tan facil que no lo voy a despiezar pues creo que se entiende de un vistazo y además esta comenetado. Convierte en rangos y comprueba inclusiones entre ellos.
Bueno, de vuelta al #AdventOfCode 3 Rucksack Reorganization
Empezamos leyendo los datos con ayuda de una tabla y restricciones adecuadas..
He creado una vista con la solución y así la reuso para pasar el test y luego el fichero de entrada del desafío.
Seguidamente os explico, aquí la muestro plegada junto con el código completo.
Empiezo mapeando las prioridades ['a'..'z'] -> [1..26] y ['A'..'Z'] -> [27..52] con dos consultas sencillas y el operador UNION ALL
Este año en la encuesta de evaluación docente me van a crujir los alumnos y seguramente las prácticas de la asignatura son lo más parecido a lo que demandan cuando recién aterrizados en el curro te quejas de lo que no visteis en la universidad
Les hemos hecho currar a base de bien primero un diseño con su modelo entidad relación y su diccionario de datos justificando cada dato cada dominio cada tipo y créeme que les hemos hechi pelear cada punto y cada coma lo mismo para el modelo relacional...
después nos hemos dado un conjunto de datos con muchos defectos han tenido que cargarlos en tablas y examinarlos y razonar sobre qué transformaciones o incluso qué modificaciones a su modelo original deberían hacer ( Y efectuarlas!)