iniciar-programa
define-nueva-instruccion gira(n) como INICIO
    repetir n veces gira-izquierda;
FIN;


define-nueva-instruccion acomoda como INICIO
    si orientado-al-este y algun-zumbador-en-la-mochila entonces INICIO
        gira(1);
        avanza;
        mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
        gira(2);
        avanza;
        gira(3);
    FIN;
    mientras junto-a-zumbador y orientado-al-oeste hacer INICIO
       mientras junto-a-zumbador hacer coge-zumbador;
       mientras frente-libre y no-junto-a-zumbador hacer avanza;
       si junto-a-zumbador entonces INICIO
          gira(2);
          si frente-libre entonces avanza sino apagate;
          mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
          si frente-libre entonces avanza sino apagate;
          mientras no-junto-a-zumbador y frente-libre hacer avanza;
          si no-junto-a-zumbador entonces apagate sino INICIO
              gira(2);
          FIN;
       FIN
       sino INICIO
          gira(2);
          mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
          avanza;
          mientras no-junto-a-zumbador y frente-libre hacer avanza;
          si no-junto-a-zumbador entonces apagate sino INICIO
              gira(2);
          FIN;
       FIN;
    FIN;
  FIN;

define-nueva-instruccion atiende(kilos) como INICIO
   si si-es-cero(kilos) entonces
   INICIO
        acomoda;
    FIN
   sino INICIO
   si junto-a-zumbador entonces INICIO
    si junto-a-zumbador entonces INICIO
        coge-zumbador;
        si no-junto-a-zumbador entonces INICIO
        si frente-libre entonces avanza;
    FIN;
        atiende(precede(kilos));
    FIN;
    FIN;
FIN;
FIN;

define-nueva-instruccion cuentakilos(kilos) como INICIO
    si junto-a-zumbador y orientado-al-este y derecha-bloqueada entonces INICIO
            gira(1);
        avanza;
        gira(2);
     FIN;
    si algun-zumbador-en-la-mochila entonces INICIO
    deja-zumbador;
    cuentakilos(sucede(kilos));
    FIN;
    si orientado-al-sur entonces INICIO
        avanza;
        gira(1);
        atiende(kilos);
    FIN;
FIN;


    inicia-ejecucion
    si ningun-zumbador-en-la-mochila entonces apagate;
        cuentakilos(0);


        apagate;
    termina-ejecucion
finalizar-programa
