iniciar-programa define-nueva-instruccion giraDerecha como inicio gira-izquierda; gira-izquierda; gira-izquierda; fin; define-nueva-instruccion apaga como inicio mientras no-orientado-al-sur hacer gira-izquierda; mientras frente-libre hacer avanza; mientras no-orientado-al-oeste hacer gira-izquierda; mientras frente-libre hacer avanza; giraDerecha; avanza; giraDerecha; mientras junto-a-zumbador hacer coge-zumbador; mientras frente-libre hacer inicio avanza; mientras junto-a-zumbador hacer coge-zumbador; fin; gira-izquierda; avanza; gira-izquierda; mientras junto-a-zumbador hacer coge-zumbador; mientras frente-libre hacer inicio avanza; mientras junto-a-zumbador hacer coge-zumbador; fin; apagate; fin; define-nueva-instruccion mediaVuelta como inicio gira-izquierda; gira-izquierda; fin; define-nueva-instruccion dejaMuchos(cz) como inicio si no si-es-cero(cz) entonces inicio deja-zumbador; dejaMuchos(precede(cz)); fin; fin; define-nueva-instruccion dejaFila3 como inicio giraDerecha; avanza; avanza; deja-zumbador; mediaVuelta; avanza; avanza; giraDerecha; fin; define-nueva-instruccion veAlFinal como inicio giraDerecha; mientras frente-libre y junto-a-zumbador hacer avanza; si no-junto-a-zumbador entonces inicio mediaVuelta; avanza; fin sino mediaVuelta; fin; define-nueva-instruccion checaCuantos(hay) como inicio si si-es-cero(hay) y no-junto-a-zumbador entonces inicio dejaFila3; fin sino inicio si no si-es-cero(hay) y junto-a-zumbador entonces inicio coge-zumbador; checaCuantos(precede(hay)); deja-zumbador; fin; fin; fin; define-nueva-instruccion comparaConUltimo(nu) como inicio si junto-a-zumbador entonces inicio coge-zumbador; comparaConUltimo(sucede(nu)); fin sino inicio dejaMuchos(nu); mientras frente-libre hacer inicio avanza; checaCuantos(nu); fin; fin; fin; define-nueva-instruccion cogeYCopia(z1) como inicio si junto-a-zumbador entonces inicio coge-zumbador; cogeYCopia(sucede(z1)); fin sino inicio gira-izquierda; dejaMuchos(z1); avanza; dejaMuchos(z1); mediaVuelta; avanza; gira-izquierda; fin; fin; define-nueva-instruccion copiaFila1 como inicio mientras junto-a-zumbador hacer inicio cogeYCopia(0); si frente-libre entonces avanza fin; fin; define-nueva-instruccion preparaPosiblePatron como inicio avanza; avanza; giraDerecha; mientras no-junto-a-zumbador y frente-libre hacer inicio avanza; fin; si junto-a-zumbador entonces inicio deja-zumbador; mediaVuelta; mientras frente-libre hacer avanza; gira-izquierda; avanza; gira-izquierda; fin sino apaga; fin; define-nueva-instruccion cogeSiPuedes(cuantos) como inicio si no si-es-cero(cuantos) entonces inicio si junto-a-zumbador entonces inicio coge-zumbador; cogeSiPuedes(precede(cuantos)); fin sino inicio mientras no-orientado-al-sur hacer gira-izquierda; fin; fin; fin; define-nueva-instruccion limpiaTodo como inicio mientras no-orientado-al-sur hacer gira-izquierda; mientras frente-libre hacer avanza; giraDerecha; mientras frente-libre hacer avanza; giraDerecha; avanza; giraDerecha; mientras frente-libre y junto-a-zumbador hacer inicio mientras junto-a-zumbador hacer coge-zumbador; avanza; fin; mediaVuelta; mientras frente-libre hacer avanza; giraDerecha; avanza; giraDerecha; mientras frente-libre y no-junto-a-zumbador hacer avanza; si junto-a-zumbador entonces inicio mientras junto-a-zumbador hacer coge-zumbador; giraDerecha; avanza; avanza; giraDerecha; mientras frente-libre hacer avanza; mediaVuelta; copiaFila1; mediaVuelta; mientras frente-libre hacer avanza; gira-izquierda; fin sino apaga; fin; define-nueva-instruccion cogeParaComer(llevo) como inicio si junto-a-zumbador entonces inicio coge-zumbador; cogeParaComer(sucede(llevo)); fin sino inicio dejaMuchos(llevo); gira-izquierda; avanza; si junto-a-zumbador entonces inicio mediaVuelta; avanza; gira-izquierda; mientras frente-libre y junto-a-zumbador hacer avanza; mediaVuelta; si no-junto-a-zumbador entonces avanza; cogeSiPuedes(llevo); si junto-a-zumbador o orientado-al-sur entonces inicio limpiaTodo; fin sino avanza; fin sino inicio mediaVuelta; avanza; gira-izquierda; si frente-libre entonces inicio avanza; cogeParaComer(0); si no-orientado-al-sur entonces inicio cogeSiPuedes(llevo); si junto-a-zumbador o orientado-al-sur entonces inicio limpiaTodo; fin sino avanza; fin; fin sino inicio apaga; fin; fin; fin; fin; define-nueva-instruccion intentaComer como inicio cogeParaComer(0); fin; inicia-ejecucion veAlFinal; comparaConUltimo(0); mediaVuelta; copiaFila1; mediaVuelta; mientras frente-libre hacer avanza; giraDerecha; mientras junto-a-zumbador hacer inicio preparaPosiblePatron; intentaComer; si orientado-al-sur entonces mediaVuelta sino inicio giraDerecha; avanza; si junto-a-zumbador entonces inicio coge-zumbador; si junto-a-zumbador entonces inicio giraDerecha; avanza; giraDerecha; avanza; avanza; gira-izquierda; mientras frente-libre hacer inicio mientras junto-a-zumbador hacer coge-zumbador; avanza; si no-junto-a-zumbador entonces apaga; fin; mientras junto-a-zumbador hacer coge-zumbador; apaga; fin sino inicio deja-zumbador; mediaVuelta; avanza; giraDerecha; fin; fin; si no-orientado-al-oeste entonces gira-izquierda; mientras frente-libre hacer avanza; gira-izquierda; avanza; si frente-libre entonces avanza; mediaVuelta; fin; fin; apaga; termina-ejecucion finalizar-programa