// y25.cpp - program to solve cube puzzle of 25 "Y" pentomino parts and print

#include "search.hpp"
#include "box.h"

// class Y25 - solve puzzle of 25 "Y" pentomino parts, print solutions
class Y25 {

private:

// box - the box puzzle
box::Box box;

// searchserver - search server with 125 locations
search::Server<search::PosFixed<125> > searchserver;

// shapes - puzzle shape data
Shapes shapes;

public:

// Y25 - initialize Y25 puzzle
Y25(void) : box(3, 5), shapes(1)
{
	int part1[] = { 0, 1, 2, 3, 6 };

	shapes[0] = Shape(25, Pos(part1 + 0, part1 + 5));
}

// run - solve puzzle of 25 "Y" pentomino parts, print solutions
void run(void)
{
	box.setshapes(shapes);
	box.setreflectout(true);
	box.search(searchserver);
	box.print(std::cout, "ABCDEFGHIJKLMNOPQRSTUVWXY", "X");
}

}; // end of class Y25

// main - solve puzzle of 25 "Y" pentomino parts, print solutions
int main()

{
	Y25().run();
	return (0);
}
