iniciar-programa
 define-nueva-instruccion gira(n) como
 inicio
      repetir n veces
         gira-izquierda;
fin;
   define-nueva-instruccion compara(n) como
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         si si-es-cero(n) entonces
            gira(1)
         sino
         compara(precede(n));
         deja-zumbador;
      fin;
   fin;
   define-nueva-instruccion cero como
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         si junto-a-zumbador entonces
         inicio
             deja-zumbador;
             sal-de-instruccion;
         fin;
      fin
      sino
         sal-de-instruccion;
      repetir 4 veces
      inicio
         si frente-libre entonces
            inicio
                avanza;
                cero;
                gira(2);
                avanza;
                gira(2);
            fin;
          gira-izquierda;
      fin;
   fin;
   define-nueva-instruccion inicia(n) como
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         si junto-a-zumbador entonces
         inicio
             coge-zumbador;
             si no-junto-a-zumbador entonces
               repetir n veces deja-zumbador
             sino
                repetir 2 veces deja-zumbador;
             sal-de-instruccion;
         fin
         sino
         inicio
             deja-zumbador;
             sal-de-instruccion;
          fin;
      fin
      sino
         deja-zumbador;
      repetir 4 veces
      inicio
         si frente-libre entonces
            inicio
                avanza;
                inicia(sucede(n));
                gira(2);
                avanza;
                gira(2);
            fin;
          gira-izquierda;
      fin;
   fin;
   define-nueva-instruccion g(n) como
   inicio
      repetir 4 veces
      inicio
         si orientado-al-norte entonces
         inicio
            compara(n);
            si no orientado-al-norte entonces
            inicio
               mientras junto-a-zumbador hacer
                  coge-zumbador;
                gira(3);
            fin;
          fin;
          gira-izquierda;
      fin;
   fin;

   define-nueva-instruccion dfs(n) como
   inicio
      si junto-a-zumbador entonces
      inicio
         g(n);
         si junto-a-zumbador entonces
            sal-de-instruccion;
      fin;
      repetir n veces
      deja-zumbador;
      repetir 4 veces
      inicio
         si frente-libre entonces
            inicio
                avanza;
                dfs(sucede(n));
                gira(2);
                avanza;
                gira(2);
            fin;
          gira-izquierda;
      fin;
     (* mientras junto-a-zumbador hacer
         coge-zumbador;
      deja-zumbador;*)
   fin;

    inicia-ejecucion
        si junto-a-zumbador entonces
        inicio
           mientras junto-a-zumbador hacer
              coge-zumbador;
           apagate;
        fin;
        inicia(1);
        cero;
        dfs(0);
       apagate;
    termina-ejecucion
finalizar-programa
