Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Informe Técnico: Aplicación del Patrón Iterator en SudokuSolver #6436

Open
Assignees
@isaltosf

Description

What would you like to Propose?

Propuesta de refactorización del módulo SudokuSolver aplicando el patrón de diseño Iterator.

Se introduce una clase Cell que encapsula la posición y valor de una celda del tablero, una clase CellIterator para recorrerlo celda por celda, y se implementa Iterable<Cell> en SudokuBoard.

Esto mejora la flexibilidad del recorrido, el desacoplamiento del algoritmo y la mantenibilidad general del código.

Issue details

Informe Técnico: Aplicación del Patrón Iterator en SudokuSolver
Autor: Andrés Alexander Saltos Preciado
Fecha: 23/07/25

Problemas y Soluciones

Recorrido Desacoplado
Problema: El recorrido de la matriz Sudoku estaba acoplado al algoritmo, dificultando modificaciones y pruebas.
Solución: Encapsular el recorrido mediante la implementación del patrón Iterator con la clase CellIterator.
Beneficio: Recorrido más limpio, reutilizable y desacoplado de la lógica de resolución.

Encapsulamiento de Celda
Problema: El acceso a fila, columna y valor estaba disperso y poco claro.
Solución: Crear clase Cell con atributos row, col y value.
Beneficio: Mejora la semántica del código y facilita operaciones con las celdas.

Integración con Iterable
Problema: SudokuBoard no ofrecía un mecanismo estandarizado para recorridos.
Solución: Implementar la interfaz Iterable en la clase SudokuBoard.
Beneficio: Integración nativa con bucles for-each y APIs de Java.

Impacto

✅ Menor acoplamiento

✅ Mayor reutilización

✅ Código más expresivo y mantenible

Recomendación: Implementar en rama feature/iterator-refactor
Andrés Saltos
analsalt@espol.edu.ec

Additional Information

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      AltStyle によって変換されたページ (->オリジナル) /