iniciar-programa
    define-nueva-instruccion carbon-copy como inicio
        mientras junto-a-zumbador hacer inicio
            coge-zumbador;
            avanza;
            deja-zumbador;
            repetir 2 veces gira-izquierda;
            avanza;
            repetir 2 veces gira-izquierda;
        fin;
    fin;
    define-nueva-instruccion menor-derecha(x) como inicio
        avanza;
        repetir 2 veces gira-izquierda;
        carbon-copy;
        avanza;
        repetir 2 veces gira-izquierda;
        repetir x veces deja-zumbador;
        deja-zumbador;
        avanza;
        mientras algun-zumbador-en-la-mochila hacer
            deja-zumbador;
        repetir 2 veces gira-izquierda;
        avanza;
    fin;
    define-nueva-instruccion menor-izquierda(x) como inicio
        avanza;
        repetir 2 veces gira-izquierda;
        repetir x veces deja-zumbador;
        avanza;
        mientras algun-zumbador-en-la-mochila hacer
            deja-zumbador;
        repetir 2 veces gira-izquierda;
        avanza;
    fin;
    define-nueva-instruccion volt como inicio
        mientras no-orientado-al-oeste hacer gira-izquierda;
        mientras frente-libre hacer
            avanza;
        repetir 2 veces gira-izquierda;
    fin;
    define-nueva-instruccion compara(x) como inicio
      si si-es-cero(x) entonces inicio
          si frente-libre entonces inicio
              avanza;
          fin
          sino inicio
              volt;
              sal-de-instruccion;
          fin;
          repetir 2 veces gira-izquierda;
          si no-junto-a-zumbador entonces inicio
              volt;
              sal-de-instruccion;
          fin
          sino inicio
              avanza;
              repetir 2 veces gira-izquierda;
          fin;
      fin;
      si junto-a-zumbador entonces inicio
          si junto-a-zumbador entonces inicio
              coge-zumbador;
              si no-junto-a-zumbador entonces inicio
                  menor-izquierda(x);
                  compara(0);
                  sal-de-instruccion;
              fin;
              avanza;
              repetir 2 veces gira-izquierda;
              si junto-a-zumbador entonces inicio
                  coge-zumbador;
                  si no-junto-a-zumbador entonces inicio
                      menor-derecha(x);
                      compara(0);
                      sal-de-instruccion;
                  fin;
                  avanza;
                  repetir 2 veces gira-izquierda;
                  compara(sucede(x));
                  sal-de-instruccion;
              fin
              sino inicio
                  menor-derecha(x);
                  compara(0);
                  sal-de-instruccion;
              fin;
          fin;
      fin
      sino inicio
          volt;
      fin;
    fin;
    define-nueva-instruccion nyan como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            nyan;
            gira-izquierda;
            avanza;
            mientras algun-zumbador-en-la-mochila hacer
                deja-zumbador;
            repetir 2 veces gira-izquierda;
            avanza;
            gira-izquierda;
            avanza;
            mientras no-junto-a-zumbador hacer
                avanza;
            compara(0);
        fin;
    fin;
    inicia-ejecucion
        mientras no-orientado-al-este hacer
            gira-izquierda;
        nyan;
        apagate;
    termina-ejecucion
finalizar-programa
