iniciar-programa

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

    define-nueva-instruccion gira (n) como inicio
      repetir n veces gira-izquierda;
    fin;

    define-nueva-instruccion toma-zumbadores como inicio
      gira (3);
      repetir 4 veces avanza;
      repetir 250 veces coge-zumbador;
    fin;

    define-nueva-instruccion cuenta como inicio
      si frente-libre entonces inicio
        avanza;
        cuenta;
        si orientado-al-este entonces gira (2);
        mientras frente-libre hacer avanza;
        deja-zumbador;
      fin;
    fin;

    define-nueva-instruccion cuenta3 (n) como inicio
     si junto-a-zumbador entonces inicio
       coge-zumbador;
       cuenta3 (sucede(n));
     fin
     sino inicio
       repetir 3 veces inicio
         si frente-libre entonces avanza;
       fin;
       repetir n veces inicio
         si junto-a-zumbador entonces coge-zumbador;
       fin;
       si junto-a-zumbador entonces inicio
         coge-zumbador;
         cuenta3 (sucede(n));
         si no-junto-a-zumbador entonces
           repetir n veces deja-zumbador;
       fin
       sino inicio
         mientras frente-libre hacer avanza;
         repetir n veces deja-zumbador;
       fin;
     fin;
    fin;

    define-nueva-instruccion cuenta1 (n) como inicio
      si junto-a-zumbador entonces inicio
        coge-zumbador;
        cuenta1 (sucede(n));
      fin
      sino inicio
        repetir 3 veces inicio
          repetir n veces deja-zumbador;
        fin;
      fin;
    fin;

    define-nueva-instruccion cuenta2 (n) como inicio
      si junto-a-zumbador entonces inicio
        coge-zumbador;
        cuenta2 (sucede(n));
      fin
      sino inicio
        repetir 2 veces inicio
          repetir n veces deja-zumbador;
        fin;
      fin;
    fin;

    inicia-ejecucion
       orientate;
       toma-zumbadores;
       gira (2);
       repetir 2 veces avanza;
       gira (3);
       repetir 2 veces avanza;
       gira (3);
       cuenta;
       gira (3);
       repetir 3 veces avanza;
       gira (3);
       repetir 2 veces avanza;
       cuenta;
       gira (1);
       cuenta1 (0);
       avanza;
       mientras no-junto-a-zumbador hacer avanza;
       cuenta2 (0);
       gira (2);
       avanza;
       mientras no-junto-a-zumbador hacer avanza;
       gira (2);
       cuenta3 (0);
        apagate;
    termina-ejecucion
finalizar-programa
