Les tours de Hanoi - partie 1
Je vais commencer par implémenter une classe Board
, dont la tâche est
de retenir l’état du plateau de jeu, c’est à dire la position des pièces.
J’ai envie de faire des tests avec Rspec, donc voici les premiers fichiers:
$ tree
.
├── board.rb
└── spec
└── board_spec.rb
Voici les tests de Board
, qui décrivent ce que j’attend de cette classe:
On doit pouvoir l’initialiser avec un nombre de pièces:
before { @board = Board.new(3) }
À l’initialisation, les pièces sont en position de départ:
it 'has a position' do
expect(@board.position).to eq [ [3, 2, 1], [], [] ]
end
On peut modifier la position à volonté:
it 'accepts a position' do
@board.position = [ [], [3], [2, 1] ]
expect(@board.position).to eq [ [], [3], [2, 1] ]
end
Enfin, la position actuelle peut être évaluée:
describe 'position evalution' do
specify { expect(@board.eval).to eq 0 }
specify do
@board.position = [ [], [3], [2, 1] ]
expect(@board.eval).to eq 9
end
specify do
@board.position = [ [], [], [3, 2, 1] ]
expect(@board.eval).to eq 12
end
end
Pour finir, l’implémentation minimum:
À demain.
/ / / / / / / / / /
« Un algorithme génétique pour les tours de Hanoi avec Opal.rb ---//---
Les tours de hanoi - partie 2 »