iniciar-programa

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 limpiar como mientras junto-a-zumbador hacer coge-zumbador;

define-nueva-instruccion llenarfila como
inicio
  este;
  mientras frente-libre hacer
    inicio
       limpiar;
       si no-junto-a-zumbador entonces deja-zumbador;
       avanza;
    fin;
  limpiar;
  deja-zumbador;
fin;

define-nueva-instruccion bajarRenglon como
inicio
  oeste;
  mientras izquierda-bloqueada y frente-libre hacer avanza;
  si izquierda-libre entonces
    inicio
      sur;
      avanza;
      oeste;
      mientras frente-libre hacer avanza;
      este;
    fin;
fin;

define-nueva-instruccion copia(n) como
inicio
  si junto-a-zumbador entonces
    inicio
      coge-zumbador;
      copia(sucede(n))
    fin
    sino inicio
       repetir n veces deja-zumbador;
       gira-izquierda;
       gira-izquierda;
       avanza;
       repetir n veces deja-zumbador;
    fin;

fin;

define-nueva-instruccion sumar como
inicio
   mientras frente-libre hacer
     inicio
       limpiar;
       oeste;
       si frente-libre entonces
         inicio
           avanza;
           copia(0);
         fin;
       norte;
       si frente-libre entonces
         inicio
           avanza;
           copia(0);
         fin;
       este;
       si frente-libre entonces avanza;
     fin;
   limpiar;
       oeste;
       si frente-libre entonces
         inicio
           avanza;
           copia(0);
         fin;
       norte;
       si frente-libre entonces
         inicio
           avanza;
           copia(0);
         fin;
       este;
       si frente-libre entonces avanza;
fin;

    inicia-ejecucion
      llenarfila;
       mientras orientado-al-este hacer
         inicio
            bajarRenglon;
            si orientado-al-este entonces sumar;
         fin;
        apagate;
    termina-ejecucion
finalizar-programa
