iniciar-programa
 Define-nueva-instruccion Gira(n) Como
   Repetir n veces Gira-izquierda;

 Define-nueva-instruccion Esquina Como inicio
   Mientras no-orientado-al-oeste hacer
     Gira-izquierda;
   Mientras Frente-libre hacer  avanza;
       Gira(3);
    Mientras frente-libre hacer avanza;
 Fin;
 Define-nueva-instruccion regresa Como inicio
    Gira(2);
    avanza;
 Fin;
  Define-nueva-instruccion Recoge-VitaminasRequeridas  Como inicio
     Gira(1);
     Mientras junto-a-zumbador y Frente-libre hacer
       avanza;
     Regresa;
     Mientras junto-a-zumbador hacer
      coge-zumbador;
     Mientras frente-libre hacer  avanza;
  FIn;
 Define-nueva-instruccion Mayor Como inicio
   Mientras  junto-a-zumbador hacer inicio
       Coge-zumbador;
       Regresa;
       Si junto-a-zumbador entonces inicio
          coge-zumbador;
          Regresa;
       Fin
       sino
        Inicio
           Regresa;
           Deja-zumbador;
           Regresa;
           Gira-izquierda;
           Sal-de-instruccion;
        Fin;
   Fin;
 Fin;
 Define-nueva-instruccion RecorreMontana Como inicio
    Esquina;
     Mientras algun-zumbador-en-la-mochila hacer
     Deja-zumbador;
    REgresa;
    Mientras Frente-libre hacer  avanza;
     Gira(1);
    Mientras no-junto-a-zumbador y Frente-libre  hacer
      avanza;
    Si junto-a-zumbador entonces inicio
       Mientras frente-libre y junto-a-zumbador hacer inicio
        Recoge-vitaminasrequeridas;
        Gira(1);
        Avanza;
        Mientras frente-libre y no-junto-a-zumbador hacer
         avanza;
       Fin;
      Si junto-a-zumbador y frente-bloqueado entonces
        recoge-vitaminasRequeridas;
    Fin;
    Esquina;
    Regresa;
    Mientras algun-zumbador-en-la-mochila hacer
     Deja-zumbador;
    Regresa;
    Mayor;
 Fin;
 define-nueva-instruccion VitaminasSobrantes como inicio
   Mientras Algun-zumbador-en-la-mochila hacer
     Deja-zumbador;
      gira(1);
      avanza;
       Mientras junto-a-zumbador hacer
        coge-zumbador;
        Regresa;
         Mientras Frente-libre hacer avanza;
         Gira(1);
          Mientras Frente-libre hacer avanza;
          Gira(1);
          Mientras Frente-libre y  Derecha-bloqueada hacer
           avanza;
            Gira(3);
             avanza;
              Mientras Algun-zumbador-en-la-mochila hacer
               deja-zumbador;
 fin;

  Define-nueva-instruccion Pasos(dados) como inicio
   Si frente-libre entonces inicio
     avanza;
     Pasos(sucede(dados));
 Fin
  sino
   inicio
      RecorreMontana;
           Si orientado-al-este entonces inicio
        VitaminasSobrantes;
     Fin
     Sino
      inicio
       Gira(2);
        Mientras Algun-zumbador-en-la-mochila hacer
         Deja-zumbador;
         avanza;
          Mientras junto-a-zumbador hacer
           coge-zumbador;
             Mientras Frente-libre hacer avanza;
             Gira(1);
             Mientras Frente-libre hacer
               avanza;
               gira(2);
                Repetir dados veces
                 avanza;
                   Mientras Algun-zumbador-en-la-mochila hacer
                    Deja-zumbador;

      Fin;
   Fin;
 Fin;
    inicia-ejecucion
    PAsos(0);

        apagate;
    termina-ejecucion
finalizar-programa
 