iniciar-programa define-prototipo-instruccion checa(a); define-nueva-instruccion norte(a) como inicio checa(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(sucede(a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); fin; define-nueva-instruccion sur(a) como inicio checa(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(precede(a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); fin; define-nueva-instruccion oeste(a) como inicio checa(sucede(a)); fin; define-nueva-instruccion este(a) como inicio checa(precede(a)); fin; define-nueva-instruccion camina(a) como inicio avanza; si orientado-al-norte entonces inicio norte(a); fin sino si orientado-al-este entonces inicio este(a); fin sino si orientado-al-oeste entonces inicio oeste(a); fin sino si orientado-al-sur entonces inicio sur(a); fin; fin; define-nueva-instruccion termina como inicio mientras no-orientado-al-sur hacer inicio gira-izquierda; fin; apagate; fin; define-nueva-instruccion checaAvanza como inicio si frente-libre entonces inicio avanza; si izquierda-libre entonces termina; fin sino termina; fin; define-nueva-instruccion checaGira como inicio si frente-libre entonces inicio avanza; si izquierda-libre entonces inicio gira-izquierda; fin sino termina; fin sino termina; fin; define-nueva-instruccion checa(a) como inicio si no si-es-cero(a) entonces inicio si izquierda-libre entonces inicio gira-izquierda; camina(a); checaGira; fin sino inicio si frente-libre entonces inicio camina(a); checaAvanza; fin sino inicio gira-izquierda; gira-izquierda; gira-izquierda; checa(a); gira-izquierda; gira-izquierda; gira-izquierda; fin; fin; fin sino inicio mientras no-orientado-al-norte hacer inicio gira-izquierda; fin; mientras izquierda-libre hacer gira-izquierda; fin; fin; define-nueva-instruccion checaInicio como inicio si frente-libre entonces inicio si izquierda-libre entonces inicio gira-izquierda; camina(0); checaGira; fin sino inicio camina(0); checaAvanza; fin; fin sino inicio gira-izquierda; gira-izquierda; gira-izquierda; checa(0); gira-izquierda; gira-izquierda; gira-izquierda; fin; fin; inicia-ejecucion mientras izquierda-libre hacer gira-izquierda; checaInicio; mientras no-orientado-al-norte hacer gira-izquierda; apagate; termina-ejecucion finalizar-programa