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()-
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)
Codewars is a cool leetcode-esque thing with less of the corporate dystopia sheen.
Idk, I still think information wants to be free. If you figured it out just farting around, sophisticated malevolent actors are likely already doing similar things. Might be better to let the genie out of the bottle, so people can learn to be skeptical. Deep fakes are optimally effective when a majority still accepts the veracity of images as an article of faith.
lgtm
Really, you already use gimp, but not linux?
Duckduckgo has a no javascript mode.
Thats actually not a terrible idea.
If anything, their tech hours got reduced.
Damn, I wanted to mention sqlite.
I find it easier using my pinky to hit ctrl than taking my fingers off the home row to use the arrow keys.
ctrl-b: move cursor back one character
ctrl-f: move cursor foward one character
ctrl-d: delete character under cursor
what do you mean by the Fuck you pay me thing?
Its pretty cool he mentioned the work of doug engelbert. I recently finished a book called ‘what the dormouse said: how the 60s counterculture shaped the personal computer.’ Kay’s comment makes me feel that was not just a bit of trivia, but a glimpse into the potential of computing that is tsill yet to be realized.
That really pisses me off.
I thought id give flatpak firefox a shot and the profiles are broken. I might be able to fix it by making some symlinks but it left a bad taste in my mouth. I was unable to get it to recognize my userChrome.css
I needed to read this. Thank you.