jueves, 21 de septiembre de 2017

Resolución de acertijo con Python 3

El otro día, un amigo estaba leyendo el periódico y se topó con un acertijo que consideró interesante. Iba todo bien hasta que han comenzado a suceder cosas raras, vale, vale, es broma... me centro. Me lo enseñó y rápidamente nos pusimos manos a la obra para resolverlo. El acertijo es éste: (Está un poco pintado, pero se puede leer)

Como puedes leer, consiste en hallar una palabra de 5 letras que cumpla las siguientes normas:

  • Solo puede contener las letras que aparecen en el acertijo (ninguna otra).
  • De cada fila, deben aparecer tantas letras como se indica en el primer número de dicha fila.
    Por ejemplo: la palabra solución del acertijo, debe contener dos letras (ni más ni menos) de la segunda fila, donde pone "MORSA", porque así lo indica el primer número de dicha fila en la palabra solución.
    Otro ejemplo: la palabra solución no debe contener letras de la primera fila, porque así lo indica el primer número (que es un 0).
  • De cada fila, deben aparecer tantas letras en el mismo sitio como indica el segundo número de la fila. (Con letras "en el mismo sitio" o "en la misma posición" me refiero a letras en el mismo index, es decir, si la letra es la tercera de la fila, en la palabra solución también debe ser la tercera)
    Por ejemplo: la palabra solución debe contener una letra en el mismo sitio de la tercera fila, porque así lo indica el segundo número de ésta (un 1). O sea, de las letras A R D U O, una de ellas debe estar en el mismo sitio en la palabra solución. Pero ¡OJO! Solo una, más no.
    Otro ejemplo: la palabra solución debe contener una letra en el mismo sitio de la última fila, porque así lo indica el segundo número de ésta (un 1).

Nos pusimos con toda la ilusión del mundo a resolverlo, pero al cabo de un buen rato seguíamos sin conseguirlo (en parte por su dificultad y en parte porque no somos de la NASA). Viendo el panorama, se me ocurrió una idea para resolver el acertijo de una vez por todas: hacer un programa que lo resolviese. El programa está hecho, escribo este post, con el objetivo de mostrároslo y comentároslo.

miércoles, 13 de septiembre de 2017

PROYECTO MONLED: Utilizar una tira led WS2812B controlada por Arduino para iluminar un escritorio

Ya sabrás que me encantan las tiras leds, y más si las puedo controlar, manejar y programar yo mismo. Tanto me gustan, que hace unos meses decidí crear el proyecto que voy a presentar en este post.

Este proyecto, lo he llamado "Monled". Consiste en la utilización de una tira led WS2812B como una lámpara normal, como un flexo de escritorio, con el objetivo de iluminar una mesa. El flexo que tengo (tenía) para iluminar mi escritorio es bastante aparatoso y se le suele fundir la bombilla cada 2 meses, y cansado de esto pensé: ¿Por qué no me hago yo el mío propio? Fue así como comenzó mi maravilloso viaje a través de estos aparatejos que Arduino nos permite controlar.

Para empezar, debes saber qué es una tira led WS2812B y cómo funcionan. No, no hace falta que busques en Google, puedes ver este post de mi blog en el que explico su funcionamiento, el hardware, el software y todo lo que te puedas imaginar. Pero yo las explicaré un poco aquí. Las tiras leds WS2812B están formadas por leds WS2812B (hasta ahí llegamos ¿no?). La principal característica de estos leds es que se comunican entre ellos, es decir, cada uno le transmite información al siguiente, en forma de cadena. Por tanto, solo hace falta que conectemos el Arduino a un extremo de la tira y podremos encender cada uno de los leds de ésta. La verdad es que a mi me han encantado, principalmente porque son facilísimos de usar.

Entonces, si lo que queremos es que nuestra tira led ilumine nuestra mesa, debemos colocarla en un sitio elevado ¿no? Pues sí, yo tengo una ventaja importante y es que justo encima de la mesa de mi escritorio tengo una estantería, por lo que puedo pegar la tira led en la parte de abajo de la estantería apuntado hacia a mesa. Así, cuando la encienda, la luminosidad de todos los leds acabará en mi mesa y alumbrará cada rincón. Si no tienes una estantería encima de tu mesa (que quizás es lo más normal) puede que no puedas usar este proyecto para alumbrar tu mesa, pero sí puedes poner la tira en muchos más sitios. Eso ya te lo dejo a ti.