Guest User

Generation code

a guest
Dec 14th, 2023
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.91 KB | None | 0 0
  1. import re
  2. from itertools import product, chain
  3. text = re.sub(r"[^\d\n*.]", ".", open(0).read())
  4. vertical_null = [
  5.     r" [\d*.] [\d*.]   \.     \.     \.   [\d*.] [\d*.] ",
  6. ]
  7. vertical_options = [
  8.     r" [\d*.]   \.  (  \d  )  \.     \.   [\d*.] [\d*.] ",
  9.     r" [\d*.] [\d*.]   \.  (  \d  )  \.   [\d*.] [\d*.] ",
  10.     r" [\d*.] [\d*.]   \.     \.  (  \d  )  \.   [\d*.] ",
  11.     r"   \.  (  \d     \d  )  \.     \.   [\d*.] [\d*.] ",
  12.     r" [\d*.]   \.  (  \d     \d  )  \.   [\d*.] [\d*.] ",
  13.     r" [\d*.] [\d*.]   \.  (  \d     \d  )  \.   [\d*.]",
  14.     r" [\d*.] [\d*.]   \.     \.  (  \d     \d  )  \.   ",
  15.     r"(  \d     \d     \d  )  \.     \.   [\d*.] [\d*.] ",
  16.     r"   \.  (  \d     \d     \d  )  \.   [\d*.] [\d*.] ",
  17.     r" [\d*.]   \.  (  \d     \d     \d  )  \.   [\d*.] ",
  18.     r" [\d*.] [\d*.]   \.  (  \d     \d     \d  )  \.   ",
  19.     r" [\d*.] [\d*.]   \.     \.  (  \d     \d     \d  )",
  20. ]
  21. vertical_special = [
  22.     r" [\d*.]   \.  (  \d  )  \.  (  \d  )  \.   [\d*.] ",
  23.     r"   \.  (  \d     \d  )  \.  (  \d  )  \.   [\d*.] ",
  24.     r"(  \d     \d     \d  )  \.  (  \d  )  \.   [\d*.] ",
  25.     r" [\d*.]   \.  (  \d  )  \.  (  \d     \d  )  \.   ",
  26.     r" [\d*.]   \.  (  \d  )  \.  (  \d     \d     \d  )",
  27.     r"   \.  (  \d     \d  )  \.  (  \d     \d  )  \.   ",
  28.     r"(  \d     \d     \d  )  \.  (  \d     \d  )  \.   ",
  29.     r"   \.  (  \d     \d  )  \.  (  \d     \d     \d  )",
  30.     r"(  \d     \d     \d  )  \.  (  \d     \d     \d  )",
  31. ]
  32. left_null = [
  33.     r" [\d*.] [\d*.]   \.   ",
  34. ]
  35. left_options = [
  36.     r"(  \d     \d     \d  )",
  37.     r"   \.  (  \d     \d  )",
  38.     r"   \.     \.  (  \d  )",
  39. ]
  40. right_null = [
  41.     r"   \.   [\d*.] [\d*.] ",
  42. ]
  43. right_options = [
  44.     r"(  \d  )  \.     \.   ",
  45.     r"(  \d     \d  )  \.   ",
  46.     r"(  \d     \d     \d  )",
  47. ]
  48. option_products = [
  49.     product(vertical_options, left_options, right_null   , vertical_null   ),
  50.     product(vertical_options, left_null   , right_options, vertical_null   ),
  51.     product(vertical_options, left_null   , right_null   , vertical_options),
  52.     product(vertical_null   , left_options, right_null   , vertical_options),
  53.     product(vertical_null   , left_null   , right_options, vertical_options),
  54.     product(vertical_null   , left_options, right_options, vertical_null   ),
  55.     product(vertical_special, left_null   , right_null   , vertical_null   ),
  56.     product(vertical_null   , left_null   , right_null   , vertical_special),
  57. ]
  58. pattern = []
  59. for above, left, right, below in chain.from_iterable(option_products):
  60.     above, left, right, below = above.replace(" ", ""), left.replace(" ", ""), right.replace(" ", ""), below.replace(" ", "")
  61.     pattern.append(rf"(?:(?<={above}.{{134}}{left})\*(?={right}.{{134}}{below}))")
  62. pattern = "|".join(pattern)
  63. pattern = rf"(?s)(?:{pattern})"
  64. pattern = re.compile(pattern)
  65. res = re.findall(pattern, text)
  66. print(sum(int(x) * int(y) for x, y in [(*filter(None, x),) for x in res]))
  67.  
Advertisement
Add Comment
Please, Sign In to add comment