Class: SCell

Inherits:
Technique show all
Defined in:
app/utils/SCell.rb

Overview

Classe pour la technique 'Single Cell'.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.creerObject

Constructeur de la classe SCell

Returns:

  • Une instance de la classe SCell



16
17
18
# File 'app/utils/SCell.rb', line 16

def SCell.creer()
	new()
end

Instance Method Details

#combienEtapeObject

Retourne le nombre d'étapes pour faire la technique

Returns:

  • Le nombre d'étapes



50
51
52
# File 'app/utils/SCell.rb', line 50

def combienEtape()
	return 2
end

#etape(n) ⇒ Object

Retourne les étapes pour faire la technique

Parameters:

  • n

    Le numéro de la technique

Returns:

  • Un texte expliquant l'étape sinon nil



61
62
63
64
65
66
67
68
69
70
71
# File 'app/utils/SCell.rb', line 61

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. Remarquez que dans certaines, il n'y a qu'un seul candidat possible."
	end
	
	return nil
end

#solution(grille) ⇒ Object

Recherche une solution pour la technique utilisée

Parameters:

  • grille

    La grille

Returns:

  • res, les informations pour aider l'utilisateur ou nil si la méthode ne trouve rien



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/utils/SCell.rb', line 27

def solution(grille)
	grilleIndice = indice(grille)
	
	[0,1,2,3,4,5,6,7,8].sort_by{rand}.each { |x|
		[0,1,2,3,4,5,6,7,8].sort_by{rand}.each { |y|
			cpt = 0
			grilleIndice[x][y].each_value{|v| if v then cpt+=1 end}
			if cpt == 1 then
				grilleIndice[x][y].each{ |key,value|
					if value then return [x,y,key] end
				}
			end
		}
	}
	return nil
end