Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConsoleApplication3 {
  4. internal class Program {
  5. public static void Main(string[] args) {
  6. var chest = new Chest();
  7. var result = chest.Calculate();
  8. Console.WriteLine(result);
  9. }
  10. }
  11.  
  12. public class Chest {
  13. public int Calculate() {
  14. return Generator();
  15. }
  16.  
  17. public int Generator() {
  18. var res = 0;
  19. var one = 1;
  20. var two = 2;
  21. var three = 3;
  22. var four = 4;
  23. var five = 5;
  24. var six = 6;
  25. var seven = 7;
  26. var eight = 8;
  27.  
  28. while (one!=9) {
  29. if (eight > 8) {
  30. seven++;
  31. eight = 1;
  32. }
  33.  
  34. if (seven > 8) {
  35. six++;
  36. seven = 1;
  37. }
  38.  
  39. if (six > 8) {
  40. five++;
  41. six = 1;
  42. }
  43.  
  44. if (five > 8) {
  45. four++;
  46. five = 1;
  47. }
  48.  
  49. if (four > 8) {
  50. three++;
  51. four = 1;
  52. }
  53.  
  54. if (three > 8) {
  55. two++;
  56. three = 1;
  57. }
  58.  
  59. if (two > 8) {
  60. one++;
  61. two = 1;
  62. Console.WriteLine(one);
  63. }
  64.  
  65. if(one>8) break;
  66.  
  67. var table = GenerateTable(one, two, three, four, five, six, seven, eight);
  68. if (ChechCollisions(table))
  69. res++;
  70. eight++;
  71. }
  72. return res;
  73. }
  74.  
  75. private int[,] GenerateTable(int one, int two, int three, int four, int five, int six, int seven, int eight) {
  76. var table = new int[8, 8];
  77. for (int i = 0; i < table.GetLength(0); i++) {
  78. for (int j = 0; j < table.GetLength(1); j++) {
  79. table[i, j] = 0;
  80. }
  81. }
  82.  
  83. table[0, one-1] = 1;
  84. table[1, two-1] = 1;
  85. table[2, three-1] = 1;
  86. table[3, four-1] = 1;
  87. table[4, five-1] = 1;
  88. table[5, six-1] = 1;
  89. table[6, seven-1] = 1;
  90. table[7, eight-1] = 1;
  91. return table;
  92. }
  93.  
  94. private bool ChechCollisions(int[,] array) {
  95. for (int i = 0; i < array.GetLength(0); i++) {
  96. for (int j = 0; j < array.GetLength(1); j++) {
  97. if (array[i, j] == 1) {
  98. var result = Check(array,i,j);
  99. if (result == false) return false;
  100. }
  101. }
  102. }
  103. return true;
  104. }
  105.  
  106. private bool Check(int[,] array, int i, int j) {
  107. for (int k = 0; k < array.GetLength(1); k++) {
  108. if(k!=j)
  109. if (array[i, k] == 1)
  110. return false;
  111. }
  112. for (int k = 0; k < array.GetLength(0); k++) {
  113. if(k!=i)
  114. if (array[k, j] == 1)
  115. return false;
  116. }
  117.  
  118. for (int k = i,l=j; k >=0 && l>=0; k--, l--) {
  119. if(k!=i && l!=j)
  120. if (array[k, l] == 1)
  121. return false;
  122. }
  123. for (int k = i,l=j; k <array.GetLength(0) && l<array.GetLength(1); k++, l++) {
  124. if(k!=i && l!=j)
  125. if (array[k, l] == 1)
  126. return false;
  127. }
  128.  
  129.  
  130.  
  131. for (int k = i,l=j; k >=0 && l<array.GetLength(1); k--, l++) {
  132. if(k!=i && l!=j)
  133. if (array[k, l] == 1)
  134. return false;
  135. }
  136.  
  137. for (int k = i, l = j; k < array.GetLength(0) && l >= 0; k++, l--) {
  138. if(k!=i && l!=j)
  139. if (array[k, l] == 1)
  140. return false;
  141. }
  142. return true;
  143. }
  144. }
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement