Scalera challenge: De la Tierra a la Luna

Hemos entrado en el nuevo año, y hemos querido hacerlo pisando fuerte. Como prometimos, uno de nuestros propósitos para este año es tratar de innovar y hacer más participativo el blog. Por ello, os presentamos nuestro primer desafío Scalera, para poner a prueba vuestras cabezitas 🙂

De la Tierra a la Luna

forever-alone-moon_o_1332879

La ESA (Agencia Espacial Europea) quiere mandar dos robots (rovers) a la Luna. Para aterrizar disponen de un sofisticado sistema: un paracaídas. El problema es que todo apunta a que los robots no aterrizaran en el mismo sitio…
Una vez aterrizados, justo encima de sus propios paracaídas, en la Luna, la cual tiene una superficie discreta de tamaño infinito, ambos rovers deben encontrarse para empezar el desarrollo de la misión juntos.

El reto consiste en programar, utilizando un conjunto de instrucciones limitado, el rover de manera que se acaben encontrando. Ten en cuenta, que el mismo programa será cargado en ambos robots y los rovers no tienen forma programática de saber su identificador.

DSL de navegación

El set de instrucciones para programar los rovers se compone de:

  • MOVE <direction> : Mueve el rover una unidad del espacio discreto hacia la izquierda o la derecha.
  • IF FOUND PARACHUTE <command> : Si el rover encuentra un paracaídas en la parcela de suelo donde se encuentra, entonces ejecuta la instrucción indicada.
  • NOP: El rover no hace nada…
  • GOTO <lineId> : Salta a la instrucción que se encuentra en la línea indicada.

¡Participa!

moonrover_example

Puedes encontrar el proyecto para empezar a programar tus robot en github.
Encontrarás toda la información técnica necesaria en el fichero README.md.

Para participar solo teneis que mandarnos a scalerablog at gmail dot com el fichero Launch.scala con el programa que habéis usado y vuestro usuario de twitter para mencionaros en nuestro hall de la fama virtual 😛

El plazo de participación finaliza en dos semanas naturales desde la fecha de publicación de este post.

Entre las mejores soluciones (menos ticks de reloj empleados, menos lineas de programa) sortearemos una camiseta del blog 🙂

¡Ánimo y mucha suerte!

Cuántas cosas negadas la víspera han sido una realidad al día siguiente

Julio Verne

7 comentarios en “Scalera challenge: De la Tierra a la Luna

  1. Aparte de estar implementado en Scala, el objetivo del post era promover la participación en el blog y dar a conocer las posibilidades que ofrece el lenguaje.

    Consideramos pues que ha sido un éxito ya que contamos incluso con tu aportación de soluciones, las cuales agradecemos profundamente 🙂

    En futuros posts comentaremos la implementación del simulador y la visualización con ScalaJs.

    Un saludo.

    Me gusta

  2. Me parece una gran idea. El «simulador » funciona perfectamente. Reconozco que no lo conseguí hacer funcionar con eclipse, pero con Idea15 lo maneja estupendamente (ya sé que no hace falta IDE, pero uno tiene sus costumbres).

    Espero que la gente se anime y le pierda el miedo a programar con scala. Pronto os enviaré mi contribución.

    Hubiera estado bien ir conociendo el tanteo de las soluciones a medida que os van llegando, tal vez un «hall de la fama» actualizado, algún referente para incitar a mejorar los programas. (Como referencia, yo he conseguido bajar bastante de los 100 ticks para el encuentro de los robots)

    Le gusta a 1 persona

    • La verdad es que no queríamos publicar datos de las soluciones para no condicionar a la gente en ningún aspecto.
      Pero sí podría ser una buena idea, cuando hablemos en otro post sobre como hemos implementado el simulador para el challenge; indicar los tipos de soluciones que hemos recibido y como se podía mejorar el número de ticks aprovechando la implementación del simulador.

      Muchas gracias por tu comentario, Chema 🙂

      Me gusta

  3. Muy buenoo y divertido!
    Una pequeña consulta, que atributo del programa es mas valorado? Menor cantidad de ticks o menor cantidad de lineas de código? Porque me encontré ante una situación donde reducir uno aumenta la cantidad del otro.
    Saludos y felicitaciones por el blog!

    Me gusta

    • Muchas gracias por el feedback Juan 🙂 Te animamos a intentarlo con ambos criterios. Hay gente que nos ha mandado las dos soluciones (algunas bastante originales).
      ¡Un saludo !

      Me gusta

Deja un comentario