iniciar-programa
  define-nueva-instruccion gd como repetir 3 veces gira-izquierda;
  define-nueva-instruccion mv como repetir 2 veces gira-izquierda;
    inicia-ejecucion
    si frente-bloqueado y derecha-bloqueada y derecha-bloqueada entonces
    inicio
     mv;
     si frente-bloqueado entonces
     apagate;
    fin;
      mientras no orientado-al-norte hacer gira-izquierda;
      mientras frente-libre hacer avanza;
      gira-izquierda;
      repetir 2 veces deja-zumbador;
      si frente-libre entonces
      inicio
      avanza;
      mientras derecha-libre hacer
      inicio
       gd;
       avanza;
      fin;
      fin
      sino
      inicio
       repetir 3 veces
       si frente-bloqueado entonces
       gira-izquierda;
       si frente-libre entonces
       avanza;
       mientras derecha-libre hacer
       inicio
        gd;
        avanza;
       fin;
      fin;
      mientras derecha-bloqueada hacer
      inicio
       si izquierda-bloqueada y derecha-bloqueada y frente-bloqueado entonces
       si no junto-a-zumbador entonces deja-zumbador;
       gira-izquierda;
       mientras frente-libre hacer
       avanza;
       si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces
       si no junto-a-zumbador entonces deja-zumbador;
       mv;
       mientras frente-libre hacer avanza;
       gira-izquierda;
       si frente-libre entonces
       inicio
        avanza;
        mientras derecha-libre hacer
        inicio
         gd;
         avanza;
        fin;
       fin
       sino
       gira-izquierda;
       si junto-a-zumbador entonces
       inicio
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
         si frente-bloqueado y izquierda-bloqueada y derecha-bloqueada entonces
         apagate
         sino
         inicio
         coge-zumbador;
         apagate;
         fin;
        fin
        sino
        deja-zumbador;
       fin;
      fin;
        apagate;
    termina-ejecucion
finalizar-programa
