Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace ConsoleApplication3 {
- internal class Program {
- public static void Main(string[] args) {
- var chest = new Chest();
- var result = chest.Calculate();
- Console.WriteLine(result);
- }
- }
- public class Chest {
- public int Calculate() {
- return Generator();
- }
- public int Generator() {
- var res = 0;
- var one = 1;
- var two = 2;
- var three = 3;
- var four = 4;
- var five = 5;
- var six = 6;
- var seven = 7;
- var eight = 8;
- while (one!=9) {
- if (eight > 8) {
- seven++;
- eight = 1;
- }
- if (seven > 8) {
- six++;
- seven = 1;
- }
- if (six > 8) {
- five++;
- six = 1;
- }
- if (five > 8) {
- four++;
- five = 1;
- }
- if (four > 8) {
- three++;
- four = 1;
- }
- if (three > 8) {
- two++;
- three = 1;
- }
- if (two > 8) {
- one++;
- two = 1;
- Console.WriteLine(one);
- }
- if(one>8) break;
- var table = GenerateTable(one, two, three, four, five, six, seven, eight);
- if (ChechCollisions(table))
- res++;
- eight++;
- }
- return res;
- }
- private int[,] GenerateTable(int one, int two, int three, int four, int five, int six, int seven, int eight) {
- var table = new int[8, 8];
- for (int i = 0; i < table.GetLength(0); i++) {
- for (int j = 0; j < table.GetLength(1); j++) {
- table[i, j] = 0;
- }
- }
- table[0, one-1] = 1;
- table[1, two-1] = 1;
- table[2, three-1] = 1;
- table[3, four-1] = 1;
- table[4, five-1] = 1;
- table[5, six-1] = 1;
- table[6, seven-1] = 1;
- table[7, eight-1] = 1;
- return table;
- }
- private bool ChechCollisions(int[,] array) {
- for (int i = 0; i < array.GetLength(0); i++) {
- for (int j = 0; j < array.GetLength(1); j++) {
- if (array[i, j] == 1) {
- var result = Check(array,i,j);
- if (result == false) return false;
- }
- }
- }
- return true;
- }
- private bool Check(int[,] array, int i, int j) {
- for (int k = 0; k < array.GetLength(1); k++) {
- if(k!=j)
- if (array[i, k] == 1)
- return false;
- }
- for (int k = 0; k < array.GetLength(0); k++) {
- if(k!=i)
- if (array[k, j] == 1)
- return false;
- }
- for (int k = i,l=j; k >=0 && l>=0; k--, l--) {
- if(k!=i && l!=j)
- if (array[k, l] == 1)
- return false;
- }
- for (int k = i,l=j; k <array.GetLength(0) && l<array.GetLength(1); k++, l++) {
- if(k!=i && l!=j)
- if (array[k, l] == 1)
- return false;
- }
- for (int k = i,l=j; k >=0 && l<array.GetLength(1); k--, l++) {
- if(k!=i && l!=j)
- if (array[k, l] == 1)
- return false;
- }
- for (int k = i, l = j; k < array.GetLength(0) && l >= 0; k++, l--) {
- if(k!=i && l!=j)
- if (array[k, l] == 1)
- return false;
- }
- return true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement