Advertisement
Sergiovan

Untitled

Oct 14th, 2015
400
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.79 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Assignment_2___Question_4{
  8.     class Program{
  9.         static void Main(string[] args){
  10.             int[,] line = { { 6, 3, 4, 9, 1, 5, 7, 2, 8 }, { 2, 7, 8, 6, 4, 3, 5, 1, 9 }, { 5, 9, 1, 2, 7, 8, 6, 4, 3 }, { 4, 5, 7, 3, 6, 9, 2, 8, 1 }, { 9, 8, 6, 4, 2, 1, 3, 5, 7 }, { 3, 1, 2, 8, 5, 7, 4, 9, 6 }, { 1, 2, 5, 7, 8, 6, 9, 3, 4 }, { 8, 6, 3, 5, 9, 4, 1, 7, 2 }, { 7, 4, 9, 1, 3, 2, 8, 6, 5 } };
  11.             Console.WriteLine("---------------------------------------");
  12.             for (int i = 0; i < 9; i++){
  13.                 for (int j = 0; j < 9; j++){
  14.                     Console.Write(" | "+line[i,j]);
  15.                 }
  16.                 Console.WriteLine(" |");
  17.                 Console.WriteLine("---------------------------------------");
  18.             }
  19.             if (CheckAllLines(line) && CheckAllColls(line) && CheckAllBlocks(line)){
  20.                 Console.WriteLine("This solution is correct!");
  21.             }else{
  22.                 Console.WriteLine("This solution is wrong!");
  23.             }
  24.             Console.ReadKey();
  25.         }
  26.  
  27.         public static bool LineCorrectness(int[] lineArray, int count = 0){
  28.             return count > 8 || (!lineArray.Skip(count+1).Contains(lineArray[count]) && LineCorrectness(lineArray, count+1));
  29.         }
  30.  
  31.         public static bool CheckAllLines(int[,] arrayOfLines, int count = 0){
  32.             if(count < 9){
  33.                 int[] row = new int[9];
  34.                 for (int i = 0; i < 9; i++){
  35.                     row[i] = arrayOfLines[count,i];
  36.                 }
  37.                 return LineCorrectness(row) && CheckAllLines(arrayOfLines, count+1);
  38.             }
  39.             return true;
  40.         }
  41.  
  42.         public static bool CheckAllColls(int[,] arrayOfLines, int count = 0){
  43.             if(count < 9){
  44.                 int[] row = new int[9];
  45.                 for (int i = 0; i < 9; i++){
  46.                     row[i] = arrayOfLines[i, count];
  47.                 }
  48.                 return LineCorrectness(row) && CheckAllColls(arrayOfLines, count + 1);
  49.             }
  50.             return true;
  51.         }
  52.         public static bool CheckAllBlocks(int[,] arrayOfLines, int count = 0){
  53.             if(count < 9){
  54.                 int rowPos = 0;
  55.                 int[] row = new int[9];
  56.                 for (int i = (count%3)*3; i < ((count % 3) * 3)+3; i++){
  57.                     double val = count / 3;
  58.                     for (int k = ((int)Math.Floor(val)*3); k < ((int)Math.Floor(val) * 3)+3; k++) {
  59.                         row[rowPos] = arrayOfLines[i, k];
  60.                         rowPos++;
  61.                     }
  62.                 }
  63.                 return LineCorrectness(row) && CheckAllBlocks(arrayOfLines, count + 1);
  64.             }
  65.             return true;
  66.         }
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement