iniciar-programa
define-nueva-instruccion norte como inicio
    mientras no-orientado-al-norte hacer inicio
        gira-izquierda;
    fin;
fin;

define-nueva-instruccion sur como inicio
    mientras no-orientado-al-sur hacer inicio
        gira-izquierda;
    fin;
fin;

define-nueva-instruccion este como inicio
    mientras no-orientado-al-este hacer inicio
        gira-izquierda;
    fin;
fin;

define-nueva-instruccion oeste como inicio
    mientras no-orientado-al-oeste hacer inicio
        gira-izquierda;
    fin;
fin;

define-nueva-instruccion recreo como inicio
    si frente-libre entonces inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          si junto-a-zumbador entonces inicio
             coge-zumbador;
             avanza;
             recreo;
             si frente-libre entonces inicio
                 deja-zumbador;
                 deja-zumbador;
             fin
             sino inicio
                 este;
                 mientras frente-libre hacer inicio
                     avanza;
                 fin;
                 oeste;
                 deja-zumbador;
                 deja-zumbador;
             fin;
          fin
          sino inicio
              avanza;
              recreo;
              si frente-libre entonces inicio
                  oeste;
                  mientras frente-libre hacer inicio
                      avanza;
                  fin;
                  deja-zumbador;
              fin
              sino inicio
                  deja-zumbador;
              fin;
          fin;
       fin
       sino inicio
           avanza;
           recreo;
       fin;
    fin
    sino inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
               coge-zumbador;
               recreo;
               si frente-libre entonces inicio
                   deja-zumbador;
                   deja-zumbador;
               fin
               sino inicio
                   este;
                   mientras frente-libre hacer inicio
                       avanza;
                   fin;
                   deja-zumbador;
                   deja-zumbador;
                   oeste;
               fin;
            fin
            sino inicio
                recreo;
                si frente-libre entonces inicio
                    oeste;
                    mientras frente-libre hacer inicio
                        avanza;
                    fin;
                    deja-zumbador;
                fin
                sino inicio
                    deja-zumbador;
                fin;
            fin;
        fin
        sino inicio
           oeste;
           mientras frente-libre hacer inicio
               avanza;
           fin;
        fin;
    fin;
fin;

define-nueva-instruccion karelitos como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        karelitos;
        deja-zumbador;
        avanza;
    fin;
fin;

define-nueva-instruccion karelitas como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        coge-zumbador;
        karelitas;
        deja-zumbador;
        deja-zumbador;
        avanza;
    fin;
fin;

    inicia-ejecucion
    oeste;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    este;
    recreo;
    oeste;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    este;
    karelitos;
    este;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    oeste;
    karelitas;
        apagate;
    termina-ejecucion
finalizar-programa
