iniciar-programa
define-nueva-instruccion gira(n) como
 inicio
  repetir n veces 
   gira-izquierda;
fin;

define-nueva-instruccion baja como
 inicio
  gira(2);
  mientras frente-libre hacer avanza;
  gira(1);
  avanza;
  gira(1);
  fin;

define-nueva-instruccion hansel(n)como
 si no(derecha-bloqueada y frente-bloqueado) entonces
  inicio
   si frente-libre entonces
    inicio
     avanza;
    fin
   sino
    inicio
     baja;
    fin;
   hansel(sucede(n));
   repetir n veces 
    deja-zumbador;
   si frente-bloqueado entonces
    inicio
     gira(1);
     avanza;
    fin
   sino
    inicio
     avanza;
     si junto-a-zumbador entonces
      inicio
       gira(2);
       avanza;
       gira(3);
       avanza;
      fin;
    fin;
  fin
 sino
  inicio
   gira(1);
   mientras frente-libre hacer avanza;
    gira(1);
  fin;
    inicia-ejecucion
     mientras no-orientado-al-sur hacer 
      gira-izquierda;
     mientras frente-libre hacer avanza;
      gira(3);
     mientras frente-libre hacer avanza;
      gira(3);
     hansel(2);
     deja-zumbador;
     mientras no-orientado-al-este hacer  gira-izquierda;
        apagate;
    termina-ejecucion
finalizar-programa
