Advertisement
Hydron

Untitled

Apr 17th, 2022
945
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.47 KB | None | 0 0
  1. from typing import List
  2. from typing import Set
  3.  
  4. def f(cnt: List[int], s: Set[int], pos: int, res_matrix: List[int], n: int) -> bool:
  5.     if pos >= n*n:
  6.         for i in range(0, n):
  7.             dif_row = 0
  8.             for j in range(0, n):
  9.                 if (j % 2 == 0):
  10.                     dif_row += res_matrix[i*n+j]
  11.                 else:
  12.                     dif_row -= res_matrix[i*n+j]
  13.             if dif_row % 11 != 0:
  14.                 return False
  15.         for j in range(0, n):
  16.             dif_col = 0
  17.             for i in range(0, n):
  18.                 if (i%2 == 0):
  19.                     dif_col += res_matrix[i*n+j]
  20.                 else:
  21.                     dif_col -= res_matrix[i*n+j]
  22.             if dif_col % 11 != 0:
  23.                 return False
  24.         for i in range(0, n):
  25.             for j in range(0, n):
  26.                 print(res_matrix[i*n+j], end=' ')
  27.             print()
  28.         return True
  29.     else:
  30.         for i in s:
  31.             res_matrix[pos] = i
  32.             cnt[i] -= 1
  33.             if cnt[i] == 0:
  34.                 s.remove(i)
  35.             if f(cnt, s, pos+1, res_matrix, n):
  36.                 return True
  37.             cnt[i] += 1
  38.             if cnt[i] == 1:
  39.                 s.add(i)
  40.         return False
  41.  
  42. n = int(input())
  43. a = list(map(int, input().split()))
  44.  
  45. cnt = [0] * 10
  46. s = set()
  47. for i in a:
  48.     if cnt[i] == 0:
  49.         s.add(i)
  50.     cnt[i] += 1
  51.  
  52. if not f(cnt, s, 0, [0]*(n*n), n):
  53.     print("Opps, looks like it's impossible :(")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement