Versión final probada

Todas las mejoras hechas menos cambio de sentido aleatorio e idea libre.