fork download
  1. #include <iostream>
  2. //W ZADANIU NIE TRZEBA SPRAWDZAĆ CZY KWADRATY ZAWIERAJĄ ROZNE CYFRY ORAZ CZY NA GLOWNYCH PRZEKATNYCH SA ROZNE CYFRY.
  3. using namespace std;
  4. int wczytywanie(int tab[9][9]);
  5. int spr_wiersze(int tab[9][9]);
  6. int spr_kolumny(int tab[9][9]);
  7. int spr_kwadrat(int tab[9][9]);
  8. int t; // liczba testow
  9. int tab[9][9]; // tabela, do ktorej wpiszemy liczby z sudoku.
  10. int main()
  11. {
  12. cin >> t;
  13. for(int test=0; test<t; test++)
  14. {
  15. while(1)
  16. {
  17. if(wczytywanie(tab)==0)
  18. {
  19. cout << "NIE" << endl;
  20. break;
  21. }
  22. if(spr_wiersze(tab)==0)
  23. {
  24. cout << "NIE" << endl;
  25. break;
  26. }
  27. if(spr_kolumny(tab)==0)
  28. {
  29. cout << "NIE"<< endl;
  30. break;
  31. }
  32. if(spr_kwadrat(tab)==0)
  33. {
  34. cout << "NIE" << endl;
  35. break;
  36. }
  37. else
  38. {
  39. cout << "TAK"<< endl;
  40. break;
  41. }
  42. }
  43. }
  44. return 0;
  45. }
  46.  
  47. int wczytywanie(int tab[9][9]) // wczytujac sprawdzamy, czy wszystkie liczby sa z przedzialu <1;9>
  48. {
  49. int logic=1;
  50. for(int i=0; i<9; i++)
  51. for(int j=0; j<9; j++)
  52. {
  53. cin >>tab[i][j];
  54. if(tab[i][j]<1||tab[i][j]>9)
  55. logic=0;
  56.  
  57. }
  58. return logic;
  59. }
  60. int spr_wiersze(int tab[9][9])
  61. {
  62. int S;
  63. for(int i=0; i<9; i++)
  64. {
  65. S=0;
  66. for(int j=0; j<9; j++)
  67. S+=tab[i][j];
  68. if(S!=45)
  69. return 0;
  70. }
  71. return 1;
  72. }
  73. int spr_kolumny(int tab[9][9])
  74. {
  75. int S;
  76. for(int j=0; j<9; j++)
  77. {
  78. S=0;
  79. for(int i=0; i<9; i++)
  80. S+=tab[i][j];
  81. if(S!=45)
  82. return 0;
  83. }
  84. return 1;
  85. }
  86.  
  87. int spr_kwadrat(int tab[9][9])
  88. {
  89. int S=0;
  90. for(int I=0; I<3; I++)
  91. for(int J=0; J<3; J++)
  92. {
  93. int j=0;
  94. for(int i=0; i<3; i++)
  95. {
  96. S+=tab[3*I+i][3*J+j];
  97. if(i==2)
  98. {
  99. j++;
  100. i=-1;
  101. }
  102. if(j==3)
  103. {
  104. if(S!=45)
  105. {
  106. return 0;
  107. }
  108. else
  109. {
  110. i=3;
  111. S=0;
  112. }
  113. }
  114. }
  115. }
  116.  
  117. return 1;
  118. }
  119.  
Success #stdin #stdout 0s 3472KB
stdin
1
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
stdout
TAK