He implementado una arquitectura MVP y vistas XIB para desarrollar la interfaz de usuario.
He implementado una vista UIView separada del controlador, lo que nos permite tener una mayor claridad en la lógica de la aplicación y una separación de responsabilidades más efectiva. Estas vistas se conectan mediante el patrón delegate, lo que permite una comunicación más clara y eficiente entre ellas.
Además, he utilizado el patrón strategy para implementar diferentes algoritmos.