What do you think it is?
My first insinct was similar, add line breaks to the do and dont modifiers. But I got toa caught up thinking id have to keep track of the added characters, I wound up just abusing split()-
I did part 2 live with the python interactive shell. I deleted all the stuff where I was just exploring ideas.
part 1:
import re
def multiply_and_add(data: "str") -> int:
digit_matches = re.findall(r"mul\(\d{0,3},\d{0,3}\)", data)
result = 0
for _ in digit_matches:
first = _.split("(")[1].split(")")[0].split(",")[0]
second = _.split("(")[1].split(")")[0].split(",")[1]
result += int(first) * int(second)
return result
with open("input") as file:
data = file.read()
answer = multiply_and_add(data)
print(answer)
part 2:
Python 3.11.2 (main, Aug 26 2024, 07:20:54) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import solution2
<re.Match object; span=(647, 651), match='do()'>
>>> from solution2 import *
>>> split_on_dont = data.split("don't()")
>>> valid = []
>>> valid.append(split_on_dont[0])
>>> for substring in split_on_dont[1:]:
... subsubstrings = substring.split("do()", maxsplit=1)
... for subsubstring in subsubstrings[1:]:
... valid.append(subsubstring)
...
>>> answer = 0
>>> for _ in valid:
... answer += multiply_and_add(_)
...
>>> answer
103811193
this took me so fucking long and in the end i just went for brute force anyway. there are still remnants of some of previous, overly complicated, failed attempts, like the hideous global removed. In the end, I realized I was fucking up by using remove() instead of pop(), it was causing cases with duplicates where the removal of one would yield a safe result to count as unsafe.
def is_safe(report: list[int]) -> bool:
global removed
acceptable_range = [_ for _ in range(-3,4) if _ != 0]
diffs = []
if any([report.count(x) > 2 for x in report]):
return False
for i, num in enumerate(report[:-1]):
cur = num
next = report[i+1]
difference = cur - next
diffs.append(difference)
if difference not in acceptable_range:
return False
if len(diffs) > 1:
if diffs[-1] * diffs[-2] <= 0:
return False
return True
with open('input') as reports:
list_of_reports = reports.readlines()[:-1]
count = 0
failed_first_pass = []
failed_twice = []
for reportsub in list_of_reports:
levels = [int(l) for l in reportsub.split()]
original = levels.copy()
if is_safe(levels):
safe = True
count += 1
else:
failed_first_pass.append(levels)
for report in failed_first_pass:
print(report)
working_copy = report.copy()
for i in range(len(report)):
safe = False
working_copy.pop(i)
print("checking", working_copy)
if is_safe(working_copy):
count += 1
safe = True
break
else:
working_copy = report.copy()
print(count)
Sometimes the service freezes for me and cant be killed, requiring a restart.
I tend to agree with you. I work in a retail pharmacy and literally have had nightmares about work. Some folks dont know how good they have it. But in their defense satisfaction is an unfortunately ephemeral beast. When i first switched from the floor to pharmacy i was happier than id been in years. I still wouldn't go backwards, but god damn some days i would love a job where i can sit down and the only customer i have to worry about is my boss.
That was before learned helplessness became a staple of the internet experience, i think a lot fewer reddit users will be motivated to leave compared to the people who left digg for reddit.
Happy to be proven wrong, though.
Ive just been booting straight into sway
Why else would i participate in programming discourse on facebook
Hammerheart
0 post score0 comment score
I'm pretty confident it was written by an LLM.