You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I wrote one script with readbaron to remove code comments.
from redbaron import RedBaron
def remove_comments_with_redbaron(source_py_file):
with open(source_py_file, 'r', encoding='utf-8') as file:
red = RedBaron(file.read())
comments = red.find_all('comment')
for comment in comments:
comment.parent.remove(comment)
return red.dumps()
def main():
source_py_file = input("Enter the path to the .py file to clean up: ")
new_content = remove_comments_with_redbaron(source_py_file)
new_file_name = source_py_file.replace('.py', '_nocmts.py')
with open(new_file_name, 'w', encoding='utf-8') as new_file:
new_file.write(new_content)
print(f"Cleaned file has been saved as: {new_file_name}")
if __name__ == '__main__':
main()
But there may be indentation errors in the output file.
.py file I used:
from collections import deque
from math import lcm
lines = [x for x in open('E:\\ExplorerDownload\input_day20.txt').read().strip().split('\n')]
adj = {}
conjs = {}
ffs = {}
rx_conj = ""
for line in lines:
module, dests = line.split(" -> ")
dests = dests.split(", ")
t = module[0]
if module == "broadcaster":
adj["broadcaster"] = dests
else:
label = module[1:]
adj[label] = dests
if "rx" in dests:
rx_conj = label
if t == "&":
conjs[label] = {}
if t == "%":
ffs[label] = False
for label, dests in adj.items():
for dest in dests:
if dest in conjs:
conjs[dest][label] = 0
low_pulses = 0
high_pulses = 0
presses = 0
rx_conj_presses = {}
def press():
global low_pulses, high_pulses, presses
presses += 1
low_pulses += 1 + len(adj["broadcaster"])
queue = deque()
for dest in adj["broadcaster"]:
queue.append((0, "broadcaster", dest))
while queue:
pulse, src, label = queue.popleft()
if label == "rx":
continue
# conjunction
to_send = 0
if label in conjs:
conjs[label][src] = pulse
if any(n == 0 for n in conjs[label].values()):
to_send = 1
# flip-flop
if label in ffs:
if pulse == 1:
continue
ffs[label] = not ffs[label]
if ffs[label]:
to_send = 1
# increment low or high pulses
if to_send == 1:
high_pulses += len(adj[label])
else:
low_pulses += len(adj[label])
# send pulse to destination modules
for dest in adj[label]:
queue.append((to_send, label, dest))
# check if any of the inputs connected to the conjunction
# connected to "rx" are one and record the number of presses
for label, val in conjs[rx_conj].items():
if val == 1 and label not in rx_conj_presses:
rx_conj_presses[label] = presses
for _ in range(1000):
press()
print(low_pulses * high_pulses)
while len(rx_conj_presses) < 4:
press()
print(lcm(*rx_conj_presses.values()))
The text was updated successfully, but these errors were encountered:
I wrote one script with readbaron to remove code comments.
But there may be indentation errors in the output file.
.py file I used:
The text was updated successfully, but these errors were encountered: