Sha256: 7f6456d697e2ec7502badb21342a664c70b4a4939c5efae769fde11de6a77eeb

Contents?: true

Size: 1.82 KB

Versions: 4

Compression:

Stored size: 1.82 KB

Contents

# => Author:: 		yguenver
# => Version:: 		0.1
# => Copyright:: 	© 2016
# => License:: 		Distributes under the same terms as Ruby

##
## Classe pour la technique 'Single Candidate'.
##
class SCandidate < Technique

	##
	## Constructeur de la classe SCandidate
	##
	## @return 	Une instance de la classe SCandidate
	##
	def SCandidate.creer()
		new()
	end

	##
	## Recherche une solution pour la technique utilisée
	##
	## @param 	grille 			La grille
	##
	## @return 	res, les informations pour aider l'utilisateur ou nil si la méthode ne trouve rien
	##
	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

	##
	## Retourne le nombre d'étapes pour faire la technique
	##
	## @return     Le nombre d'étapes
	##
	def combienEtape()
		return 2
	end

	##
	## Retourne les étapes pour faire la technique
	##
	## @param      n     Le numéro de la technique
	##
	## @return     Un texte expliquant l'étape sinon nil
	##
	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
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
Dogeku-1.0.4 app/utils/SCandidate.rb
Dogeku-1.0.3 app/utils/SCandidate.rb
Dogeku-1.0.2 app/utils/SCandidate.rb
Dogeku-1.0.1 app/utils/SCandidate.rb