iniciar-programa
define-nueva-instruccion gira(n) como inicio
   repetir n veces gira-izquierda;
   fin;
define-nueva-instruccion retroceso(n) como inicio
   si si-es-cero (n) entonces inicio
      repetir 3 veces deja-zumbador;
      apagate;
      fin;
   si junto-a-zumbador entonces inicio
      coge-zumbador;
      retroceso(precede(n));
      deja-zumbador;
      fin;
   fin;
define-nueva-instruccion novia(n) como inicio
   si no si-es-cero(n) entonces inicio
      si junto-a-zumbador entonces retroceso(n);
      si frente-libre entonces inicio
         avanza;
         novia(n);
         fin;
      si frente-bloqueado y derecha-libre entonces inicio
         gira(2);
         mientras frente-libre hacer avanza;
         gira(1);
         avanza;
         gira(1);
         fin;
      fin;
   novia(n);
   fin;
    inicia-ejecucion
    mientras no-orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira(3);
    mientras frente-libre hacer avanza;
    gira(3);
    novia(3);
        apagate;
    termina-ejecucion
finalizar-programa
