a.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import os, argparse
  2. def solve_task(lines):
  3. index = 1
  4. indices = []
  5. left = None
  6. right = None
  7. for line in lines:
  8. if line == "":
  9. if compare(left, right):
  10. indices.append(index)
  11. left = None
  12. right = None
  13. index += 1
  14. elif left is None:
  15. left = eval(line)
  16. elif right is None:
  17. right = eval(line)
  18. else:
  19. exit(-1)
  20. if compare(left, right):
  21. indices.append(index)
  22. print(f"Indices in correct order: {indices}")
  23. print(f"Sum gives {sum(indices)}")
  24. def compare(left,right):
  25. if isinstance(left, int) and isinstance(right, int):
  26. if left == right:
  27. return "undetermined"
  28. else:
  29. return left < right
  30. elif isinstance(left, int):
  31. return compare([left], right)
  32. elif isinstance(right, int):
  33. return compare(left, [right])
  34. else:
  35. for i in range(min(len(left), len(right))):
  36. comp = compare(left[i], right[i])
  37. if comp == "undetermined":
  38. continue
  39. else:
  40. return comp
  41. if len(left) < len(right):
  42. return True
  43. elif len(right) < len(left):
  44. return False
  45. else:
  46. return "undetermined"
  47. def read_lines(filename):
  48. lines = []
  49. with open(filename) as infile:
  50. for raw_line in infile:
  51. line = raw_line.rstrip()
  52. lines.append(line)
  53. return lines
  54. def parse_arguments():
  55. parser = argparse.ArgumentParser(description="Script that solves the case",epilog="Have a nice day!")
  56. parser.add_argument('filename', nargs='?', default="example.txt", help='Input file')
  57. args = parser.parse_args()
  58. return args
  59. def main():
  60. args = parse_arguments()
  61. lines = read_lines(args.filename)
  62. solve_task(lines)
  63. if __name__ == "__main__":
  64. main()