[Home]DojoDeveloppement/KataMasterMind

AgileFrance | DojoDeveloppement | DernieresNouvelles | Preferences | AideEnLigne

Il s'agit de programmer la fonction evalue d'un module d'arbitrage de Master Mind, qui étant données une combinaison secrète à découvrir et une proposition, retourne le nombre de pions bien placés et le nombre de pions mal placés - par exemple pour l'utiliser ensuite dans un jeu en ligne comme http://www.irt.org/games/js/mind/.

Entrées :

Sortie :

Une variante amusante : /GrandMasterMind


Tests à faire passer (en Ruby) :

class ArbitreTest < Test::Unit::TestCase

  def assert_evalue attendu, secret, proposition
    assert_equal attendu, evalue(secret, proposition)
  end

  def testToutFaux
    assert_evalue [0, 0], [:bleu], [:rouge]
  end

  def testToutJustePourCombinaisonUnSeulElement
    assert_evalue [1, 0], [:bleu], [:bleu]
    assert_evalue [1, 0], [:rouge], [:rouge]
  end

  def testPremiersJustesSurCombinaisonAPlusieursElements
    assert_evalue [2, 0], [:bleu, :rouge, :vert], [:bleu, :rouge, :jaune]
  end

  def testMalPlacesParmiPlusieurs
    assert_evalue [0, 1], [:bleu, :bleu, :noir], [:noir, :vert, :vert]
    assert_evalue [0, 2], [:bleu, :bleu, :noir, :noir], [:noir, :noir, :vert, :vert]
  end

  def testUnMalPlaceNeDoitPasEtreComptePlusieursFois
    assert_evalue [0, 1], [:bleu, :bleu, :noir], [:noir, :noir, :vert]
  end

  def testVertPeutAussiEtreMalPlace
    assert_evalue [0, 1], [:bleu, :bleu, :vert], [:vert, :vert, :noir]
  end

  def testRougePeutAussiEtreMalPlace
    assert_evalue [0, 1], [:bleu, :bleu, :rouge], [:rouge, :rouge, :noir]
  end

  def testToutesLesCouleursPeuventEtreMalPlacees
    assert_evalue [0, 5], [:bleu, :rouge, :vert, :jaune, :noir], [:rouge, :vert, :jaune, :noir, :bleu]
  end

  def testQuelquesCasAvecDesDoublons
    assert_evalue [0, 1], [:bleu, :jaune, :rouge, :vert], [:noir, :bleu, :bleu, :noir]
    assert_evalue [0, 1], [:bleu, :jaune, :bleu, :vert], [:noir, :bleu, :noir, :noir]
    assert_evalue [1, 1], [:bleu, :jaune, :bleu, :vert], [:noir, :bleu, :bleu, :noir]
    assert_evalue [2, 2], [:bleu, :jaune, :bleu, :jaune], [:bleu, :bleu, :jaune, :jaune]
    assert_evalue [0, 2], [:jaune, :jaune, :bleu], [:bleu, :bleu, :jaune]
  end
end

AgileFrance | DojoDeveloppement | DernieresNouvelles | Preferences | AideEnLigne
Edit this page | View other revisions
Last edited January 26, 2010 5:44 pm (diff)
Search: