iniciar-programa
define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;
define-nueva-instruccion menor(n)como inicio
si frente-libre entonces inicio
avanza;
menor(sucede(n));
fin
sino inicio
gira(2);
mientras frente-libre hacer avanza;
gira(1);
repetir n veces inicio
si frente-libre entonces inicio
avanza;
fin
sino inicio
gira(2);
mientras frente-libre hacer avanza;
gira(2);
sal-de-instruccion;
fin;
fin;
gira(2);
mientras frente-libre hacer avanza;
gira(3);
fin;
fin;
define-nueva-instruccion centro(n) como inicio
si frente-libre entonces inicio
avanza;

si frente-bloqueado entonces inicio
gira(2);
mientras frente-libre hacer avanza;
gira(2);
repetir n veces avanza;

si orientado-al-norte entonces inicio
gira(3);
fin
sino inicio
gira(1);
fin;

repetir n veces avanza;
mientras no orientado-al-oeste hacer gira-izquierda;
sal-de-instruccion;
fin;

avanza;
centro(sucede(n));
fin
sino inicio
gira(2);
mientras frente-libre hacer avanza;
gira(2);

repetir n veces avanza;

si orientado-al-norte entonces inicio
gira(3);
fin
sino gira(1);

repetir n veces avanza;
mientras no orientado-al-oeste hacer gira-izquierda;
fin;
fin;

define-nueva-instruccion cubos(n) como inicio
mientras no junto-a-zumbador hacer inicio
repetir n veces deja-zumbador;
si frente-bloqueado entonces apagate;
avanza;
gira(1);
avanza;
si junto-a-zumbador entonces inicio
gira(2);
avanza;
gira(1);
fin
sino inicio
gira(2);
avanza;
gira(2);
si orientado-al-sur entonces
cubos(sucede(n));
fin;
fin;
fin;

    inicia-ejecucion
    mientras no orientado-al-norte hacer gira-izquierda;
    menor(0);
    centro(0);
    deja-zumbador;
    si frente-bloqueado entonces apagate;
    avanza;
    gira(1);
    cubos(2);


        apagate;
    termina-ejecucion
finalizar-programa
