iniciar-programa
    define-nueva-instruccion gira(g) como inicio
       repetir g veces gira-izquierda;
    fin;
    define-nueva-instruccion verifika(v) como inicio
       si junto-a-zumbador y no(si-es-cero(v)) entonces inicio
          coge-zumbador;
          verifika(precede(v));
          deja-zumbador;
       fin sino inicio
          si no-junto-a-zumbador y no(si-es-cero(v)) entonces inicio
             gira(3);
          fin;
       fin;
    fin;
    define-nueva-instruccion dividiendo(d) como inicio
       si junto-a-zumbador entonces verifika(d);
       si junto-a-zumbador y no(si-es-cero(d)) y no-orientado-al-sur entonces inicio
          repetir d veces coge-zumbador;
          dividiendo(d);
          si orientado-al-sur entonces repetir d veces deja-zumbador;
       fin;
    fin;
    define-nueva-instruccion cheka(c) como inicio
       si junto-a-zumbador y no(si-es-cero(c)) entonces inicio
          coge-zumbador;
          cheka(precede(c));
          deja-zumbador;
       fin sino inicio
          si no-junto-a-zumbador entonces inicio
             gira(3);
          fin;
       fin;
    fin;
    define-nueva-instruccion divide(d) como inicio
       si junto-a-zumbador entonces inicio
          cheka(d);
          si no-orientado-al-sur entonces inicio
             mientras junto-a-zumbador y no-orientado-al-sur hacer dividiendo(d);
             si no-orientado-al-sur entonces inicio
                deja-zumbador;
             fin sino inicio
                gira-izquierda;
             fin;
          fin sino inicio
             gira-izquierda;
          fin;
          avanza;
          divide(d);
       fin sino inicio
          gira(2);
          mientras frente-libre hacer avanza;
          gira(3);
          avanza;
          gira(3);
          si junto-a-zumbador entonces inicio
             divide(d);
          fin sino inicio
             si no-junto-a-zumbador entonces inicio
                mientras no-orientado-al-sur hacer gira-izquierda;
                mientras frente-libre hacer avanza;
                gira-izquierda;
                si no(si-es-cero(precede(precede(precede(precede(precede(precede(precede(d))))))))) entonces inicio
                   divide(sucede(d));
                fin;
             fin;
          fin;
       fin;
    fin;
    define-nueva-instruccion izquierda como inicio
       si frente-libre entonces inicio
          avanza;
          izquierda;
          avanza;
       fin sino inicio
          gira(2);
          divide(2);
       fin;
    fin;
    define-nueva-instruccion abajo como inicio
       si no-orientado-al-sur entonces inicio
          gira-izquierda;
          abajo;
          gira-izquierda;
       fin sino inicio
          si frente-libre entonces inicio
             avanza;
             abajo;
             avanza;
          fin sino inicio
             gira(3);
             izquierda;
             gira-izquierda;
          fin;
       fin;
    fin;
    define-nueva-instruccion camino como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          si junto-a-zumbador entonces inicio
             mientras junto-a-zumbador hacer coge-zumbador;
             deja-zumbador;
             si frente-libre entonces inicio
                avanza;
                camino;
                gira(2);
                avanza;
                gira(2);
             fin;
             gira-izquierda;
             si frente-libre entonces inicio
                avanza;
                camino;
                gira(2);
                avanza;
                gira(2);
             fin;
             gira(2);
             si frente-libre entonces inicio
                avanza;
                camino;
                gira(2);
                avanza;
                gira(2);
             fin;
             gira(3);
             si frente-libre entonces inicio
                avanza;
                si junto-a-zumbador entonces inicio
                   coge-zumbador;
                   si junto-a-zumbador entonces inicio
                      camino;
                   fin sino inicio
                      gira(2);
                      avanza;
                      apagate;
                   fin;
                fin;
                gira(2);
                avanza;
                gira(2);
             fin;
          fin sino inicio
             deja-zumbador;
          fin;
       fin;
    fin;
    inicia-ejecucion
        abajo;
        camino;
        apagate;
    termina-ejecucion
finalizar-programa
