Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <algorithm>
- void Print(const std::string & pallet)
- {
- for (int i = 0; i < pallet.length(); ++i)
- {
- std::cout << pallet[i] << " ";
- }
- std::cout << std::endl;
- }
- std::string CreatePallet(const int & size)
- {
- std::string pallet = " ";
- for (int i = 0; i < size; ++i)
- {
- pallet.insert(0, "B");
- pallet.push_back('W');
- }
- return pallet;
- }
- bool CheckState(std::string pallet, const std::string & originalPallet)
- {
- std::reverse(pallet.begin(), pallet.end());
- return (pallet == originalPallet);
- }
- bool Jump(const std::string & pallet, const std::string & originalPallet);
- bool Move(const std::string & pallet, const std::string & originalPallet)
- {
- if (CheckState(pallet, originalPallet))
- {
- Print(pallet);
- return true;
- }
- std::string newPallet = pallet;
- for (int i = 0; i < newPallet.length(); ++i)
- {
- if (newPallet[i] == ' ')
- {
- if (i - 1 > 0)
- {
- newPallet[i] = newPallet[i - 1];
- newPallet[i - 1] = ' ';
- if (Jump(newPallet, originalPallet))
- return true;
- else if (Move(newPallet, originalPallet))
- return true;
- }
- if (i + 1 < newPallet.length())
- {
- newPallet[i] = newPallet[i + 1];
- newPallet[i + 1] = ' ';
- if (Jump(newPallet, originalPallet))
- return true;
- else if (Move(newPallet, originalPallet))
- return true;
- }
- }
- }
- }
- bool Jump(const std::string & pallet, const std::string & originalPallet)
- {
- if (CheckState(pallet, originalPallet))
- {
- Print(pallet);
- return true;
- }
- std::string newPallet = pallet;
- for (int i = 0; i < newPallet.length(); ++i)
- {
- if (newPallet[i] == ' ')
- {
- if (i - 2 > 0)
- {
- newPallet[i] = newPallet[i - 2];
- newPallet[i - 2] = ' ';
- if (Move(newPallet, originalPallet))
- return true;
- else if (Jump(newPallet, originalPallet))
- return true;
- }
- if (i + 2 < newPallet.length())
- {
- newPallet[i] = newPallet[i + 2];
- newPallet[i + 2] = ' ';
- if (Move(newPallet, originalPallet))
- return true;
- else if (Jump(newPallet, originalPallet))
- return true;
- }
- }
- }
- }
- int main()
- {
- std::cout << "Enter size of each player ";
- int size;
- std::cin >> size;
- std::string pallet = CreatePallet(size);
- Print(pallet);
- std::cin.get();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement