Class: SCandidate
Overview
Classe pour la technique 'Single Candidate'.
Class Method Summary collapse
-
.creer ⇒ Object
Constructeur de la classe SCandidate.
Instance Method Summary collapse
-
#combienEtape ⇒ Object
Retourne le nombre d'étapes pour faire la technique.
-
#etape(n) ⇒ Object
Retourne les étapes pour faire la technique.
-
#solution(grille) ⇒ Object
Recherche une solution pour la technique utilisée.
Class Method Details
.creer ⇒ Object
Constructeur de la classe SCandidate
16 17 18 |
# File 'app/utils/SCandidate.rb', line 16 def SCandidate.creer() new() end |
Instance Method Details
#combienEtape ⇒ Object
Retourne le nombre d'étapes pour faire la technique
64 65 66 |
# File 'app/utils/SCandidate.rb', line 64 def combienEtape() return 2 end |
#etape(n) ⇒ Object
Retourne les étapes pour faire la technique
75 76 77 78 79 80 81 82 83 84 85 |
# File 'app/utils/SCandidate.rb', line 75 def etape(n) case(n) when 1 return "Bienvenue sur l'explication de la technique "+self.class.to_s+"." when 2 return "Recherchez les candidats possibles pour chaque case d'une ligne/colonne. Remarquez que dans certaines, un candidat n'est possible que dans une seule case de la ligne/colonne." end return nil end |
#solution(grille) ⇒ Object
Recherche une solution pour la technique utilisée
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'app/utils/SCandidate.rb', line 27 def solution(grille) grilleIndice = indice(grille) [1,2,3,4,5,6,7,8,9].sort_by{rand}.each { |numero| grilleIndice.sort_by{rand}.each_with_index { |col,x| cpt=0 ytmp=0 col.sort_by{rand}.each_with_index { |c,y| if c[numero.to_s] then cpt +=1 ytmp = y end } if cpt == 1 then return [x,ytmp,numero.to_s] end } [0,1,2,3,4,5,6,7,8].sort_by{rand}.each { |y| cpt=0 xtmp=0 [0,1,2,3,4,5,6,7,8].sort_by{rand}.each { |x| if grilleIndice[x][y][numero.to_s] then cpt +=1 xtmp = x end } if cpt == 1 then return [xtmp,y,numero.to_s] end } } return nil end |