iniciar-programa
  define-nueva-instruccion suma como inicio
    repetir 10 veces inicio
      si junto-a-zumbador y orientado-al-sur entonces
        coge-zumbador
      sino inicio
        si orientado-al-sur entonces inicio
          repetir 10 veces
            si algun-zumbador-en-la-mochila entonces
              deja-zumbador
            sino
              mientras no-orientado-al-norte hacer
                gira-izquierda;
        fin;
        si orientado-al-sur entonces
          gira-izquierda;
        si orientado-al-este entonces
          coge-zumbador;
      fin;
    fin;
    si orientado-al-sur entonces
      suma;
    si no-orientado-al-sur entonces inicio
      mientras no-orientado-al-oeste hacer
        gira-izquierda;
      avanza;
      si junto-a-zumbador o algun-zumbador-en-la-mochila entonces inicio
        repetir 3 veces
          gira-izquierda;
        mientras junto-a-zumbador hacer
          avanza;
        gira-izquierda;
        gira-izquierda;
      fin
      sino
        apagate;
    fin;
    si algun-zumbador-en-la-mochila entonces
      deja-zumbador;
  fin;
  define-nueva-instruccion junta como inicio
    si junto-a-zumbador entonces inicio
      mientras frente-libre hacer inicio
        mientras junto-a-zumbador hacer
          coge-zumbador;
        avanza;
      fin;
      mientras algun-zumbador-en-la-mochila hacer
        deja-zumbador;
    fin;
    mientras junto-a-zumbador hacer inicio
      suma;
      si junto-a-zumbador entonces
        coge-zumbador;
      gira-izquierda;
      gira-izquierda;
      repetir 2 veces
        avanza;
      mientras algun-zumbador-en-la-mochila hacer
        deja-zumbador;
      gira-izquierda;
      gira-izquierda;
      repetir 2 veces
        avanza;
      si junto-a-zumbador entonces
        junta
      sino inicio
        avanza;
        si junto-a-zumbador entonces
          junta
        sino
          apagate;
      fin;
    fin;
  fin;
    inicia-ejecucion
      avanza;
      repetir 3 veces
        gira-izquierda;
      mientras no-junto-a-zumbador hacer
        avanza;
      mientras junto-a-zumbador y frente-libre hacer
        avanza;
      si frente-libre o no-junto-a-zumbador entonces inicio
        gira-izquierda;
        gira-izquierda;
        avanza;
      fin
      sino inicio
        si frente-bloqueado entonces
          gira-izquierda;                     
          gira-izquierda;
      fin;
      repetir 3 veces
        gira-izquierda;
      mientras junto-a-zumbador hacer
        avanza;
      gira-izquierda;
      gira-izquierda;
      avanza;
      junta;
        apagate;
    termina-ejecucion
finalizar-programa
