[-] Hammerheart@programming.dev 1 points 9 months ago

I'm pretty confident it was written by an LLM.

[-] Hammerheart@programming.dev 1 points 1 year ago

What do you think it is?

[-] Hammerheart@programming.dev 1 points 2 years ago

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()-

[-] Hammerheart@programming.dev 1 points 2 years ago

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
[-] Hammerheart@programming.dev 1 points 2 years ago

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.

[-] Hammerheart@programming.dev 1 points 2 years ago
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)
[-] Hammerheart@programming.dev 1 points 2 years ago

Sometimes the service freezes for me and cant be killed, requiring a restart.

[-] Hammerheart@programming.dev 1 points 2 years ago

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.

[-] Hammerheart@programming.dev 1 points 2 years ago

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.

[-] Hammerheart@programming.dev 1 points 2 years ago

Ive just been booting straight into sway

[-] Hammerheart@programming.dev 1 points 2 years ago

Why else would i participate in programming discourse on facebook

view more: โ€น prev next โ€บ

Hammerheart

0 post score
0 comment score
joined 3 years ago