Código y archivo de prueba

Este es el código de lo que llevo. Bastante sucio, como verás, pero me
preocupaba más que quedara listo a que fuera bonito.