iniciar-programa
define-nueva-instruccion gira(n) como
inicio
   repetir n veces
      gira-izquierda;
fin;
define-nueva-instruccion regresa1 como
inicio
   gira(1);
   avanza;
   avanza;
   gira(1);
   mientras frente-libre hacer
       avanza;
    gira(2);
fin;
define-nueva-instruccion regresa como
inicio
   gira(1);
   avanza;
   gira(1);
   mientras frente-libre hacer
       avanza;
    gira(2);
fin;
define-nueva-instruccion dfs como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      dfs;
      repetir 4 veces
      inicio
         deja-zumbador;
         avanza;
         gira(1);
      fin;
   fin
   sino
   si frente-libre entonces
   inicio
      avanza;
      dfs;
      si frente-libre entonces
         avanza;
      si frente-libre entonces
         avanza;
   fin
   sino
   inicio
     si izquierda-libre entonces
     inicio
         regresa;
         dfs;
         regresa1;
      fin
      sino
      inicio
        gira(3);
        mientras frente-libre hacer
           avanza;
        gira(3);
        mientras frente-libre hacer
           avanza;
        gira(1);
        mientras derecha-bloqueada hacer
           avanza;
        gira(3);
        avanza;
        mientras derecha-bloqueada hacer
           avanza;
        gira(3);
        avanza;
        gira(3);
        mientras frente-libre hacer
           avanza;
        gira(1);
        mientras frente-libre hacer
           avanza;
         gira(1);
     fin;
   fin;
fin;

inicia-ejecucion
  mientras no-orientado-al-este hacer
     gira-izquierda;
  avanza;
  gira(2);
  dfs;
  apagate;
  termina-ejecucion
finalizar-programa
