Advertisement
Guest User

Untitled

a guest
May 24th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.65 KB | None | 0 0
  1. import java.io.*;
  2. public class Cube{
  3. private int[][][] cube;
  4. private FileWriter front,right,left,down,top,back;
  5. public Cube(){
  6. boolean savedCube;
  7.  
  8. try{
  9. File f = new File("front.txt");
  10. if(f.createNewFile()){
  11. savedCube = true;
  12. }
  13. front = new FileWriter(f);
  14.  
  15. File r = new File("right.txt");
  16. r.createNewFile();
  17. right = new FileWriter(f);
  18.  
  19. File l = new File("left.txt");
  20. l.createNewFile();
  21. left = new FileWriter(l);
  22.  
  23. File d = new File("down.txt");
  24. d.createNewFile();
  25. down = new FileWriter(d);
  26.  
  27. File t = new File("top.txt");
  28. t.createNewFile();
  29. top = new FileWriter(t);
  30.  
  31. File b = new File("back.txt");
  32. b.createNewFile();
  33. back = new FileWriter(b);
  34.  
  35. }catch (IOException e){
  36. savedCube = false;
  37. }
  38.  
  39.  
  40. cube = new int[6][3][3];
  41. //array of faces (3d array)
  42. // [0,0,0] [1,1,1] [2,2,2] [3,3,3] [4,4,4] [5,5,5]
  43. // [0,0,0] [1,1,1] [2,2,2] [3,3,3] [4,4,4] [5,5,5]
  44. // [0,0,0] [1,1,1] [2,2,2] [3,3,3] [4,4,4] [5,5,5]
  45. // white blue green red orange yellow
  46. // front right left down top back
  47. // F R L D T B
  48. // 0 1 2 3 4 5
  49.  
  50. initializeCube(false); //fix later
  51.  
  52.  
  53. }
  54.  
  55. private void initializeCube(boolean savedCube){
  56. if (savedCube){
  57. //nevermind
  58. }else{
  59. for (int i = 0; i<6; i++){
  60. for (int j = 0; j < 3; j++){
  61. for (int k = 0; k< 3;k++){
  62. cube[i][j][k] = i;
  63. }
  64. }
  65. }
  66. }
  67. }
  68.  
  69. private void save(){
  70.  
  71. for (int i = 0; i<1;i++){
  72. String face = "";
  73. for (int j = 0; j<3;j++){
  74. for (int k = 0; k<3;k++){
  75. face += cube[i][j][k] + " ";
  76. }
  77. face += "\n";
  78. }
  79. try{
  80. fileforFace(i).write(face);
  81. }catch (IOException e){
  82. break;
  83. }
  84. }
  85. }
  86.  
  87. private FileWriter fileforFace(int i){
  88. if (i == 0){
  89. return front;
  90. }
  91. if (i == 1){
  92. return right;
  93. }
  94. if (i == 2){
  95. return left;
  96. }
  97. if (i == 3){
  98. return down;
  99. }
  100. if (i == 4){
  101. return top;
  102. }
  103. return back;
  104.  
  105. }
  106.  
  107.  
  108. //flip array across main diagonal (as in transposing a matrix)
  109. private void transpose(int face){
  110. for (int i = 0; i < 3; i++){
  111. for (int j = 0; j < 3; j++){
  112. if (j > i){
  113. int temp = cube[face][i][j];
  114. cube[face][i][j] = cube[face][j][i];
  115. cube[face][j][i] = temp;
  116. }
  117. }
  118. }
  119. }
  120. private void flipRows(int face){
  121. for (int r = 0; r<3; r++){
  122. int temp = cube[face][r][0];
  123. cube[face][r][0] = cube[face][r][2];
  124. cube[face][r][2] = temp;
  125. }
  126. }
  127. private void flipCols(int face){
  128. for (int c = 0; c<3; c++){
  129. int temp = cube[face][0][c];
  130. cube[face][0][c] = cube[face][2][c];
  131. cube[face][2][c] = temp;
  132. }
  133. }
  134.  
  135.  
  136.  
  137. //CW INDICATES CLOCKWISE!
  138. public void rotateF(boolean CW){
  139. transpose(0);
  140.  
  141. if (CW){
  142. flipRows(0);
  143.  
  144. for (int i = 0; i < 3; i++){
  145. int temp = cube[1][i][0];
  146. cube[1][i][0] = cube[4][2][i];
  147. cube[4][2][i] = cube[2][i][2];
  148. cube[2][i][2] = cube[3][0][i];
  149. cube[3][0][i] = temp;
  150. }
  151. }else{
  152. flipCols(0);
  153.  
  154. for (int i = 0; i < 3; i++){
  155. int temp = cube[1][i][0];
  156. cube[1][i][0] = cube[3][0][i];
  157. cube[3][0][i] = cube[2][i][2];
  158. cube[2][i][2] = cube[4][2][i];
  159. cube[4][2][i] = temp;
  160. }
  161. }
  162. }
  163.  
  164. public void rotateB(boolean CW){
  165. transpose(5);
  166.  
  167. if (CW){
  168. flipRows(5);
  169.  
  170. for (int i = 0; i < 3; i++){
  171. int temp = cube[2][i][0];
  172. cube[2][i][0] = cube[4][0][inv(i)];
  173. cube[4][0][i] = cube[1][i][2];
  174. cube[1][i][2] = cube[3][2][inv(i)];
  175. cube[3][2][i] = temp;
  176. }
  177. }else{
  178. flipCols(5);
  179.  
  180. for (int i = 0; i < 3; i++){
  181. int temp = cube[2][i][0];
  182. cube[2][i][0] = cube[3][2][i];
  183. cube[3][2][i] = cube[1][i][2];
  184. cube[1][i][2] = cube[4][0][i];
  185. cube[4][0][i] = temp;
  186. }
  187. }
  188. }
  189.  
  190.  
  191. public void rotateL(boolean CW){
  192. transpose(2);
  193.  
  194. if (CW){
  195. flipRows(2);
  196.  
  197. for (int i = 0; i < 3; i++){
  198. int temp = cube[0][i][0];
  199. cube[0][i][0] = cube[4][i][0];
  200. cube[4][i][0] = cube[5][i][2];
  201. cube[5][i][2] = cube[3][i][0];
  202. cube[3][i][0] = temp;
  203. }
  204. }else{
  205. flipCols(2);
  206.  
  207. for (int i = 0; i < 3; i++){
  208.  
  209. int temp = cube[0][i][0];
  210. cube[0][i][0] = cube[3][i][0];
  211. cube[3][i][0] = cube[5][i][2];
  212. cube[5][i][2] = cube[4][i][0];
  213. cube[4][i][0] = temp;
  214. }
  215. }
  216. }
  217.  
  218.  
  219. //POTENTIAL PROBLEM with DOWN face
  220. public void rotateR(boolean CW){
  221. transpose(1);
  222.  
  223. if (CW){
  224. flipRows(1);
  225.  
  226. for (int i = 0; i < 3; i++){
  227. int temp = cube[5][i][0];
  228. cube[5][i][0] = cube[4][i][2];
  229. cube[4][i][2] = cube[0][i][2];
  230. cube[0][i][2] = cube[3][i][2];
  231. cube[3][i][2] = temp;
  232. }
  233. }else{
  234. flipCols(1);
  235.  
  236. for (int i = 0; i < 3; i++){
  237.  
  238. int temp = cube[5][i][0];
  239. cube[5][i][0] = cube[3][i][2];
  240. cube[3][i][2] = cube[0][i][2];
  241. cube[0][i][2] = cube[4][i][2];
  242. cube[4][i][2] = temp;
  243. }
  244. }
  245. }
  246. public void rotateT(boolean CW){
  247. transpose(4);
  248.  
  249. if (CW){
  250. flipRows(4);
  251.  
  252. for (int i = 0; i < 3; i++){
  253. int temp = cube[2][i][0];
  254. cube[2][i][0] = cube[4][0][i];
  255. cube[4][0][i] = cube[1][i][2];
  256. cube[1][i][2] = cube[3][2][i];
  257. cube[3][2][i] = temp;
  258. }
  259. }else{
  260. flipCols(4);
  261.  
  262. for (int i = 0; i < 3; i++){
  263.  
  264. int temp = cube[2][i][0];
  265. cube[2][i][0] = cube[3][2][i];
  266. cube[3][2][i] = cube[1][i][2];
  267. cube[1][i][2] = cube[4][0][i];
  268. cube[4][0][i] = temp;
  269. }
  270. }
  271. }
  272. public void rotateD(boolean CW){
  273. transpose(3);
  274.  
  275. if (CW){
  276. flipRows(3);
  277.  
  278. for (int i = 0; i < 3; i++){
  279. int temp = cube[2][i][0];
  280. cube[2][i][0] = cube[4][0][i];
  281. cube[4][0][i] = cube[1][i][2];
  282. cube[1][i][2] = cube[3][2][i];
  283. cube[3][2][i] = temp;
  284. }
  285. }else{
  286. flipCols(3);
  287.  
  288. for (int i = 0; i < 3; i++){
  289.  
  290. int temp = cube[2][i][0];
  291. cube[2][i][0] = cube[3][2][i];
  292. cube[3][2][i] = cube[1][i][2];
  293. cube[1][i][2] = cube[4][0][i];
  294. cube[4][0][i] = temp;
  295. }
  296. }
  297. }
  298.  
  299. //inverse for some edge case problems
  300. private int inv(int i){
  301. if (i == 0){
  302. return 2;
  303. }
  304. if (i == 1){
  305. return 1;
  306. }
  307. return 0;
  308. }
  309. public String toString(){
  310. String ans = "";
  311. for (int i = 0; i<cube.length; i++){
  312. for (int j = 0; j < cube[1].length; j++){
  313. for (int k = 0; k<cube[1][1].length;k++){
  314. ans += cube[i][j][k] + " ";
  315. }
  316. ans+= "\n";
  317. }
  318. ans+= "\n-------------\n";
  319. }
  320. return ans;
  321. }
  322.  
  323. public static void main(String[] args){
  324. Cube x = new Cube();
  325. x.rotateB(false);
  326. System.out.println(x.toString());
  327. }
  328.  
  329.  
  330.  
  331.  
  332. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement