Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.87 KB | None | 0 0
  1. def main():
  2.     cages = parse_cages()
  3.     grid = [[0, 0, 0, 0, 0] for x in range(5)]
  4.     i = 0
  5.     while i < 25:
  6.         if grid[i // 5][i % 5] <= 4:
  7.             grid[i // 5][i % 5] += 1
  8.             if (validate_rows(grid) and validate_rows(transpose(grid)) and
  9.                 validate_cages(grid, cages)):
  10.                 i += 1
  11.             else:
  12.                 pass
  13.         else:
  14.             grid[i // 5][i % 5] = 0
  15.             i -= 1
  16.     print_answer(grid)
  17.  
  18.  
  19. def print_answer(grid):
  20.     for row in grid:
  21.         line = ""
  22.         for x in row:
  23.             line += str(x) + " "
  24.         print(line.strip())
  25.  
  26.  
  27. def parse_cages():
  28.     cages = []
  29.     num_of_cage = int(input())
  30.     for i in range(num_of_cage):
  31.         cage = input().split( )
  32.         cages.append([int(x) for x in cage])
  33.     return cages
  34.  
  35.  
  36. def transpose(grid):
  37.     transposed_list = []
  38.     for i in range(len(grid[0])):
  39.         new_list = []
  40.         for row in range(len(grid)):
  41.             new_list.append(grid[row][i])
  42.         transposed_list.append(new_list)
  43.     return transposed_list
  44.  
  45.  
  46. def validate_rows(grid):
  47.     for row in range(len(grid)):
  48.         for i in range(len(grid[row])):
  49.             if grid[row][i] > 0 and grid[row][i] in grid[row][i + 1:]:
  50.                 return False
  51.     return True
  52.  
  53.  
  54. def validate_cages(grid, cages):
  55.     for i in range(len(cages)):
  56.         cage = cages[i]
  57.         cage_sum = cage[0]
  58.         num_sum = 0
  59.         grid_list = ([grid[cage[num] // 5][cage[num] % 5]
  60.                         for num in range(1, len(cage))])
  61.         for num in grid_list:
  62.             num_sum += num
  63.         if 0 in grid_list:
  64.             if not num_sum < cage_sum:
  65.                 return num_sum < cage_sum
  66.         else:
  67.             if num_sum != cage_sum:
  68.                 return num_sum == cage_sum
  69.     return True
  70.  
  71.  
  72. if __name__ == "__main__":
  73.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement