Challenge 1 : pousser les caisses

Votre robot se trouve dans un entrepôt représenté par la grille ci-dessous. Chaque case peut être vide, contenir une caisse (case grise), ou bien un bonus (rond rouge).

Votre objectif est d'écrire un programme qui fait ramasser tous les bonus au robot. La voie n'est cependant pas libre, mais le robot est puissant et peut pousser une caisse s'il y a une case vide juste derrière cette caisse.

Pour commander le robot, vous disposez des 4 instructions suivantes :

  • haut(nbCases)
  • bas(nbCases)
  • droite(nbCases)
  • gauche(nbCases)
Chaque instruction demande au robot d'avancer de nbCases cases dans la direction correspondante, et de pousser une caisse s'il en rencontre une. Votre programme échouera si vous donner un ordre invalide au robot.

Ci-contre, vous pouvez tester l'exécution des instructions suivantes :

            bas(1)
            droite(2)
            haut(1)
            gauche(1)
         

Score

Votre programme sera testé sur une seule configuration, qui est celle présentée ci-dessus.

Vous obtiendrez 25 points pour chaque bonus ramassé par le robot. À partir de 50 points, vous validerez ce challenge et pourrez passer au suivant si vous ne trouvez pas mieux.

Attention : pour réussir cet exercice, il est important de se baser sur les exemples de programmes fournis ci-dessous.

Voici pour chaque langage le programme complet effectuant les commandes listées ci-dessus, et dont vous pouvez partir. Notez que votre programme peut aussi afficher du texte.

#include "robot.h"

int main()
{
   bas(1);
   droite(2);
   haut(1);
   printf("coucou");
   gauche(1);
   
   return 0;
}

#include "robot.h"

int main()
{
   bas(1);
   droite(2);
   haut(1);
   printf("coucou");
   gauche(1);

   return 0;
}

open Robot;;
  
bas(1);
droite(2);
haut(1);
Printf.printf "coucou";
gauche(1);

import static algorea.Robot.*;

class Main
{
   static public void main(String args[])
   {
      bas(1);
      droite(2);
      haut(1);
      System.out.println("coucou");
      gauche(1);
   }
}

void main()
{
   bas(1);
   droite(2);
   haut(1);
   println("coucou");
   gauche(1);
}

from robot import *

bas(1)
droite(2)
haut(1)
print("coucou")
gauche(1)


Source : http://www.france-ioi.org/