My solutions for Advent of Code 2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.7 KiB

  1. import re
  2. def file_to_string(file_path):
  3. f = open(file_path, "r")
  4. string = f.read()
  5. f.close()
  6. return string
  7. def split_on_empty_lines(string):
  8. return re.split(r"(?:\r?\n){2,}", string.strip())
  9. def remove_newlines(splitted_string):
  10. newlist = []
  11. for i in splitted_string:
  12. i = re.sub("\n", " ", i)
  13. newlist.append(i)
  14. return newlist
  15. def split_at_space(string):
  16. return string.split()
  17. def find_letters(newlines_removed):
  18. amount_of_yes = []
  19. for i in newlines_removed:
  20. list_of_strings = split_at_space(i)
  21. letters_list = [None] * 26
  22. for j in list_of_strings:
  23. if "a" in j:
  24. letters_list[0] = "Yes"
  25. if "b" in j:
  26. letters_list[1] = "Yes"
  27. if "c" in j:
  28. letters_list[2] = "Yes"
  29. if "d" in j:
  30. letters_list[3] = "Yes"
  31. if "e" in j:
  32. letters_list[4] = "Yes"
  33. if "f" in j:
  34. letters_list[5] = "Yes"
  35. if "g" in j:
  36. letters_list[6] = "Yes"
  37. if "h" in j:
  38. letters_list[7] = "Yes"
  39. if "i" in j:
  40. letters_list[8] = "Yes"
  41. if "j" in j:
  42. letters_list[9] = "Yes"
  43. if "k" in j:
  44. letters_list[10] = "Yes"
  45. if "l" in j:
  46. letters_list[11] = "Yes"
  47. if "m" in j:
  48. letters_list[12] = "Yes"
  49. if "n" in j:
  50. letters_list[13] = "Yes"
  51. if "o" in j:
  52. letters_list[14] = "Yes"
  53. if "p" in j:
  54. letters_list[15] = "Yes"
  55. if "q" in j:
  56. letters_list[16] = "Yes"
  57. if "r" in j:
  58. letters_list[17] = "Yes"
  59. if "s" in j:
  60. letters_list[18] = "Yes"
  61. if "t" in j:
  62. letters_list[19] = "Yes"
  63. if "u" in j:
  64. letters_list[20] = "Yes"
  65. if "v" in j:
  66. letters_list[21] = "Yes"
  67. if "w" in j:
  68. letters_list[22] = "Yes"
  69. if "x" in j:
  70. letters_list[23] = "Yes"
  71. if "y" in j:
  72. letters_list[24] = "Yes"
  73. if "z" in j:
  74. letters_list[25] = "Yes"
  75. amount_of_yes.append(letters_list.count("Yes"))
  76. return amount_of_yes
  77. def find_total_yes(amount_of_yes):
  78. total = 0
  79. for i in amount_of_yes:
  80. total = total + i
  81. return total
  82. string = file_to_string("day6input.txt")
  83. splitted_string = split_on_empty_lines(string)
  84. newlines_removed = remove_newlines(splitted_string)
  85. amount_of_yes = find_letters(newlines_removed)
  86. total_yes = find_total_yes(amount_of_yes)
  87. print(total_yes)