Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. struct point {
  7. int x, y, z;
  8. };
  9.  
  10. void shuffle(vector<vector<vector<int>>> &cube, point &improper, bool &proper) {
  11. srand(5);
  12. if (proper)
  13. improper = randompoint(cube);
  14.  
  15. int ax, ay, az;
  16. point opp;
  17. if (proper) {
  18. for (int i = 0; i < 3; i++)
  19. if (cube[i][improper.y][improper.z] == 1) {
  20. ax = i;
  21. break;
  22. }
  23.  
  24. for (int i = 0; i < 3; i++)
  25. if (cube[improper.x][i][improper.z] == 1) {
  26. ay = i;
  27. break;
  28. }
  29.  
  30. for (int i = 0; i < 3; i++)
  31. if (cube[improper.x][improper.y][i] == 1) {
  32. az = i;
  33. break;
  34. }
  35. }
  36. else {
  37. while (ax != improper.x)
  38. ax = rand() % 3;
  39. while (ay != improper.y)
  40. ay = rand() % 3;
  41. while (az != improper.z)
  42. az = rand() % 3;
  43. }
  44.  
  45. opp.x = ax; opp.y = ay; opp.z = az;
  46.  
  47. cube[improper.x][improper.y][improper.z]++;
  48. cube[improper.x][ay][az]++;
  49. cube[ax][improper.y][az]++;
  50. cube[ax][ay][improper.z]++;
  51.  
  52. cube[ax][improper.y][improper.z]--;
  53. cube[improper.x][ay][improper.z]--;
  54. cube[improper.x][improper.y][az]--;
  55. cube[ax][ay][az]--;
  56.  
  57. if (cube[ax][ay][az] == -1) {
  58. proper = false;
  59. improper.x = ax; improper.y = ay; improper.z = az;
  60. }
  61. else
  62. proper = true;
  63. }
  64.  
  65. point randompoint(vector<vector<vector<int>>> cube) {
  66. srand(5);
  67. vector<point> list;
  68. for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++)for (int k = 0; k < 3; k++)
  69. if (cube[i][j][k] == 1) {
  70. point t;
  71. t.x = i;
  72. t.y = j;
  73. t.z = k;
  74. list.push_back(t);
  75. }
  76.  
  77. return list[rand() % list.size()];
  78. }
  79.  
  80. int main()
  81. {
  82. vector<vector<vector<int>>> cube = { {{1,0,0},{0,1,0},{0,0,1}}, {{0,0,1},{1,0,0},{0,1,0}}, {{0,1,0},{0,0,1},{1,0,0}} };
  83. point improper; improper.x = improper.y = improper.z = 0;
  84. bool proper = true;
  85. while (rand() % 27 != 5 || !proper) {
  86. shuffle(cube, improper, proper);
  87. }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement