iniciar-programa
    define-nueva-instruccion gira(t) como inicio repetir t veces gira-izquierda fin;
    define-nueva-instruccion camina(r) como inicio repetir r veces avanza fin;
    define-nueva-instruccion ubica como inicio
        camina(2);
        gira(3);
        camina(11);
        gira(3);
    fin;
    define-nueva-instruccion cambia como inicio
        gira(3);
        si frente-libre entonces inicio
        camina(1);
        gira(3);
        camina(2);
        gira(2);
        fin;
    fin;
    define-nueva-instruccion sobra(j) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            sobra(sucede(j));
        fin sino inicio
            gira(2);
            camina(1);
            repetir j veces deja-zumbador;
            gira(3);
            si frente-libre entonces inicio
                camina(1);
            fin sino inicio
                apagate;
            fin;
        fin;
    fin;
    define-nueva-instruccion quita(a) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            quita(sucede(a));
        fin sino inicio
            camina(1);
            repetir a veces coge-zumbador;
            sobra(0);
        fin;
    fin;
    define-nueva-instruccion suma(x) como inicio
      si no si-es-cero(x) entonces inicio
          si junto-a-zumbador entonces inicio
              coge-zumbador;
              suma(precede(x));
           fin sino inicio
               repetir x veces deja-zumbador;
               gira(3);
               quita(0);
           fin;
      fin sino inicio
            camina(1);
            deja-zumbador;
            gira(2);
            camina(1);
            gira(2);
        fin;
    fin;
    define-nueva-instruccion cuenta(x) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            cuenta(sucede(x));
        fin sino inicio
            camina(2);
            gira(1);
            repetir 11 veces inicio
                repetir x veces deja-zumbador;
                si frente-libre entonces avanza;
            fin;
            repetir x veces deja-zumbador;
            gira(3);
            camina(1);
            gira(3);
            mientras frente-libre hacer inicio
                si junto-a-zumbador entonces inicio
                    suma(x);
                fin sino inicio
                    si frente-libre entonces inicio
                        camina(1);
                    fin sino inicio
                    fin;
                fin;
            fin;
        fin;
    fin;
    define-nueva-instruccion junta(zum) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            junta(sucede(zum));
        fin sino inicio
            si no-junto-a-zumbador y frente-libre entonces inicio
                avanza;
                junta(zum);
            fin;
            si frente-bloqueado entonces inicio
                repetir zum veces deja-zumbador;
                cambia;
            fin;
        fin;
    fin;
    inicia-ejecucion
        ubica;
        mientras derecha-libre hacer junta(0);
        gira(2);
        camina(1);
        gira(2);
        cuenta(0);
        apagate;
    termina-ejecucion
finalizar-programa
