iniciar-programa
define-nueva-instruccion norte como inicio
   mientras no-orientado-al-norte hacer gira-izquierda;
fin;
define-nueva-instruccion sur como inicio
   mientras no-orientado-al-sur hacer gira-izquierda;
fin;
define-nueva-instruccion este como inicio
   mientras no-orientado-al-este hacer gira-izquierda;
fin;
define-nueva-instruccion oeste como inicio
   mientras no-orientado-al-oeste hacer gira-izquierda;
fin;
define-nueva-instruccion iniciar como inicio
    oeste;
    mientras frente-libre hacer avanza;
    sur;
    mientras frente-libre hacer avanza;
    norte;
fin;

define-nueva-instruccion diagonal2 como inicio
   oeste;
   mientras frente-libre hacer avanza;
   sur;
   mientras algun-zumbador-en-la-mochila hacer inicio
      si no-junto-a-zumbador entonces deja-zumbador;
      si frente-libre entonces avanza;
      este;
      si frente-libre entonces avanza;
      sur;
      si frente-bloqueado y orientado-al-sur y izquierda-bloqueada entonces inicio
          si no-junto-a-zumbador entonces deja-zumbador;
          apagate;
          fin;
   fin;
fin;

define-nueva-instruccion diagonal1 como inicio
   mientras algun-zumbador-en-la-mochila hacer inicio
       si no-junto-a-zumbador entonces deja-zumbador;
       si frente-libre entonces avanza;
       este;
       si frente-libre entonces avanza;
       norte;
       si frente-bloqueado y orientado-al-norte y junto-a-zumbador entonces diagonal2;
   fin;
fin;

    inicia-ejecucion
    iniciar;
    diagonal1;

        apagate;
    termina-ejecucion
finalizar-programa
