iniciar-programa
define-nueva-instruccion corta-vigas como
inicio
si frente-libre entonces
inicio
avanza;
si junto-a-zumbador entonces
coge-zumbador;
corta-vigas;
avanza;
si junto-a-zumbador entonces
coge-zumbador;
fin
sino
inicio
mientras no-orientado-al-norte hacer
gira-izquierda;
fin;
fin;




define-nueva-instruccion revisa-vigas como
inicio
 mientras frente-libre hacer
 inicio
mientras no orientado-al-este hacer
gira-izquierda;
si frente-libre entonces
avanza;
mientras no-junto-a-zumbador y frente-libre hacer
 avanza;
    si junto-a-zumbador entonces
     inicio
     mientras no-orientado-al-norte hacer
     gira-izquierda;
     si frente-libre entonces
     inicio
      avanza;
      si no-junto-a-zumbador entonces
        inicio
         mientras no-orientado-al-sur hacer
         gira-izquierda;
         avanza;
          corta-vigas;
          mientras no-orientado-al-este hacer
          gira-izquierda;
         fin
         sino
         inicio
         mientras no-orientado-al-sur hacer
         gira-izquierda;
         avanza;
        fin;
        fin;
        si frente-bloqueado entonces
        inicio
        mientras no-orientado-al-sur hacer
        gira-izquierda;
        corta-vigas;
        fin;
        fin;
        mientras no-orientado-al-este hacer
        gira-izquierda;
        fin;


mientras no-orientado-al-sur hacer
gira-izquierda;
mientras frente-libre hacer
avanza;
mientras no-orientado-al-oeste hacer
gira-izquierda;
fin;


define-nueva-instruccion revisa-altura como
inicio
mientras no-orientado-al-norte hacer
gira-izquierda;
mientras junto-a-zumbador y frente-libre hacer
avanza;
si frente-bloqueado y junto-a-zumbador entonces
inicio
mientras no-orientado-al-este hacer
gira-izquierda;
fin
sino
inicio
mientras no-orientado-al-sur hacer
gira-izquierda;
si frente-libre entonces
avanza;
fin;
mientras no-orientado-al-este hacer
gira-izquierda;
si junto-a-zumbador entonces
inicio
revisa-vigas;
fin
sino
inicio
mientras no-orientado-al-este hacer
gira-izquierda;
mientras frente-libre hacer
avanza;
mientras no-orientado-al-oeste hacer
gira-izquierda;
fin;
fin;

define-nueva-instruccion cuenta(n) como
si frente-libre entonces
inicio
avanza;
cuenta(sucede(n));
mientras no-orientado-al-oeste hacer
gira-izquierda;
repetir  n veces
avanza;
revisa-altura;
fin;

define-nueva-instruccion cuenta-vigas como
inicio
    si junto-a-zumbador y frente-libre entonces
    inicio
    coge-zumbador;
    avanza;
    cuenta-vigas;
    deja-zumbador;
    fin;
    si no-junto-a-zumbador y frente-libre entonces
    inicio
    avanza;
    cuenta-vigas;
    fin;
fin;
    inicia-ejecucion
mientras no-orientado-al-oeste hacer
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    mientras no-orientado-al-este hacer
    gira-izquierda;
    cuenta(0);
    cuenta-vigas;

         apagate;
    termina-ejecucion
finalizar-programa
