iniciar-programa
    define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;
    define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
    define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
    define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
    define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;

    define-nueva-instruccion ir11 como inicio
      mientras no-orientado-al-sur hacer gira(1);
      mientras frente-libre hacer avanza;
      gira(3);
      mientras frente-libre hacer avanza;
      gira(3);
    fin;

    define-nueva-instruccion ir-al-tendedero como inicio
      ir11;
      repetir 5 veces avanza;
      gira(3);
    fin;

    define-nueva-instruccion compara2(n) como inicio
      si junto-a-zumbador y no si-es-cero(n) entonces inicio
        coge-zumbador;
        compara2(precede(n));
        si junto-a-zumbador entonces
        coge-zumbador;
      fin sino inicio
        si no junto-a-zumbador y si-es-cero(n) entonces inicio
          mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
        fin sino inicio
          mientras junto-a-zumbador hacer coge-zumbador;
          deja-zumbador;
        fin;
      fin;
    fin;

    define-nueva-instruccion coge-color(n) como inicio
      si junto-a-zumbador entonces inicio
        coge-zumbador;
        coge-color(sucede(n));
      fin sino inicio
        repetir 4 veces avanza;
        gira(3);
        mientras frente-libre hacer inicio
          compara2(n);
          avanza;
        fin;
        compara2(n);
      fin;
    fin;

    define-nueva-instruccion mide2(n) como inicio
      si junto-a-zumbador entonces inicio
        mientras junto-a-zumbador hacer coge-zumbador;
        si frente-libre entonces avanza;
        mide2(sucede(n));
      fin sino inicio
        ir-al-tendedero;
        gira(3);
        avanza;
        gira(1);
        mientras junto-a-zumbador hacer avanza;
        repetir n veces deja-zumbador;
        ir-al-tendedero;
      fin;
    fin;

    define-nueva-instruccion mide como inicio
      mientras frente-libre hacer inicio
        si junto-a-zumbador entonces mide2(0);
        avanza;
      fin;
      mide2(0);
    fin;

    define-nueva-instruccion libera como inicio
      ir11;
      gira(3);
      repetir 2 veces avanza;
      mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
      ir-al-tendedero;
      gira(3);
      avanza;
      gira(1);
    fin;

    define-nueva-instruccion compara3(n) como inicio
      si junto-a-zumbador y no si-es-cero(n) entonces inicio
        coge-zumbador;
        compara3(precede(N));
        deja-zumbador;
      fin sino inicio
        si no-junto-a-zumbador entonces inicio
          gira(2);
          avanza;
        fin;
      fin;
    fin;

    define-nueva-instruccion compara(n) como inicio
      si junto-a-zumbador entonces inicio
        coge-zumbador;
        compara(sucede(n));
        deja-zumbador;
      fin sino inicio
        avanza;
        compara3(n);
        si orientado-al-este entonces inicio
          oeste;
          avanza;
        fin sino inicio
          este;
          avanza;
        fin;
      fin;
    fin;

    define-nueva-instruccion cuenta(n) como inicio
      si junto-a-zumbador entonces inicio
        avanza;
        cuenta(sucede(n));
      fin sino inicio
        libera;
        repetir n veces inicio
          repetir precede(n) veces inicio
            compara(0);
            si orientado-al-oeste entonces inicio
              este;
              avanza;
            fin;
          fin;
          libera;
        fin;
      fin;
    fin;


    inicia-ejecucion
        ir11;
        si derecha-libre entonces inicio
          avanza;
          coge-color(0);
          ir-al-tendedero;
          mide;
          libera;
          cuenta(0);
          mientras junto-a-zumbador hacer avanza;
          gira(2);
          mientras no-junto-a-zumbador y frente-libre hacer avanza;
          si junto-a-zumbador entonces inicio
            mientras junto-a-zumbador hacer coge-zumbador;
            ir11;
          fin sino inicio
            apagate;
          fin;
          mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
        fin sino inicio
          avanza;
          coge-zumbador;
          gira(2);
          avanza;
          deja-zumbador;
          apagate;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
