iniciar-programa
define-nueva-instruccion gira(n) como INICIO
    repetir n veces gira-izquierda;
FIN;
define-nueva-instruccion acomoda como INICIO
    mientras (junto-a-zumbador o no-junto-a-zumbador)y frente-libre hacer INICIO
        si no-junto-a-zumbador entonces avanza;
        si junto-a-zumbador entonces INICIO
            si orientado-al-este entonces gira(1);
            mientras junto-a-zumbador y frente-libre  hacer INICIO
            mientras junto-a-zumbador hacer coge-zumbador;
            avanza;
            si frente-bloqueado o no-junto-a-zumbador entonces gira(2);
            si no-junto-a-zumbador entonces mientras frente-libre hacer avanza;
            si orientado-al-sur entonces gira(1);
          FIN;
          FIN;
       FIN;
       mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
       FIN;
  define-nueva-instruccion divide(num) como INICIO
      si si-es-cero(num) entonces apagate sino INICIO
          mientras algun-zumbador-en-la-mochila hacer INICIO
              si algun-zumbador-en-la-mochila entonces INICIO
                  deja-zumbador;
                  avanza;
                  deja-zumbador;
                  gira(2);
                  avanza;
                  gira(2);
          FIN;
      FIN;
            apagate;
      FIN;
  FIN;
       define-nueva-instruccion irAIN(num) como inicio
           mientras no-orientado-al-norte hacer gira(1);
           avanza;
           gira(1);
           mientras frente-libre hacer avanza;
           mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
           repetir num veces coge-zumbador;
           gira(1);
           mientras frente-libre hacer avanza;
           gira(1);
           avanza;
           gira(2);
                   divide(num);
           apagate;
       FIN;
     define-nueva-instruccion cuenta2(num) como INICIO
     SI junto-a-zumbador entonces INICIO
     coge-zumbador;
     cuenta2(sucede(num));
     FIN;
     irAIN(num);
 FIN;
       define-nueva-instruccion resta(num) como  INICIO
           si orientado-al-este entonces INICIO
           gira(1);
           avanza;
           gira(1);
           repetir 6 veces avanza;
           gira(1);
           avanza;
           FIN;
           si si-es-cero(num) entonces INICIO
           cuenta2(num);
           si si-es-cero(num) entonces apagate;
           FIN
           sino
           INICIO
           si junto-a-zumbador entonces INICIO
                coge-zumbador;
                 resta(precede(num));
           FIN;
           si si-es-cero(num) entonces INICIO
           cuenta2(num);
           si si-es-cero(num) entonces apagate;
           FIN;
           si no-junto-a-zumbador entonces INICIO
           gira(1);
           irAIN(num);
           FIN;
           FIN;

       FIN;
 define-nueva-instruccion cuenta(num) como INICIO
     SI junto-a-zumbador entonces INICIO
     coge-zumbador;
     cuenta(sucede(num));
     FIN;
  si no-junto-a-zumbador entonces resta(num);


 FIN;

    inicia-ejecucion
        repetir 5 veces avanza;
    gira(3);
    avanza;
    gira(3);
    avanza;
    gira(1);
    acomoda;
    gira-izquierda;
    avanza;
    gira(3);
    repetir 3 veces avanza;
    gira(3);
    avanza;
    gira(1);
    acomoda;
    cuenta(0);


        apagate;
    termina-ejecucion
finalizar-programa
