iniciar-programa
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;

define-nueva-instruccion colocar como
inicio
  norte;
  si frente-libre entonces
    inicio
      avanza;
      si junto-a-zumbador entonces sal-de-instruccion
      sino
        inicio
          repetir 2 veces gira-izquierda;
          avanza;
        fin;
    fin;
  sur;
  si frente-libre entonces
    inicio
      avanza;
      si junto-a-zumbador entonces sal-de-instruccion
      sino
        inicio
          repetir 2 veces gira-izquierda;
          avanza;
        fin;
    fin;
     este;
  si frente-libre entonces
    inicio
      avanza;
      si junto-a-zumbador entonces sal-de-instruccion
      sino
        inicio
          repetir 2 veces gira-izquierda;
          avanza;
        fin;
    fin;
   oeste;
  si frente-libre entonces
    inicio
      avanza;
      si junto-a-zumbador entonces sal-de-instruccion
      sino
        inicio
          repetir 2 veces gira-izquierda;
          avanza;
        fin;
    fin;
fin;

define-nueva-instruccion camina como
inicio
  si frente-libre entonces
    inicio
      avanza;
      si no-junto-a-zumbador entonces
        inicio
          repetir 2 veces gira-izquierda;
          avanza;
          repetir 2 veces gira-izquierda;

        fin
      sino sal-de-instruccion;

   fin;
 si izquierda-libre entonces
    inicio
      gira-izquierda;
      avanza;
      si junto-a-zumbador entonces sal-de-instruccion
      sino
         inicio
           repetir 2 veces gira-izquierda;
           avanza;
           gira-izquierda;
         fin;
    fin;
si derecha-libre entonces
   inicio
     repetir 3 veces gira-izquierda;
     avanza;
     si junto-a-zumbador entonces sal-de-instruccion
     sino
       inicio
         repetir 2 veces gira-izquierda;
         avanza;
         repetir 3 veces gira-izquierda;
         coge-zumbador;
      fin;
   fin
 sino
   inicio
     coge-zumbador;
   fin;
fin;

define-nueva-instruccion pasajeros(i) como
inicio
  si junto-a-zumbador entonces
    inicio
      coge-zumbador;
      si junto-a-zumbador entonces
        inicio
          coge-zumbador;
          si no-junto-a-zumbador entonces deja-zumbador;
          pasajeros(sucede(i));
        fin
      sino
        inicio
          deja-zumbador;
          camina;
          pasajeros(i);
        fin;
    fin
  sino
    inicio
      repetir i veces deja-zumbador;
    fin;
fin;

define-nueva-instruccion camion(n) como
inicio
  si junto-a-zumbador entonces
    inicio
      coge-zumbador;
      camion(sucede(n));
    fin                          
  sino
    inicio
      colocar;
      pasajeros(0);
      repetir n veces si junto-a-zumbador entonces coge-zumbador;
      si no-junto-a-zumbador entonces
        inicio
          este;
          avanza;
          mientras junto-a-zumbador hacer coge-zumbador;
          repetir 5 veces deja-zumbador;
        fin;
      apagate;
    fin;
fin;

    inicia-ejecucion
         camion(0);
        apagate;
    termina-ejecucion
finalizar-programa
