Czesc, mam problem z napisaniem konstruktora, ktory bedzie tworzyl mi , czyli rozwiazane problem 15 puzzli (0 - puste pole)
1 | 2 | 3 | 4
5 | 6 | 7 | 8
9 |10 | 11| 12
13|14 | 15| 0
Zwykly konstruktor napisalem i wyglada tak.
fifteen::fifteen( )
{
size_t value = 1;
for(size_t i = 0; i < dimension; ++i)
{
for(size_t j = 0; j < dimension; ++j)
{table[i][j] = value;
value++;}
}
table[dimension-1][dimension-1] = 0;
}
przykladowe wywolani
fifteen f{ { 1, 3, 4, 12 }, { 5, 2, 7, 11 }, { 9, 6, 14, 10 }, { 13, 15, 0, 8 } } ;
Ale teraz nie wiem jak napisac taki konstruktor ktorego naglowek ma wygladac tak
fifteen::fifteen( std::initializer_list< std::initializer_list< size_t > > init )
Rzeczy z klasy fifteen:
class fifteen
{
private:
static constexpr size_t dimension = 4;
static_assert( dimension > 1, "dimension must be two at least" );
using position = std::pair< size_t, size_t > ;
public:
size_t table [ dimension ][ dimension ];
// We use the numbers 1 .. dimension*dimension-1 for the tiles,
// and 0 for the open place.
size_t open_i;
size_t open_j;
// Position of the open place. Use matrix notation, i is row,
// j is column