a.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import os, argparse
  2. import numpy as np
  3. class bingo_brick:
  4. brick = None
  5. marks = None
  6. def __init__(self):
  7. self.marks = np.ones((5,5))
  8. self.brick = np.ndarray((0))
  9. def append_row(self, row):
  10. if self.brick.size == 0:
  11. self.brick = np.array(row)
  12. else:
  13. self.brick = np.vstack((self.brick, row))
  14. def mark(self, mark):
  15. #self.marks[ där self.brick == mark ] = 0
  16. self.marks = np.where(self.brick == mark, 0, self.mark)
  17. pass
  18. def bingo(self):
  19. return False
  20. def __str__(self):
  21. result = ''
  22. if self.brick.size > 0:
  23. result = str(self.brick) + '\n'
  24. result += str(self.mark)
  25. else:
  26. result = "Empty brick"
  27. return result
  28. def solve_task(filename):
  29. marks = []
  30. bingo_bricks = []
  31. with open(filename) as infile:
  32. # Read first line of mark announcements
  33. marks_str = infile.readline().rstrip().split(',')
  34. marks = [int(k) for k in marks_str]
  35. # Read the bingo bricks line by line
  36. for raw_line in infile:
  37. line = raw_line.rstrip()
  38. if len(line) == 0: # Empty row separates bingo bricks
  39. bingo_bricks.append(bingo_brick())
  40. else:
  41. bingo_line_str = line.split()
  42. bingo_line = [int(k) for k in bingo_line_str]
  43. bingo_bricks[-1].append_row(bingo_line)
  44. # Time to play some bingo!
  45. # Iterate the mark announcements
  46. winning_brick = None
  47. for mark in marks:
  48. for brick in bingo_bricks:
  49. brick.mark(mark)
  50. if brick.bingo():
  51. break
  52. if winning_brick:
  53. break
  54. if winning_brick:
  55. print(winning_brick)
  56. for brick in bingo_bricks:
  57. print(brick)
  58. os.system("pause")
  59. def parse_arguments():
  60. parser = argparse.ArgumentParser(description="Script that solves the case",epilog="Have a nice day!")
  61. parser.add_argument('filename', nargs='?', default="example.txt", help='Input file')
  62. args = parser.parse_args()
  63. return args
  64. def main():
  65. args = parse_arguments()
  66. solve_task(args.filename)
  67. if __name__ == "__main__":
  68. main()