Reto de programación #6: Luces

Como faltan varios días para el próximo game jam, he decidido lanzar consecutivamente otro reto, esta vez algo mas simple que el de Logi-5, este reto lo he extraído de los retos de Advent of Code, por lo que si pueden esperar algo de complejidad, aunque este es bastante mas sencillo de lo habitual.

Este reto no es de crear un juego ni una caracteristica de nada, el reto es el juego en sí, la dinámica consiste en resolver 2 problemas, para ello, he creado un formulario que te permitirá enviar tu solución: https://forms.gle/KsAK9D9b5zvgg22g9

Una vez terminado el reto, daré a conocer la solución correcta y quienes lograron acertar.

Como regla principal está no compartir la solución a los demás, aunque si puedes ayudar a que lo consiga, dando pistas de como resolver el problema.

PROBLEMA:

Primera parte:

Tienes un panel de luces en una cuadrícula de 1000x1000. Las luces de su cuadrícula están numeradas del 0 al 999 en cada dirección; las luces en cada esquina se encuentran en 0,0, 0,999, 999,999, y 999,0. Las instrucciones incluyen turn on, turn off o toggle a varios rangos inclusivos dados como pares de coordenadas. Cada par de coordenadas representa las esquinas opuestas de un rectángulo, inclusive; un par de coordenadas como, 0,0 through 2,2 por lo tanto, se refiere a 9 luces en un cuadrado de 3x3. Todas las luces comienzan apagadas.

Por ejemplo:

  • turn on 0,0 through 999,999 Encendería (o dejaría encendida) todas las luces.
  • toggle 0,0 through 999,0 alternaría la primera línea de 1000 luces, apagando las que estaban encendidas y encendiendo las que estaban apagadas.
  • turn off 499,499 through 500,500 apagaría (o dejaría) las cuatro luces del medio.

Después de seguir las instrucciones, ¿cuántas luces se encienden?

Segunda parte:

La rejilla de luz tiene controles de brillo individuales; cada luz puede tener un brillo de cero o más. Todas las luces comienzan en cero.

La frase en turn on en realidad significa que debes aumentar el brillo de esas luces en 1.

La frase en turn off en realidad significa que debe disminuir el brillo de esas luces 1 hasta un mínimo de cero.

La frase en toggle en realidad significa que debes aumentar el brillo de esas luces en 2.

¿Cuál es el brillo total de todas las luces combinadas después de seguir las instrucciones?

Por ejemplo:
  • turn on 0,0 through 0,0 aumentaría el brillo total en 1.
  • toggle 0,0 through 999,999 aumentaría el brillo total en 2,000,000.

Las instrucciones a seguir para resolver el puzzle está en este enlace: https://pastebin.com/4Xg4YkuL

Si logras con las respuestas correctas no olvides mencionarlo en discord o en el foro! No compartas código ni la solución, solo menciona tu logro. Una vez concluído el reto ya podremos discutir sobre el tema en el foro.

Fecha límite para solucionar este puzzle es el martes 20 de octubre 2020, es tiempo suficiente para que pueda resolverlo hasta el mas principiante en programación.

Recomendaciones para principiantes:

Para resolver este puzzle, es recomendado tener conocimiento sobre Regex, esto ayuda muchísimo, la mayoría de los lenguajes de programación tienen incorporado un módulo o existe una librería de eso.

Es bueno tener conocimiento sobre arrays de dos dimensiones (matrices o vectores).

Lenguajes de programación fáciles de utilizar para este puzzle: Python, Lua, Javascript.

Comentarios