SUBROUTINE elimine_ligne(bool,tab,i,j,k,l,m) ! élimine la ligne du chiffre déjà présent
IMPLICIT NONE
INTEGER :: i,j,k,l,m
INTEGER, DIMENSION(3,3,3,3) :: tab !dimension du tableau du sudoku
LOGICAL, DIMENSION(3,3,3,3,9) :: bool !dimension du tableau booléen
bool=.TRUE. ! tableau booléen initialisé à true
DO i=1,3
DO j=1,3
DO k=1,3
DO l=1,3
DO m=1,9
IF (m==tab(i,j,k,l)) THEN
bool(i,:,k,:,m)=.false. ! enregistre false pour le chiffre dans la ligne
END IF
END DO
END DO
END DO
END DO
END DO
END SUBROUTINE
SUBROUTINE elimine_colonne(bool,tab,i,j,k,l,m) ! élimine la colonne du chiffre déjà présent
IMPLICIT NONE
INTEGER :: i,j,k,l,m
INTEGER, DIMENSION(3,3,3,3) :: tab !dimension du tableau du sudoku
LOGICAL,DIMENSION(3,3,3,3,9) :: bool !dimension du tableau booléen
bool=.TRUE. !tableau booléen initialisé à true
DO i=1,3
DO j=1,3
DO k=1,3
DO l=1,3
DO m=1,9
IF (m==tab(i,j,k,l)) THEN
bool(:,j,:,l,m)=.false. ! enregistre false pour le chiffre dans la colonne
END IF
END DO
END DO
END DO
END DO
END DO
END SUBROUTINE
SUBROUTINE elimine_region(bool,tab,i,j,k,l,m) ! élimine la région du chiffre déjà présent
IMPLICIT NONE
INTEGER :: i,j,k,l,m
INTEGER, DIMENSION(3,3,3,3) :: tab !dimension du tableau du sudoku
LOGICAL,DIMENSION(3,3,3,3,9) :: bool !dimension du tableau booléen
bool=.TRUE. !tableau booléen initialisé à true
DO i=1,3
DO j=1,3
DO k=1,3
DO l=1,3
DO m=1,9
IF (m==tab(i,j,k,l)) THEN
bool(i,j,:,:,m)=.false. ! enregistre false pour le chiffre dans la région
END IF
END DO
END DO
END DO
END DO
END DO
END SUBROUTINE
SUBROUTINE elimine_local(bool,tab,i,j,k,l,m) ! élimine toutes les autres valeurs de m de la case
IMPLICIT NONE
INTEGER :: i,j,k,l,m
INTEGER, DIMENSION(3,3,3,3) :: tab !dimension du tableau du sudoku
LOGICAL,DIMENSION(3,3,3,3,9) :: bool !dimension du tableau booléen
bool=.TRUE. !tableau booléen initialisé à true
DO i=1,3
DO j=1,3
DO k=1,3
DO l=1,3
DO m=1,9
IF (m==tab(i,j,k,l)) THEN
bool(i,j,k,l,m)=.true. ! enregistre true pour le chiffre dans la case
END IF
END DO
END DO
END DO
END DO
END DO
END SUBROUTINE
Partager