Compare commits
No commits in common. "main" and "day1" have entirely different histories.
34 changed files with 0 additions and 5501 deletions
|
@ -1 +0,0 @@
|
|||
125 17
|
|
@ -1 +0,0 @@
|
|||
3279 998884 1832781 517 8 18864 28 0
|
|
@ -1,50 +0,0 @@
|
|||
from tqdm import tqdm
|
||||
from argparse import ArgumentParser
|
||||
import sys
|
||||
|
||||
sys.setrecursionlimit(10**7)
|
||||
|
||||
def transform(num_str: str) -> list:
|
||||
# Apply one iteration of the rules
|
||||
if num_str == '0':
|
||||
return ["1"]
|
||||
elif len(num_str) % 2 == 0:
|
||||
half = len(num_str) // 2
|
||||
return [str(int(num_str[:half])), str(int(num_str[half:]))]
|
||||
else:
|
||||
return [str(int(num_str) * 2024)]
|
||||
|
||||
def expand(num: str, iteration: int, cache: dict) -> int:
|
||||
# Returns count of stones after 'iteration' blinks
|
||||
if iteration == 0:
|
||||
return 1
|
||||
key = (num, iteration)
|
||||
if key in cache:
|
||||
return cache[key]
|
||||
nxt = transform(num)
|
||||
total = 0
|
||||
for n in nxt:
|
||||
total += expand(n, iteration - 1, cache)
|
||||
cache[key] = total
|
||||
return total
|
||||
|
||||
def main(input_str: str, iterations: int) -> int:
|
||||
stones = input_str.split(" ")
|
||||
cache = {}
|
||||
count = 0
|
||||
with tqdm(total=len(stones), desc="Expanding stones") as pbar:
|
||||
for s in stones:
|
||||
count += expand(s, iterations, cache)
|
||||
pbar.update(1)
|
||||
return count
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = ArgumentParser()
|
||||
parser.add_argument("-p", "--part")
|
||||
parser.add_argument("-f", "--file")
|
||||
args = parser.parse_args()
|
||||
|
||||
inp = open(args.file, 'r').read().strip()
|
||||
iters = 25 if args.part == "1" else (75 if args.part == "2" else None)
|
||||
|
||||
print(main(inp, iters))
|
|
@ -1,15 +0,0 @@
|
|||
Button A: X+94, Y+34
|
||||
Button B: X+22, Y+67
|
||||
Prize: X=8400, Y=5400
|
||||
|
||||
Button A: X+26, Y+66
|
||||
Button B: X+67, Y+21
|
||||
Prize: X=12748, Y=12176
|
||||
|
||||
Button A: X+17, Y+86
|
||||
Button B: X+84, Y+37
|
||||
Prize: X=7870, Y=6450
|
||||
|
||||
Button A: X+69, Y+23
|
||||
Button B: X+27, Y+71
|
||||
Prize: X=18641, Y=10279
|
1279
day13/input.txt
1279
day13/input.txt
File diff suppressed because it is too large
Load diff
|
@ -1,78 +0,0 @@
|
|||
from argparse import ArgumentParser
|
||||
|
||||
def parse_line(line: str) -> tuple[int, int]:
|
||||
line = line.strip()
|
||||
parts = line.split(':', 1)
|
||||
coords_part = parts[1].strip()
|
||||
x_part, y_part = coords_part.split(',')
|
||||
x_val = x_part.strip()[1:]
|
||||
y_val = y_part.strip()[1:]
|
||||
return int(x_val), int(y_val)
|
||||
|
||||
def is_solvable(XA, YA, XB, YB, Xp, Yp, max_presses=100):
|
||||
best_cost = None
|
||||
for a in range(max_presses+1):
|
||||
for b in range(max_presses+1):
|
||||
X = XA * a + XB * b
|
||||
Y = YA * a + YB * b
|
||||
if X == Xp and Y == Yp:
|
||||
cost = 3*a + b
|
||||
if best_cost is None or cost < best_cost:
|
||||
best_cost = cost
|
||||
return best_cost
|
||||
|
||||
def format_buttons(a: str, b: str, prize: str) -> dict:
|
||||
XA, YA = parse_line(a)
|
||||
XB, YB = parse_line(b)
|
||||
_, p_coords = prize.split(':', 1)
|
||||
p_coords = p_coords.strip()
|
||||
# p_coords = "X=8400, Y=5400"
|
||||
x_part, y_part = p_coords.split(',')
|
||||
Xp = int(x_part.strip()[2:])
|
||||
Yp = int(y_part.strip()[2:])
|
||||
return {
|
||||
"A": {"X": XA, "Y": YA},
|
||||
"B": {"X": XB, "Y": YB},
|
||||
"PRIZE": {"X": Xp, "Y": Yp}
|
||||
}
|
||||
|
||||
def main(machines: list[list[str]]) -> int:
|
||||
results = []
|
||||
for part in machines:
|
||||
button_a = part[0]
|
||||
button_b = part[1]
|
||||
prize = part[2]
|
||||
|
||||
formatted = format_buttons(button_a, button_b, prize)
|
||||
|
||||
XA, YA = formatted["A"]["X"], formatted["A"]["Y"]
|
||||
XB, YB = formatted["B"]["X"], formatted["B"]["Y"]
|
||||
Xp, Yp = formatted["PRIZE"]["X"], formatted["PRIZE"]["Y"]
|
||||
|
||||
cost = is_solvable(XA, YA, XB, YB, Xp, Yp, max_presses=100)
|
||||
if cost is not None:
|
||||
results.append(cost)
|
||||
|
||||
if not results:
|
||||
return 0
|
||||
return sum(results)
|
||||
|
||||
|
||||
def parse_input(input_file) -> list[list[str]]:
|
||||
with open(input_file, "r") as f:
|
||||
content = f.read().strip()
|
||||
machine_blocks = content.split("\n\n")
|
||||
machines = []
|
||||
for block in machine_blocks:
|
||||
lines = block.strip().splitlines()
|
||||
if len(lines) == 3:
|
||||
machines.append(lines)
|
||||
return machines
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = ArgumentParser(description="Solve claw machine problem")
|
||||
parser.add_argument("-f", "--file", required=True, help="Input file")
|
||||
args = parser.parse_args()
|
||||
input_data = parse_input(args.file)
|
||||
print(main(input_data))
|
|
@ -1,70 +0,0 @@
|
|||
from argparse import ArgumentParser
|
||||
import sys
|
||||
|
||||
sys.setrecursionlimit(10**7)
|
||||
|
||||
OFFSET = 10_000_000_000_000
|
||||
|
||||
def parse_line(line: str) -> tuple[int, int]:
|
||||
line = line.strip()
|
||||
_, coords = line.split(":", 1)
|
||||
coords = coords.strip()
|
||||
x_part, y_part = coords.split(",")
|
||||
x_val = x_part.strip()[1:].replace("=", "")
|
||||
y_val = y_part.strip()[1:].replace("=", "")
|
||||
return int(x_val), int(y_val)
|
||||
|
||||
def parse_input(in_path: str) -> list[list[str]]:
|
||||
with open(in_path, "r") as f:
|
||||
content = f.read().strip()
|
||||
blocks = content.split("\n\n")
|
||||
res = []
|
||||
for block in blocks:
|
||||
lines = block.strip().splitlines()
|
||||
if len(lines) == 3:
|
||||
res.append(lines)
|
||||
return res
|
||||
|
||||
def extended_gcd(a: int, b: int) -> tuple[int, int, int]:
|
||||
if b == 0:
|
||||
return a, 1, 0
|
||||
g, x1, y1 = extended_gcd(b, a % b)
|
||||
return g, y1, x1 - (a // b)*y1
|
||||
|
||||
def solve_diophantine_system(xa: int, ya: int, xb: int, yb: int, xp: int, yp: int) -> tuple[int, int] | None:
|
||||
# Solve: xa*a + xb*b = xp and ya*a + yb*b = yp
|
||||
D = xa*yb - xb*ya
|
||||
if D == 0:
|
||||
return None
|
||||
a_num = yb*xp - xb*yp
|
||||
b_num = xa*yp - ya*xp
|
||||
if a_num % D != 0 or b_num % D != 0:
|
||||
return None
|
||||
a0 = a_num // D
|
||||
b0 = b_num // D
|
||||
if a0 < 0 or b0 < 0:
|
||||
return None
|
||||
return a0, b0
|
||||
|
||||
def main(in_path: str) -> int:
|
||||
machines = parse_input(in_path)
|
||||
costs = []
|
||||
for m in machines:
|
||||
xa, ya = parse_line(m[0])
|
||||
xb, yb = parse_line(m[1])
|
||||
xp, yp = parse_line(m[2])
|
||||
xp += OFFSET
|
||||
yp += OFFSET
|
||||
sol = solve_diophantine_system(xa, ya, xb, yb, xp, yp)
|
||||
if sol is not None:
|
||||
a, b = sol
|
||||
costs.append(3*a + b)
|
||||
if not costs:
|
||||
return 0
|
||||
return sum(costs)
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = ArgumentParser()
|
||||
parser.add_argument("-f", "--file", required=True)
|
||||
args = parser.parse_args()
|
||||
print(main(args.file))
|
1001
day2/input.txt
1001
day2/input.txt
File diff suppressed because it is too large
Load diff
|
@ -1,23 +0,0 @@
|
|||
def is_safe(report):
|
||||
levels = list(map(int, report.split()))
|
||||
differences = [levels[i+1] - levels[i] for i in range(len(levels) - 1)]
|
||||
|
||||
if all(-3 <= diff <= -1 for diff in differences) or all(1 <= diff <= 3 for diff in differences):
|
||||
return True
|
||||
return False
|
||||
|
||||
def count_safe_reports(data):
|
||||
reports = data.strip().split('\n')
|
||||
safe_count = sum(is_safe(report) for report in reports)
|
||||
return safe_count
|
||||
|
||||
data = """7 6 4 2 1
|
||||
1 2 7 8 9
|
||||
9 7 6 2 1
|
||||
1 3 2 4 5
|
||||
8 6 4 4 1
|
||||
1 3 6 7 9"""
|
||||
data = open('input.txt', 'r').read()
|
||||
safe_reports = count_safe_reports(data)
|
||||
print(f"Number of safe reports: {safe_reports}")
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
def is_safe(report):
|
||||
levels = list(map(int, report.split()))
|
||||
differences = [levels[i+1] - levels[i] for i in range(len(levels) - 1)]
|
||||
|
||||
if all(-3 <= diff <= -1 for diff in differences) or all(1 <= diff <= 3 for diff in differences):
|
||||
return True
|
||||
return False
|
||||
|
||||
def with_dampener_safe(report):
|
||||
levels = report.split()
|
||||
if is_safe(report):
|
||||
return True
|
||||
for i in range(len(levels)):
|
||||
modified_report = ' '.join(levels[:i] + levels[i+1:])
|
||||
if is_safe(modified_report):
|
||||
return True
|
||||
return False
|
||||
|
||||
def count_safe_reports_with_dampener(data):
|
||||
reports = data.strip().split('\n')
|
||||
safe_count = sum(with_dampener_safe(report) for report in reports)
|
||||
return safe_count
|
||||
|
||||
data = """7 6 4 2 1
|
||||
1 2 7 8 9
|
||||
9 7 6 2 1
|
||||
1 3 2 4 5
|
||||
8 6 4 4 1
|
||||
1 3 6 7 9"""
|
||||
data = open('input.txt', 'r').read()
|
||||
safe_reports_with_dampener = count_safe_reports_with_dampener(data)
|
||||
print(f"Number of safe reports with the Problem Dampener: {safe_reports_with_dampener}")
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
^<when()]'>mul(721,815)who()&[how()mul(990,467)select()<mul(252,360)}mul(733,661)?>why();what(327,762)?@mul(636,928),[!#$??:+do()where()@%>@&],<}mul(766,598)mul(117,278)where()$mul(469,793)[~]where()mul(884,216)mul(795,723){what()mul(184,793)when()!*&mul(87,768)(mul(436,871)>>?::why(645,65)~/why()why()mul(761,50)'&-: &;mul(450,66)>what()-how(244,505)}mul(737,574)$where()who()!select()mul(828,224) %/((mul(612,706)[mul(56,369)<+when(871,669)+when()/^#when()]mul(33,835)when()$what()from()'when(575,599)mul(98,444)(&<from()who()mul(830,449)where()*}where()-'who()mul(933,646)'mul(296,404)select()]mul(799,997)mul(748,99)({}(when(203,995)#:+mul(124,120))mul(681,114) mul(607,559)'[?[</what()<who()when()mul(177,309)}select()>from(399,328)]mul(149,861)%who()mul(493,109)+#(how()!$}-where() mul(992,42)when()>mul(966,422) {mul(128,242){$,when()-what()from()who()<mul(466,707)where()]where()*select(183,299)$from():where(),mul(834,265)}: '[<what()[mul(738,669)+@-?from()<-;mul(253,934)#!!'}(![why()mul(704,145)who()<why():[@mul(107,760)%!,#(>where()/&what()mul(111,554)-+don't()}}/(^(&+mul(130,716)[+<why()select()who()^mul(326,975)~mul(235,464)mul(635,515)/mul(954,178)*what()^]!+<(do()<;where(),[$who()!mul(762,678)~,,-+}+>!/mul(585,272){how()/:who()who()where()mul(638,890)><!!%select()@{!mul(568,705)when(576,297):%where()$/$/}mul(586,693)(**mul(859,687)from()~$$?$!who()(mul(507,491);+mul(993,776)'mul(746,47)<<mul(255,820)^@from()(?>mul(892,569) -/;mul(365,771)mul(703,962)mul(891,916)!why()[{:!why()!mul(85,405)^?$what()where()where()~<do()+&+'why()from()}]<mul(536,49)($from()what()when()mul(455,408)why()(-)+}*-~who()mul(452,399)from()@mul(85,830)@-)mul(734,9)[<!;@*select(){do()why()how()^*<~^where(){mul(986,194)!']^!mul(659,964)<-[>,(select():when()mul(102,589)who()]#when()^do()$when()+*mul(433,264)!%where() mul(676,814){who()mul(791,825)?mul(69,953)}mul(348,556)##how()what()who(){[>?how(151,194)mul(346,158)mul(698,833)>(:mul(249,39)!{<{//~when(){mul(686,621)what()mul(516,43)*who()mul(326,716)select()do()^#$/&mul(692,750)when()&[?->{mul(218,8)&&mulwho() $where()}{}#mul(820,744)/mul(230,927)^ :where(351,105)~/(;mul(900,172)$]{?$#where()mul(652,481)<}don't()*where()select(200,394)select()#who()mul(650,602):}when(552,753)-when()how()'mul(349,401),&how(){'mul(989,165)%$* ,,&mul(906,532)mul(701,543)when():?#what()~+how()mul(113,743)[$;select()!how()mul(68who()mul(153,928)%()^[from()mul(555,552)@select(522,482)mul(295,900)where()/mul(189,189)+'&mul(490,144)++/<mul(252,195)&<<mul(274,206)where()};: why()do()[mul(995,775)~[%&*mul(119,442)(why()what()&)from()%why()where()mul(278,384),mul(2?>&from():why()+*do()how()<?mul(635,799)];>[~when(612,413)-when()?do()}who()mul@/why() {?-%%mul(126,29)@+from();mul(548,673)mul(51,970)--}what()~,what()(mul(261,780)@;'why()>;what()mul(843,665)when();@mul(575,431)]:;>{#mul(123,103);]where()<why()?do()/]<?how(484,347)!-,&mul(513,533)mul(427,500)!:mul(649,325)$'~}'((don't()}!select()+%mul(166,962)how()#why()@/$[>where() mul(331,417)?+select()}when()mul(730,923what()who(514,796)where(716,633);when());why(122,722)(mul(923,885)where()''#'where(645,705)}#select()!don't()where(),,;!}&^mul(609-<why()!@)how()!^ mul(367,932)]@how()**when();;do() @$why()[*what()mul(365,75)?<} what()~~!mul(392,384)-$>'(mul(245,580):mul(898,814)how()+mul(999,143)),select()mul(251,507)(%<:who()why()how()/%mul(192,864)
|
||||
*,/~):^[mul(802,939~;!:@mul(656,831)}]?~mul(92,389)/:who()&why()'mul(698,92):who()]/< @@@mul(956,581)who(252,379),#&,%mul(315,398)mul(518,43)@, &/[* mul(344,100)how();mul(826,831)<when()(>when()select()++'mul(175,965) [ mul(786,297)from()how(520,671):*?]&%]mul(647,834)why()when()select()/mul(585,934)!@<&how()!/mul(965,795)!,@/how())(#{mul(701,685) mul(51,440)/)mul(382,190)@why()how()>>#+;%{mul(808,654)#*mul(128,793)%:->mul(397,504)];$]from()mulselect(533,968))>why();^mul(661,310)mul(415,957)}?&%#@(mul(261,4)*;mul(292,885)!mul(639,791)from()how()when()mul(451,10)mul(853,231)+~+']>mul(543,437)mul(218,441) *mul(447,927)why()from()mul(178,473)how()<*why()[&how()how(),mul(139,541)>~why(644,46) who()what()+~(mul(888,667)^from()&^when()^when()-where():mul(585,185)>from())]+mul(766,787)mul(16,587)%@mul(475,198){<who()select() #-{}]mul(961,363)~%mul(851,371)-(who():$what():>^mul(353,741)&~]$<;]:mul(529,533)where()~mul(980,696)how()when()/*>when()#^don't()![]#[*%-mul(315,512/when(57,948)?why()mul(107,632)%>&who()[mul(554,91):from()!who()?how()why()%#when(313,134)don't()mul(694,300)/~(,+who(382,968)}from()mul(69,889)')why(768,374)+how()mul(338,324)$select()}] select()mul(572,647):from()mul(12,530)mul(651,890)mul~@?mul(841,284)]%^where()mul(201,525)where()(do()&@}]how()<^who()]&mul(166,168)>;mul(419,733)!mul(197,692)select()+>-@'&{who()mul(936,290)select()/when()#(/when()mul(201,918)~,how()>&[@<}'mul(400,452)<&[[%^select(131,478)$where()^mul(31,294)@{who()mul(275,538)^]@;}]&^mul(362,151)~mul(840,788(,/;&why()^[[don't()mul(615,413)where()$mul(404,421)select()@,when()~+%}$mul(157,970)$mul(846,324)what()mul(449,574)-mul(517,831)* +when(478,401)?]mul(991,421)@%mul%select()%who()mul(970,585),&[?/'?~:/mul(831,536)^]how()>mul(577,864)^$+mul(391,353)who()what()@${mul(144,420)])why()* !:mul(595,206),select();<how()(mul(144,67)when()mul(330,108;@select()-%who())mul(682,352)>when()-)mul(723,270)+!*~^]where()mul(629,243)how()(mul(651,134)'')$)why():'$mul(488,642)mul(975:#from()^?%mul(663,263)#+!(from()/;why()(mul(4,649)mul(520,137)*'>mul[?where()-:%;mul(647,34):-what()why()select()-mul(549,57)}mul(917,540)where()?why()when()why()why()/$!select()mul(938,743{mul(61,74)+@mul(405,137)$who()mul(937,685]'^mul(965,910)}what(838,413)mul(975,550){}+?++<'mul(928,26how(128,389)'?>#who()<-select()do()%[how()]select()@<what(24,696)^mul(801,670)mul(957,90)when(608,20)where()&{[select()when()where()(mul(420,232)#)>[ >/ mul(114from()}*what():when()#when();mul(613,512)where()[~~;@(how()^mul(46:where()($mul(773,236)^*from(101,73)$mul(127,952)):?,:<-mul(12,239)mul(683,676)how()/[#mul(650,459)#;'mul(252,579)?from()@[do()mulwhere()]!,->$]~>mul(657,580)select()$>+;when()>mul(983,621)*from()}how()/]#!<{mul(135,869)!@:what()select()}#mul(947,363)mul(267,51)#mul(178,200)mul(131,552)^(why()mul$-+/~-~-^[who()mul(763,94)&(]% ~^/>mul(820,422)&,select()%: !mul(27,886)select()what()+/}^@what(),mul(704,766)*[why()why()mul(358,218)-&>when()mul(432,681)?% ?mul(502,580)]{::'*!]mul(237,998)how()++where()who()from()what()/mul(897,575)how()how()+?&>}mul(696,285)select()] {/(+mul(340,384);mul(164^from()-%~{mul(283,522)&+'%~- )}where()mul(237,601){! ~<mul(505,931)(<mul(69,179))how()(who()%mul(562,715), why(183,43)select()why()where()where()}mul(152,338)-! mul(883,226)who()+{$,do()!;@*^- mul(889,345)
|
||||
#mul(582,654)<&&(%+when(526,400)who()!mul(592,845)'mul(223,737)$#select():from())mul(68,348)who()mul)mul(171,69)who()?;when()#/>mul(19,553)/(#,when()-from()from()!mul(933,578):(@#^from()#>*mul(296,919)from()what()-mul(239,343)~$when()mul(184,945)&!?&+!#when()why()/mul(814,466)@how()where():why()what()%/mul(498$!where()mul(121,233)+<)~select(89,323):;}where()why()mul(293,662)[from()mul~}mul(96,122))when()who()who() ':(<mul(418,555)what(269,422)%!why()]why()-&mul(798,633)#who(128,985)+'+why()[who()do()]mul(469,404)'where()when()from()}from()<mul(111,572);when()@how()mul(161,866)*what()how()@;+/#!mul(230,417)where(){select()~/@what()*;mul(33,798)[what()/>}how()#mul(303,846)+&^%;]select()!why()mul(856,3)$'where()how(),mul(985,407)~mul(75,217)>%@({@don't()how()mul(601,409)]$-}[^@&don't()@>from()mul(313,975)!$when()-;<~+~mul(273,261)[-(mul(849,769)*select()how(480,586)from():+)mul(263,796)%what()why():!{mul(732,962)@mul(541,715)who()</?')^^mul(515,460)^#^~,&@~what(211,792)don't()mul(838,339)from()>:)++-?~select()mul(272,709),%how()&from()where()mul(128,863)-%>mul(66,521);what(),&~@}+:{mul(683,867)^mul(967,554)</select()&how()#$mul(942*mul(943,745)mul(49,774)<}/~}?}<*~mul(122,334)/^from()what(385,735)/'from()~select()[mul(267,146)mul(557,279)[how()$mul(795,502)what()why()mul(422,804)select())(,&!'<+mul(770,454)<mul(347,611@}~where()#^()%'{mul(646,464)mul(360,722)-}):,what(387,646)select()'&where()don't()why()where()mul(280,279)!,{@{![@[mul(275,890)mul(588,483)why(){<why() ;mul(812#do()-$mul(868,147),!}<*how()mul(176,577)how()how()mul(299,254)&[why()mul(106,255)how()<<]select()]]{mul(61,684)&where()^when()?where(63,148)mul(604,419)~]^from()mul(171,532)/why()mul(431,695);%,what(),,mul(256,206)who()[>)+(mul(163,187<:}; where(149,753),-!mul(454,102)]from(581,325)^>^how()?select()~'mul(612,695)>$~;?from(335,390)>;<(mul(158,809)mul(994,415)why()^who()('mul(906,133)[:mul(454,783)select()}/ mul(496,587)&$[)]<*<^%mul(916,337) *where()(,}from()%mul(781,945))^select();why())mul(966,406)!$+(why()}<^mul(118,864)/how()mul(946,437)#{mul(723,269)%*&*^when()$mul(337,544)*-select()!when())]what()[$mul(624,678)&;who()what()how()$@mul(41,821)mul(860,521)&-why()from())@^where()'mul(627,836)?>;?,$mul(862,746)when()from()&~$who()select(171,606)mul(325,203)?from(569,805)<mul(655,515)]mul(155,237)do()&mul(194,966)!$;}--mul(583,204)){^(**@)?mul(752,887)>what()%select()]mul(316,107)?~&&from();^<?^mul(710,748) when()what();'mul(294,295)where()}mul(842,104) from()mul(155,230)where()mul(946,267)]what()^>}&<mul(464,187)%what()how()%who()$[}mul(353,188)how()when()>when()#mul(229,118)what()what()why()-* +%;mul(635,909)mul(965,642)^mul(942select()]{mul(793,836)@/+why()*>/(mul(453,491)>'^where(){select()select()%mul(628,54)*>]?select()$who();mul(508,795)}%!%>mul(823,280)from()%mul(247,633):mul(779,419)/#^*<}?mul(921,457)where() -where(439,307)?+/how()+(mul(231,858) :mul(205,634):[how()?-'^<'mul(160,480)%!)(what()why()^^~,mul(276,727)when()^[ ##select()mul(382,146)where()when():?^[]%-mul(976,132how()^-&how():-)!#/mul(25,564)!(when(464,814)how()when(440,219)who()[~where()mul(956,412))<select()):mul(382,255)when()$'mul-do()*(}mul(652:~$$:where()mul(878,198)''%!who(){do() ]mul(209,22)where()^'why(190,127)where()where()what()+)mul{+select()why()mul(805,74)who()[)^)where()from()!@{mul(428,488) $,'mul(242,86) &,)do()mul(622,801)[mul(267,546))how()!where();how()select()from()<mul(988,89)>]@select()who()$~']'mul(507,562)&}> mulhow()$/ &&,(<-}#!/usr/bin/perl^when():{+^('how()^mul(452,533)@where()?$mul(442,913)how(){]from()select()$how()select()from(),mul(484,240)
|
||||
&mul(444,854)when()mul(774,478)where()&&^ mul(922,900)how()how()]+{what() mul(606,127)from()]what(){[what()mul(721,275)mul(235,360)(%'what()*)mul(572,460)'mul(48,7)who()],where()from()>>mul(593,878)where()%<>&mul(820,458)from()&select(271,971)!do()where():>-mul(355,304)from()(;why();[select()}mul(805,242)+![select();mul(775,789)~mul(628,350)$$from()@(*<mul(242,513) mul(701,110)%*] from()mul(984,986)}select()select()when()why():?<*mul(329,623)mul(179,244)?mul(674,100)*why()?$ >how(){'mul(960,498)why()<>select(440,141)(mul(670,865),>what()+::mul(208,606)mul(329,619)$don't()^from()-where(651,585)how();,how(753,435)>'mul(198,179)~mul(687,19)#->/do()+%$]^mul(36,106)%where()who();)mul(146,12)^/-mul(957$mul(722,483)(^where()mul(791,915)&+^who()!do()}>'%:^:mul(419,941)/don't(){when()+when()~*(^mul(595,305)from()why(),/how()where()]}mul(819;^&what() ]-where()&who()>mul(335,130)what()]where()[/where()what()?;mul(193,281)~,who():+why()mul(346,672)){@do();^>select(629,407)where(){^/!'mul(523,137)]&select()$/?/^mul(757,373)don't();when(648,805)mul(937,925)where()mul(52,179)?*&}>;mul(820,72)from()mul/}from();&!when()what()mul(341,113)%when(),/+@@mul(282,840)%what(845,759)?/%?who(38,906)mul(790,88)select()when()(-}&select()/mul(460,748)}#why()how()^}($from()mul(736,446)#$/don't()@*:<$mul(647,695) where():where()who(){mul(124,189)}:~@mul(567,682)from()''mul(537,138)mul(126,676)>why(){how()/;select()what()mul(211,918)]@*%where()<;;!mul(367,207)',?mul(699,852)what()>,)~mul(223,597)+what()how(556,77)+don't()/@/:[{-mul(610,646)(why()who()how()*}mul(388,590):why()!mul(777,494)[who()+mul(332,45)!:when()mul(107,845)who()(]from()select()mul(518,311){*mul(75,698)(/!~#@$where()!,mul(55,490) :{where()mul(681,43)}~>]--^:$]mul(55,980){;mul(443,44)@mul(750,251)from()$$&#when()>mul(979who()!how()mul(504,318)mul(402,389)[!#@why(525,210)+mul(984,318)when()how()}%/mul(221,803){who()how()~$mul(88,963)>}$&from()where()+]from()%mul(38,316),mul(207,135)who()what()what()+&mul(627,85)]: &?why()?*--mul(79,741)+(?~%!!mul(51,132)where()@where(994,962)mul(691,851)from()+why(): {[mul(543,495&<mul(848,581)from()~mul(264,590)/from()@&#what()what()mul(711,120)who();*)how()who()mul(787,646);/(}why()--]select()*mul(845,59)<mul(783,352)mul(551,759) %-~mul+(when()@~mul(193,897)mul(659,173):-mul(61,698)?*mul(522,371*why(260,477)when()-?)mul(824,502)]}]%+~mul(666,514);mul(208,347)mul(980,919):{;;how()$~mul(307,313)select(){%~[where();mul{ why(434,341)select()}!don't()>#how(){(;how()['mul(352,179)/)+ /~mul(250,222)<select():@%^mul(475,860)mul(364,725)>^+<} mul(719,257)%from()why():^?!^[don't()(,where()$mul(894,942)how()!(where()$mul(506,810) from()}%@)**mul(261,233)mul(179,77)>$mul(248&why()%where())+%}<,who()mul(920,816);mul(384,108>mul(954,663)mul(11,936)who()&%{:mul(698,682)who()select(903,689)who()from()-where()/+mul(332,753) where(){?how(52,910) )(what()mul(580,139)[[~,('mul(762,762)from()~}- ~*^[mul(348,345)%*mul(776,555)how()/when()-!&:+mul(354,880)when()%<>;mul(121,687)-#:]when()why()/::mulwhere()from()mul(353,738)@&}#don't()mul(888,259):{[ +*<from()%when()mul(852,318)select();/(mul(88,561)?why()select()@mul(132,54)where(617,46)*select()+}#mul(385,930),when(130,526);:mul(510how()'mul(889,914)$,+]$$'mul{:from()[who()'mul(68,843)how()mul(507,589):;+,from()(-how()mul(459,293)}{%when()mul(113,241#[]+mul(205,452)]%@:mul(818,114)(?(%]when();^mul(657,405)
|
||||
-where()where()->mul(457,716){from()<!]^%')select()mul(441,310!&'{-<%mul(574,11)&mul(591,262)why()~[{[from())mul(716,62)&{when()select()::/mul(653,828)#,when(554,764)>mul(784,718)::^mul(34,955),from()select(545,368)%!]?/mul(795,164)-?)why()how()'%'[who()mul(754,424)from()-select()from()^mul(772,122)where()where()where()select()?where()%-mul(849,64)what()!$'&++mul(557,560)!? :]select()(mul(824,973)>;?{(mul(333,526)why(),mul(814,560{from()#mul(860,603)what()]{where()select()mul(209,175);when()>where()mul(242,542) [[mul(563,973)-mul-&$;)~why()$%why()mul(443,590)?[<;when()don't()what()where()}where()what()mul(178when()from()where()where(244,944)mul(674,125)'mul(709,133)'<):?&why()<mul(974,750))when()how())[/who()who()why()how()mul(329,218)<$when()$ who() -when()when()mul(382,520)?where()}from()'mul(235,982)mul(114,382)mul(217,835)]*^select()/)^mul(421when() *&select()@[where()mul(816,560)select(){&who())!</do() from()&/:$[]<mul(308,409)]{%how(619,906));mul(266,954)what()''^+'%%}what()mul(343,656)$^}~mul(470,30));what();where(461,603)%%-mulwhen()?how(4,237)[mul(904,717)/why()select()>&>%+,mul) , !-mul(160,387)~&^mul(725,120)who()[]mul(512,611)select()/?mul(617,372)select()>who()[(mul(802,268)-)*&:mul(815,27)]what() )#-,%<&mul(429,97)}!&mul(106,545){~: when()+<mul(783,617)?@*?+mul(54,536)*'?![(mul(28,300)[-^-%~} select()%mul(924,216)don't()#when()+mul(439,873)) $]mul(979,133){*@when()~mul(494,759)}<$+/+~what()~mul(787,884)mul(305,20):@what()/&select();}&select()mul(925*~,%what()/?}mul(694,535)*mul(599,427)what()who()^?&>,mul(438,161/>--<where()++~ who()mul(812,18)from()?~!+mul(503,754)where() mul(503,55)why()mul(775,794)when(787,226){-(mul(807,160)how()'mul(500,952)*who()&'*' ^mul(819,54)from()<<%[from()&don't()%+mul(678,212)@}mul(32,180)mul(141,345)#&how()select()what()mul(337,406)?from()@when()&}};/don't()when()$why()mul(845,651)>mul(818,804)<))don't()[>mul(602,506)mul(55,393)*[:mul(157,531)^don't()?{+mul(554,938)*;mul(385,567:who()>how()&+?*mul(574,353)mul(984,83)-how()-mul(872,273)((mul(517,792)?select()why()^mul(730,625){{'mul(83,516)when()((mul(130,817):mul(519,651)]&/why()!mul(836,209)[%,[mul(213,670) )what()>;@!mul(611,517)>]mul(197,385)@mul(68,987)mul(162,106):when(7,896):mul(796,638)>^!/'>mul(845,941)/where()do()#:what()what()?~&?mul(806,128)]%why()mul(348,883),'+mul(336,235): 'how()mul(855,266)@$^why()mul(742,387)who()!mul(995,906):]]when()<)*from()(&mul(764,180)~how()@# :mul(707,290)#/{@mul(65,579)-who()where(960,596)>*(don't()from(766,430)where()mul(75,404)(when(457,596)#&mul(612,799)#)where()mul(401,474)what()%where()#>+mul(31,289)&>)?/(-mul(189,149)>~,when():mul(985,763)$&who()#%!mul(804,329)>'mul(229,945) don't()who()who(84,291)*select()why(),;,?mul(470,948)from(681,767):*who()&%mul(850,581)what()>(#}%}mul(636%mul(641,599)mul(184,164)mul(575,439);({{mul(738^--^)%mul(60,730)where()^]from()who()-/:what(848,902)mul(958,89)},where(148,634)-mul(371,786)when()?mul(151,757)select(973,278)!)select()]'who(130,338)):mul(644,833)mul(480,246)what()mul(305,497)^mul(233,355),}who(563,221)>who()where()/when()'mul(412,498^how()-$?what()&[select()mul(179,439)&where()^{#[%mul(510,163)when()where(353,632)':mul(629,922)+%}:+how();@how(103,365)}mul(961,420)~select()*~:#mul(914,166)<don't()who()^!@ mul(724,797)&when()(^('mul(797,538~from()$(do()(%$/,$%who() mul(301,788)-/where()}'@[:}mul'mul(474,181) mul(204,444){,from()from()+/(%}mul(49,941)
|
||||
>who()/!why()mul(392,362){<@what(){from()select()why(917,470);why()mul(217,122)~}what()where()$(}mul(422,535)(*how()}&mul(777,997)&[where()]mul(664,558)!/+)*{ why()mul(308,60)~[*how()what(){,!from()where()mul(234,662)*)+who() who(){]{mul(638,389)select()$%;}~how()who()mul(223,862):what()mul(150,399)mul(566,885)mul(231,725)[/mul(230,942)')-:)who()'{where()^mul(400,853)why()@[from()where()&[@<^mul(325,706)+-{mul(115,2)&&?*{mul(954,823);what()mul(600,695)when()how()when()*;:[-mul(78,362)#select()/$(>select()$^mul(981,64)>mul(899,724)what()}who()mul(94,857)@$&<:)mul(142,322)&&;/?*who()?where(315,764)mul(169,174)&/%('mul(340,253);@)[select(607,401))select()mul(683,991)&:how()select()[<#how()mul(186,106){>!(<do(){]who()'how() mul(359,361)>*mul(490,980)(]))from()]where(84,603)mul(342,395what(){)&];why()who()what()[%mul(751,371)who(720,254) why()when()<why(261,166)mul(324,33)when(100,997)select()do()$:'who(808,641)],mul(255,881)when()mul(846,72)]where()[what()/when()what()mul(786,445)$from()&#<),do()'%who()/^:?mul(298,319):mul(899,483how()mul(238,137)^]/$;mul(282,399)mul(485,433)~who(117,520);where()do()mul(111,581)(:>what()}select(455,617)'mul(53,661),:/>:!mul(446,454-?what():$[[+mul(498,205)>(mul(759,494)mul&>?:^'} mul(867,709)mul(605,504)what()[-!}!mul(106?>mul(239,94)+>where()#+! mul(618,663)&--':%mul(57,203)/![:,$select()mul(614,15)^]mul(570,897)what())?who(812,559)<who()~mul(356,480)(,-/} %mul(626,318)who()&mul(931,605)>/*don't()}mul(150,813)&+what()]~!+mul(999,729)[mul(110,688)>:select()@>select()/,who()}mul(22,21)how()~^- $+#from() mul(45,829)don't()([why()+-:>mul(488,321)&*-mul(652,853)>when()^ how()where()select()*mul(468,965)++mul(781,52)why()>+~^}]mul(268,658) ::where()>'mul(233,327):select()?}mul(269,680)/{+>@:(select()$how()mul(322,587)/;mul(406,648):*who()/mul(53,8)don't()::mul(340,161)/?>/&don't()select()*>mul(315,698)]who())how()[,how()how()}mul(987,159)&!mul(979,457)~[-where()#mul(381,476){from(261,299)from()};^,where()from()?mul(681,344)*+when()why()@;(#&don't()~ ,select()where()mul(239,813)!mul(808,143)what()(>select()!what()what()!,mul(494,477)do()select()how()-+where()from()what()!mul(797,39)>}}}+[(^why()how()mul(393,474);{mul(159,285)!how()[}mul(936,615)]mul(311,234):>)why()!mul(70,105),[]mul(143,155)?who()/ +(when()select()~mul(225,35)/^!mul(637,97)~!&*#+<$mul(886,753)what()!]what()(mul(513,884)~how()-+]mul(906,496)+!&where(){>' ;when()mul(302,264)@!~/where()?what()$do()>$who(391,417)what(106,572)mul(97,315)'-mul(211,823)},/mul(460,903)!;#{ }~'mul(264,775)mul(913,491)-when()~%[how()/}?%mul(482,242)@+<:from()$'don't()~;mul(396,591){from():where()]~mul(525,827)when()#why()from() #%*<mul(292,8):!mul(148,504)}'who()*'mul(266,240)@:%who()>who()mul(407,541)*mul(484,568)mul(62,785) what()@what()when()mul(908,348)%>]how()mul(531,232)]<why()mul(949,96)[&~/;(*how()mul(487,341)how()how()'who():!?^[mul(393,246)*when(522,626)mul(782,560)$what()select()~'#from()mul(29,363)# +{>how(827,75)>-don't() <why(372,174)mul(531,413)<%)when()&?<)mul(556,841)@!{%'where()@mul(894,706)'$]]~who()how()mul(852,340)>??++mul(7,189)#do()who()mul(661,112);who()'--;mul(793,568)who()select()-~{mul(937,614)mul(775,294)<'when()~^;+mul(140,643))+<#'
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
import re
|
||||
|
||||
example = """xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))"""
|
||||
input = open('input.txt').read()
|
||||
|
||||
def solve(input) -> bool:
|
||||
find_all = re.findall(r"mul\(\d{1,3},\d{1,3}\)", input)
|
||||
|
||||
print(find_all)
|
||||
|
||||
total = 0
|
||||
for find in find_all:
|
||||
a = find.replace("mul(", "")
|
||||
b = a.replace(")", "")
|
||||
c = b.split(",")
|
||||
|
||||
result = int(c[0])*int(c[1])
|
||||
total += result
|
||||
return total
|
||||
|
||||
|
||||
print(input)
|
||||
print(f"Total: {solve(input)}")
|
|
@ -1,23 +0,0 @@
|
|||
import re
|
||||
|
||||
example = """xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))"""
|
||||
input = open('input.txt').read()
|
||||
|
||||
def process_instructions(text):
|
||||
mul_enabled = True
|
||||
total_sum = 0
|
||||
|
||||
pattern = re.compile(r"(mul\((\d+),(\d+)\))|do\(\)|don't\(\)")
|
||||
for match in pattern.finditer(text):
|
||||
if match.group(1):
|
||||
if mul_enabled:
|
||||
num1 = int(match.group(2))
|
||||
num2 = int(match.group(3))
|
||||
total_sum += num1 * num2
|
||||
elif match.group(0) == 'do()':
|
||||
mul_enabled = True
|
||||
elif match.group(0) == "don't()":
|
||||
mul_enabled = False
|
||||
|
||||
return total_sum
|
||||
print(process_instructions(input))
|
|
@ -1,10 +0,0 @@
|
|||
MMMSXXMASM
|
||||
MSAMXMSMSA
|
||||
AMXSXMAAMM
|
||||
MSAMASMSMX
|
||||
XMASAMXAMM
|
||||
XXAMMXXAMA
|
||||
SMSMSASXSS
|
||||
SAXAMASAAA
|
||||
MAMMMXMMMM
|
||||
MXMXAXMASX
|
140
day4/input.txt
140
day4/input.txt
|
@ -1,140 +0,0 @@
|
|||
SAMXXSXXSXSAMXMMSMMMMSAMXSXMMMAMXXMSSMSMMMMMXSAXMAMMSSMXMXMAXSXSASMSSMXMMSAMXMMXMMSSSMMMSAMXXSASMSAMXMSXXAMAMXMMXMSAMXSMSMSXSMAMXMASXMXAMSMM
|
||||
MAMMXSMMMAASMMMASAAAAXAMASXMASMMSSMAMAASAASXMMMMSAMXAAAAMMMSAXXMASXAAASAAXMXASMXSAXMASAAMMSXMXAMASXXAMXXMMSAMXXXAMXXMXXAXAAAXSMXMAMMAMSAMAAX
|
||||
SAMXAXAAMAMMSXMASXMMMXAMASASASAAAAMMSSMSMMXAXAAAMASMSSMMXAAXMSAMXMMSMMAMMXAMXXAAMMXSAMMMMAMASMSMAMXMSSMAMAAAXXMSMSAXXAMXMMMSMAXSSMMSAMMASXSM
|
||||
SSSMXMXSXAMXAXMXXMMAMSMMXSAMASMMSSMXAAXSXMSMMMMSSMMAAXMAMMSMMXMASMAXAAMSSXMSMSMMMXXMAMSXMASMMAAMAMMAAAXMMSSMMAAAXMMSMXMASXAMMMMMAAMSASMXMAXA
|
||||
SAMXMSMMXMSMMMMSMMMAMAXSMSXSXSXAXXXMSSMMAXAAAMAAAAMSMMMSAXAAXMMAAMXSAMXAXAAXAASXXMMSSMAMSAMAMSMSXSAMSMMMAAAAAXMAXMAMXAXXMMMMSXXSSMMMXMAMSASM
|
||||
MSMAAAAMXMAXXAAAASXSSMMMAMAMXXMSMMMMXMASMSSSMSSSSMMMXMAXMSSSMMMASXMMMMMMSMMMSMSMMSAAAMMXMSSMXAMXAAXXAMSMSXMMMMXSXMASXSMSMXSAMXXMXASMSASXMASM
|
||||
SXSMSMSAXXAMXMSSSMAAXMAMAMAMSXMASAASMSMMXAXMAXAMXXMASMAXXAXXAAMSMMMAAAXXMAMAAAXXAMMSSSXMAXXXSSSMMMMMMMSAMASMXSAMASXSMXAAMAMASXXMAXSAMXMAMAMX
|
||||
MASMAMMASMMMSXAMMMMMASXSASASAMSASMSMAAXXMXMMXMAMXSAAXMASXSSSSMSXMXSSSSXSMSMSMSMMXSXAAXAMAMAMXMAMSAAASAMAMSMAAMXSAMASAMSMMMSASMMAXXMMMASXMSMX
|
||||
MAMMSXMAMAAASMMSAXMMMSASAMMSXXMXMXXMSMMXASAMMSMMMAXMASXSAAMAMXSMMAXMAMXSAMXMAMXMSMXMMMXMXAMXASXMXSSXMASXMAMMMMAMXSXMAMMAXXMMSASASXSXSXXXMAXA
|
||||
MXSAMMMMSMMXSAXSMXXMAMMMAXXXMMSMXMMMMASAAXMMAAAXAMXMASAMMMMAMSMAMMSMMMAMAMAMXMASAMMAAMXSXSXSASMSMAXXSAMXXXMAXSMXMXAXMMSMMSMASAMASAMASMMMSSMM
|
||||
AXMASAAMAXMXMXMMXSAMSXMMSMMASAAAASASAAAMMMXMSSSXXXXMSMAMAXMAMAXXMMAAXMAMMMSMAMXXAMSSXSAMXMXSXSAAXAMXMASMMSSSXSAMMMSAXAXXASMAMAMAMAMAMAAAAAAM
|
||||
XSMASMMSASMSMXMAASAMAASAMASAMSMSMSASMXXAXSAMXMAMAMXMAAMMMSSSSSMMASXSMXAMAAAXXMXXAXAAMMMMAMXXAMMMSSMMXAXAMXAMAMMMSAXMMSMMXMXAXAMAMAMASMMSSSMM
|
||||
SXMASAMMXSAAMSMSXSAMSSMASAMXXXXMAMAMAMXMXSASMMASMMASXSMAXMAXAAASMMMAMMMSMSSXSAAMSMMSMAASMSSMSMSXAMMMMSSMMMXMXMXAAXAMAMASAMSSSXSSSMSMXAMMMAXS
|
||||
AMMAMAMXMMMXMAAXAXAMXAMXMXMMXSASXMSMSAASMSAMAMASAMAMXAXXSXMMXMMAMAMXMAMAMXAAMXMSMAXXXMXMXAMAXAXMSSMSAMAMMMAXAAAXMSMSASXMAMAAAAAXAXXMSMMXMAXX
|
||||
MMMSXMMMXAASMMMMMMSASXMMMSXMXSMMAMXAXSMSAMMMSMXSMSSMSXMMSAXXXSAMXSMMSXSASAMXMXSAXAMMMSAMMSSSMSMMMAMMASXMASMXSAMXXAASASXSXMMSMMMSMMSMAMMMMSSS
|
||||
XMAXAMXASXSXAASXSAXASAXAAAXMAMXSAMMAMMXMAMASAMXMXAAXSAMASXMASXSXAAAAXAAMMXSAMMSASMSAASAXAMXXMAAXMAMXMMXXXXAAMASMMMXMMMMMAMAMXAAXMAAXASMMMAAX
|
||||
XMASXMAMMMMMXMAXMASASXSMMSSMASAXMAMXAMXMASMSAXMXMMMASAMASAMXXAXMXSMMSAMXAASASAMXMASMXXMMSMMSXSXMSSSXSMSASMMMMAMXASAXMAXSAMASXMMSMXSMMXAAMMSM
|
||||
ASAMXSXAAAAXSMSSMXMXMXMAAAXMSMMMSASXMAAXAMXSAMSXMSXASAMASAMAMSMMMXAMMXAMMXSAMASXMXMXAXSAXASXAMAXAXAAAAXASAMXMSSSXSSXSAXSASASAXAAXMMASXSMMMMA
|
||||
AMASAMXXMMSSXAAAAAMAXMSAMSSMMAMAMAMASMMSMMAXAXXAXAMXSMMMSXMMMAAAXXMXASXMSAMASXMAAMXXSXMASXMMSMMMSSSSMXMXMMMAMAAXXMAXMMXMXMXMMMSSSXSAMAXMMAMM
|
||||
MSMMMSMSMAMMMMMSXASXSMXXMXAASXMASASAMXMAMXASXMSXMXSMXXAMXXMXXSMMMSSMMSAAMXXAMAMSMMMAMAMAMASAXAAAMXXXXXSMSMXAMMXMXSMSMXSAMXMMSAMXMAMMMMMMSASX
|
||||
XAXMXSAAMXMAXSXMMMAXAAMSMSMMMMSMXMAAXXMASMMMXAAXSXSASMMSSSMSMXASXXAAAMMMMSMASXMAAXXAXAMAMXMAXSMXSXMAMMAAAMSSSXMMAMXSMAASAMXAMMSASMMSAMSMSASM
|
||||
SXSXAMSMSMSAXSAXSMMSSMAAAAXMXMAAXMMSMXMAMAAAMMMSAAMXSXMAMXXAAMAMSSSMMXMAAASMMXXSMMSMSXSAMMXSXXXXSAMMSMMSMMAAMXXMASAMMMMMSMMMMMSASAAMAXXASAXX
|
||||
XASMMMXXXAXMASAMXMAAAMSMSMMMASMSMMAMAMMSSSMXMAXAMXMASAMSSMXMSMAMAXMXXASMSXMXXSMMXXAXAXMXXSAXMSAMMAMAAXXAXMMSMSMSMSXMAXXAXMASXXMAXMMSSMMMMMMM
|
||||
MMMAASMSMSMSASXAAMMMXMAAXAASXSMMAMXSAMXAAMAXSSSSXAMMXAMXMXAAAXAMXSSSSMMAMXMSMMAXMASMMMSAMMAMAXMASMMSSSSMXAXMAAAAAMMSMSMMXSASMSMSXAAAXXAXAASX
|
||||
XMASASAAMAXXAXMSMSSMMSMSMSMSAXASAMXSMMXMSMMMXMAMMSSSSSMMASMSMSSMXXAAAAMSMSMAAMSMSMXXSASASMMMSMXMMAAAAAAXXSXMSMXMSMAAMXASAMXXAAAASMMSASMXXAMX
|
||||
MMAXAMMMSMSMAMAXAAAMAMAAAAXXMMXMXSXSAASXMASXAMAMSASAMXAMMMXXXMAMXSMSMMMMAXSMSMAAAXXXMASAMXMAMXMMSSMMSMMMAMAMXMASXMMSSMMMMSAMSMSMAXXXASAMXSSS
|
||||
XMAMAMMXAAAXXMXSMSSMXMSMSMSSXMASXXASAMXASAMXSXMSMMSMMMXMAXMXMXSMAAAMMSAMSMSXMXSSMMMXMAMAMSMASAMAAAXAXAAXAXAMASXMASAMMXSAMSAMXAMXSAMXSMMMMXAM
|
||||
XMASAMSSMSMSMSXSAMXMAXAMAMMMAXAAMMMMMMSMMMSMAXSAMXMASAASXXMASAMAMMSMASAMAAMAMXXAXXMMMXXAMAMASMMMSSMXSMSMSMXSASXSAMASMMSAMSAMMAXAXAMMXXXAAMMM
|
||||
MSMSXSAMAAMMAAAXXAMXMSASXSSSSMSSMSAMAAXAAAXAMMXAMASAMMMMAMSAMAMSXAXMASMSMXMAMSSMMSXASASASMMXMXMXXXMXXXXAXAXMASAMASXMAXSSMMAMMMMMSASAMMMMSMXM
|
||||
AAMSXSAMSMSMMSSMMMSAMSAMAMXAAAAMASXSMSSSMSSSXSXSMAMAXXAMAMMAMMMXMMSMAMAAAXMAMXAAAMSMMAAMSXMAASMMMMMSXAMAMXMMXMAMAMXSAMXMMSMMASMXSMMMSAASAMAA
|
||||
SSMSAMXMXAXXAAAAMAMAMMMMAMMMMMMSAMXAMXAXXAAMAAAMMSMMMSMSAMSAMSXXAAAXAMSXMAMSSSSMAXAXMSMXMAMXXXAAMAASMSMMMAAAAMXMMXASASXXMAMXXXMASXAXXMMSASMS
|
||||
XMMMXMAMMXMMSSSSMASXMAXSASXSSMXMAXAMSMMMMASMXMMMAMSMASMSXMMXSMAXMMSSXXAMSMXMAMXMXSASMMXMXSMSMMSMMMXMAAAASMSSSMSSSMASAMXSXSSSSMMMSMMSMSXSAMMM
|
||||
XAAAASAXXMXMXAAAMASAMXMSASAAAXSSSMMXMXXAMMMMXMAMSMXMXSAMXXXMAMMXSAAAXSAXAXXMAMMMAMXMAMAMAMAMAAXXSMMMSMSMSAAMAAAAAMAMAMAXAMXXAAXSXMXAAMASXMAS
|
||||
SSMSMSASMMSMMMMXMSSXMXAMXMMMMMAAASXAMSSMSXAMMSSSMAMMMMAMMXSSXMAAMMXXMMMSSSXSAMAMASAMASMSAMAMSMSASXAXAAAXMMMSMMMSAMXSSMAMSSSSMMMMAMSMSMXMXSAS
|
||||
MAAXMMMAAASAXSMSSMMMSXAMAMAXSMMSMMSXMAAAAMMSMAMAXXAAASXMMAAMXMMSSSSMSAAXMAASMSXSASASASMMXXSMXAMAMSMMMSMSXSAAAXAAMXAMXXXMAAAAXMASMMMXXMAMXMMS
|
||||
SMMMXAAMSXSAMXMXAASAXSSMXSASXMXXMAMSMSSMMSAAMAXXMSMSXSMAMMXSAXSXAAAASXMSMMMMMMMSASAMXSAXMSAAMXMAMAXSAMXSAMSSMMXXSSSMMXXASMASMSMSAAXXMSSSXMAS
|
||||
SXAXSMMMMASMSXSSSMMMXAXAMMXSAXMASMMXMMAAXMASMXMAMSXMAXMAMAAXMMAMMMMMMSAAAAAAMAAMMMMMXSAMXAMXMAXAXSAMXSMMMMAMXSAMAAAMAXXAMXAMMXMSMMMMMMMAAMAM
|
||||
MSSMMXAAMMMASAAXAAAXMAMXMAMMXMXMAXMAMMSSMXMXASMMMMAMSMSXMMSXMXSAAXMSAMXMAXMXMMSMMAASXMAXXMXASMSMSMMSASAAXMASASASMSMMASMMMMMSMAAXSXMAAASMSMSS
|
||||
XAXAASMXMXMAMMMSSMMSMXMXAMSMMMAMSMSSXXAMXXXMAMMMSSMMXAXSXMXASAMMMMMMMSSXSMSMSMMXSSXSASXMSXSMXMAMXAXMASXSSSXMASAMAAXMASAMXMAAXASMASAMSASAXAXX
|
||||
MASMMMSAXAMAMAXXXXXXMSMSXAAXAMXSMMAAXMMSXAAMAMMAAAAAMXMSMASAMAXAAAXMAXXAAAAAASMAXXASAMMSMAXAXSMSSMMMMMAXAMXMAMAMSMSMASAMSXSMSSMMAMSMMMMAMXMX
|
||||
MMMASASMSXSASMSMSMMMASAMASMSMSXSXMMSMMASXMMMAXMMMXMMSMAXMAMAMMXMMSMMXMMSMSMSMXSMMSMXMSXAMSMMMSXMASAXMMXMMSMMSSMMMXSXXXMASAAXMASMAMXXXAMXMSAS
|
||||
XMSMMASAMXXAXAAMAMASMMAMXXXAAAAMSMSMAMMSAMASMSSSSMXMAMSSMMSSMAASXXXSSXAXXMAAXAMXMAXASMXASXSXAXASAMSMAMXSASAAAAXAXASXMASAMSMMSXMMSXSASMMMSMAM
|
||||
MXAAMAMAMSMSMSMSXXMSASXMASMMSMSMAMASMMAXAMAXAAAAMAAXXSXAAAAAMSXSAXAAAMMSAMXMMXMAMMMXSAXMAAXXXSAMXSXXAMSMASMMSMMMMASAMASAXXMASAXXXAXXMAASMMAM
|
||||
ASXSMMSSMMAAAXMMXSXSAMXMASXAAAAMMSASXMMSXMSSMMMSMSASMMMSMMSSMMMMMMMMMMXSAMAXSXSXSXXSMMMSMMMMXXASMMMSXMAMXMXAXMXAAMMAMASAMXMASASXMMMSXMMSASMS
|
||||
MAMXAXAMAMXMSMAAXSAMAMXMASMSMSMSXMASMSXSAAAXXAXXAMXXAAAMXMAMXAAASXMXMXXXASMSMAMAAAXMAMASAMXAMSMMXAAMSSXMMXSXMSSSSMSAMXMMAAMAMAMMAXAAAMASXMAM
|
||||
MXASXMASMAMMMXMSMMMMAMXMASXXAXASXMSMAMAMMMMSSMXMXMXSMMMXAMASMMSXMAMAMSMXMMXAMAMXMXSSSMASAMXMAXAASMSAAMSXMAMAAXAAAMMXMAXAXXXAMXMSSMMXSAAMAMAM
|
||||
XMMMXAMXXAXXAMMMAXXSASXMASMMXMAMMMMMAMASXAMXMAXMAMXXAAXMXMAXAXXMMAMAMAAMSMXSAMMMMXMAMMXMXSAMSSMMSAMMASASMAMXMMMMSMMSMSXSSSSMSAMMMXSAMMAMXXSS
|
||||
SXASXMSMSMMMASAMAMXMMMAMASAMXMAMAAASXSASXSXMASASAXSSSMSASMSSSMSASMSMSSSXAAMXAXMASAMAMAAMXMASAAAAXXMSSMASXMMSMMSAMAMSAAAXAAXASMSAAAMXSXMXSAAX
|
||||
XSAAMAAAAAASMMXSASXMASXMASMMXSASXSXSAMASMXAMSMASASAXXMAMXAXAXXMAMAAAAAAMMXMXMMSSSXSASXMSASXMXSMMSMXXMASXAXAMAAMAXXMMAMXMMMMXMASMMMSASASAAMAM
|
||||
XMMSMSMSMSMSAAASAMXSXSAMASAMASASAXMMMMAMASXMMMAMMMMXMSMMMSMMSAMXMSMMMXMASASXMAMXMMMMSXASASAAXMAAXMAMXMMSMMSSMMSMMSMXAMAXAAAMMAMAAXMAMXMASXAA
|
||||
XXAXMMMMXMASMMMMMMASMSXMXSAMXMAMXMMAAMXSMXMASMMXSAXAMAXXAMAXAMMXMXAXXSXASAMXMAXAMAAAMMMMMMMSMSMMSSSMSXAXXAXAXXAXAXAXMMXSSSSXMASMMXSMMSAMAXMS
|
||||
SMASAAASMMAMAMSAMSMMASMMXSXXXMXMAXSASMAXAMXMXAAASASXSXSMASMMMSMAMSMMAAMMMAXXSXSSSMMMSAXXXAAAMAAMAXAASMSMMSSMMSSSMSSMSMXMMAXXMXXMSASAAXAXMASA
|
||||
XAXSXMMXAMMSAAXAXAXMXMASAMMMMMAMXXMAMMMMSMSMSAMXSXMAXAXMAMAXXMMXMXXAXMMSSMSMSMAAAASASMSSSMSSMMXMXMMMMAXXMAAAMXMAXAXAXMSAMAMMMMAAMASMMXMMXMAM
|
||||
MXXMMMXSSMAMMSSXMMMSXSAMASXAAXASAMXSXAMAAAAXMAMAXAMXMSMSXSAMXSMSMMMMXXSAAXXAXMMMMMMASXXAAXXMASXMMSAAMSMSMSSXMASMMSMXMAMXMSMXASXMMXMMMSMSAAAM
|
||||
XAMXAAXAXMMSAXXAXXAMAMMSXMMSMSSSMSAMXSMMMSMSXMMSSMMAXMASMAXXXXAAAAAMXSMSSMMMMMAAXXMAMMMSMMSMMMAAAMXSSXAAAAMAXXMXAXMASMXSSMMSMSMXMXSXMAASMSSS
|
||||
XSSSMSSXMAAAMMSMMXXMXMXXXSAAXMASAMMSAXAXXXMXMSMAAASMSMAMAMSXSMSMSMSMMXAMMXAMASMSMMMMXSAMAASMSSSMMSMXMMMMMMSSMSSMXMSXMAASAMXAAMXMAMMASMMMXAXA
|
||||
MXAAAAMAMXMXXAAXMMSMMXMAMASXSMAMXMSMMSSMMMXMAAMSXMSMAMMMXXXAMAMAXAMASMSMSMMSMSAMAMXMAMASMXSAMAMMMAAAMAAXXXXAAXAMMXAAMMMSAMSMSMAMSXSAMMASMMSX
|
||||
AMSMMMSXMAMMASASMAAAMAMMXMASAMAMXMXAXAMASMASXMXMAXMAAMMSMSSSMAMXMASAMAMASXAAAMAMMMAMXSXMAXMXMAMASMSXSXSSMMSXSMMMSMSSMSMXXMAMAMASAAMXSSMSAXAA
|
||||
SXMSMXSXSXSAXXAMMSXXXAXXAXXSXMAMXXSMMASAMSAMAXASAMXSMSXAAAAXMXMXXXMAMSMAMMSMXMSMXSXMXMMSMMMXSAMMSAMASMMAAMMMXAAAXXAAMAMSXXMXSSMMMSMAXAASXMMX
|
||||
XAAAMMMAMAAXSMMMMAXSSSSSMSMMMXAXSMMMAXMAMMMXAMAMAMXMAXMMMMXMMSXMAXMMMAXAXXAMSAASMAMSAMAMAAXXXXMXMAMAMASXXMAASMMMSMSXSASXMXSAMAXXAXMXMMMMMXMX
|
||||
MMSMXAMAMAMAMMMMMMMXAAAXAAAASMSXSAAASMSXMASMSSSSSMXMSMAMXSAAAMXMASASAMXMMSAMSAMXMAAAMMSSSSSSSMSMSAMXSMMMMSMXXXAAAAXAMXSXAAMASAMMASASXMMMAASX
|
||||
MXXASXSASXMXMAMMASMMMMMMSSMMXAXASMMXXAMXMMMMAAXAAMSMASMMASXSAMMMMAMXAXXSAMXMXMXMSSSMXXMAAXMAXXAMSMMMAMAAAAMAMSMSMSMAMAXMSMSAMXSMMSAMAXAMMSMA
|
||||
XAMXMXAASXAXSAXSAMXAXSXMAMASMMMXMASAMMMSAMAMMSMMMMMXAAXMASAMAMASXAXSXMMMASXMAMAXXXAXMXMMMMMMMMMXXMAXASMSSMSAMXAXAXMMMMSAXMMAMAAXAMAMXSXMXAXM
|
||||
MXSASAMXMMMMMAMMASMSSMASMSAMAMXAMXMXMAASASMSSMMSMMMMMSMMXMMSXSASXMMSAMXSAMAXSSMMMSMMSMMAMXXAAAMSASXMMMAAAASXSMSMSMAMXMMMSXSAMSSMMSAMXMAMSMMX
|
||||
XAXXXMMASAAAMXMSAMXMAMAMXMMXAMSSSMMMSMMSAMASAMSAAASXMAMSSMXAAMXSXMASXMMMXSMMMAMAXAMSAMXMSMSSSSSMAMAASMMMMMMMMAAMAMAMAXMAXAMXXMAMXAXSAMAMAAMM
|
||||
MSSMMAMAMMSXSAXXMMASMMXSAMSXMMAXMAAAAAXMAMXMAMXSMMMAMMXAAMMMSMAMAMMXXXXAMXXMSAMMSAXSASMAAAAAXMAMAMSMMAXXMMMAMSMSMSMSXSMSMMMSMSMMSMMMAXASMSMX
|
||||
XXAMSAMXSAXAMXXAXSAMXMASASAASMMXXSMSSSMSAMAMAMXAMSSSMMMSXMSAXMXXAMXXMMMSSMSXMSSMMMMXAMMSMSMSMMMSMMXMSMMMSASXMMAAAAXMASAXAMXAXMXAAMSSSMASAMMS
|
||||
MMSMSAMSAMXAXXXMMMMSXMASMMMMMASXXMAAAAASXMAXAXMAMMAMMSMMAAMMSMMXSMSAASAAAMMAAAXXMASMAMAMXXMAAMXAMMXMAMAXMASMASXSSMSMAMAMXMMXSAMXXSAAXMAMXAAM
|
||||
XAMAMAMAMSSSMSMXAAAAMMXSAAXASAMMAMMMSMMMASAXSMSAMMXMASASMMMAAAASMASMSAMSMMXMMMXMSAMSAMMXXMASAMSASAXSASMSMAMMAMXXAMXMASMSMMMMXASMMMMMMXXXXMAS
|
||||
MMSAMSMSMAAAAAXSSMXSASAXXMSXXAAMAMMAMAMSXMMSAASMSXSMASXXXAMXSXMAMAMXXMXAAXXSASAXMAMSXSXMSAMMXMXAXMASASAAXAXMSSSSXMASXMXXAXAMSMMAXAAASMMMXSAM
|
||||
SAMXMXAAMXSMMMXMAXAXMAMSAMXAMSMSASMASAMXAASMMMMAMAMMXSXMMASXXXSXMASMAXMMSMASAMXMASMSASMMMAMMAMMMMXAMMMXMMMSSXAAMASXSMMAMSSXMAASAMSSSMAMAMXAA
|
||||
SMXAXMSXSXMAXMXSAMMSXMMMMMMSMMASMSMMSAMMMMMMAMMAMMMMXMAMXAMAMAMMSASAMXXAAMXMMMMMAMAXMMASMSMXAMAAXMXMXSAMAXMMMMMMAMXXAMASAAMMMMMXMAMMXXMXMXAM
|
||||
SXSAXAXAXMXSAMXXASXXXXMASAAXAMAMAXMASAMXSAMSASXMSAASAMASMAMMMMMAMASXMAMXSMMMSAAXAMAMXSSMAXMSMSSSSMSMXMASXXXMXXAMXSXMXSMSMSMXSASXMSSMAMSASAMX
|
||||
SASMSSMAMMAMAXMXMMMSMXMMXMSSMMSSMSMASAMXMAMSMSAAMXMSAMAXMAMAAXMSSXMXMXSAAAAASXSXMSAXAXAMAMMAAAAXAAAMXSAMXMXMASXSAXMAMMAXXMAXMAXMAMXMAMMASMMM
|
||||
MAMAXXXMXMASXMAMXAAAAAMXSMAXXMXMXSMAXMAMXMAMMSAMMSXSAMMSSMSSSSMAMAMXMAMAMMMXSXMAMXMSMSSMMSSMSMMMMSMSAAAMXXAMAMAMASMSAMXSMMMMMMMMAMXSSSMXMASA
|
||||
MAMXMSMSAMXXAAXASMSSSMSAAMAMMXAMSMAMXSASAXAXAMXMMXASXMSAXMAMAAMSMMMSMSSXXASASAMMSAMAAAMAMXXMAAAXMAMMMMXMASAMASXSASAAXXAXXAAAAAXSAMXAMMXSXMAS
|
||||
SASMAAAXAMASXSXMAAXAMAMXSMMSMSMSMMAMASASASMSSMASXMMMAMMSSMMSSMMXAXAXAMAMSAMASXMASXSMMMXSMMSSSSMMSXSAMXSXXAASASXMASXMSMMMSXSXSSMSMSAMXAASAMXM
|
||||
SASMMMSSSMAMSAASMSMMMSMMMAXAXMSAAMMSXMAMAMMAAXAXAXMXMMAXXXAAAXASMMMSMMAMMMMAMMMASXMASAMXAMAXAXAASMXMXXMAXSXMASAMXMMXAAMXMAMXAMXXMAMXMASMMMXS
|
||||
MXMASXXAAMXMMSMMAAAXAXXAMMMSAMSSSMAMXMXMXMMSMMSSSMSSSMXSASMSSMXSAAXAXMASAMMXSAMAMAMXMAXSAMMAMXMASASMMSASMMMMMSAMSMMSSSMAMAMAMXMAXAMAMXXMASAX
|
||||
SXAASMMSMMXAMAXMXMMMMXMSMSAXMAXAMMAMSSMSXSXXXAAAAAXAMAMMASXAMMASMMMXSAMMMSMASMSMXSMSAMXSMMXMMAMAMXMAASAMAXSAASXMMAAMMMXASASAXAXMSMSMAAMSXMAS
|
||||
SAMXSAXXMXXSXSAAASXSMSMXAMASXXMAMSAMAAAXXMASMMSSMXMMMSMMAMAMSMASXSAMAAXXAAMXMMSXAXASMSASASAMXSSMXSMMMMAMSMSXXSSMSMMSMXSMSMSMSMXAAAAMAXXAXAAA
|
||||
SASASXXSASXMAMMSXSAMAAAMAMMMMXSSMMMSSXMMXMXMMAAXMXMXAXXMXXMMAMXSAXMAMMMMSMSASAXSSMAMAMXSAMASAMAXMAMXXSSMMAMMMXMMAMMMMXSAMXMMAMXMMSMSASXMSSSM
|
||||
SAMASAMXMMAMAMMMASAMSMSSMMSAMXMASMMXMASMXMASMMSSMAMMMSSMMSASXSXMXMASMSAAAAMAMAXSXMXMXMASMSXMASAMSMMXMMMAMXMAMAAXAMAASXSXSMSMMMSMMAXMASXXAXAX
|
||||
MAMAMMMMXMAMXSASASAMAXAAMAMXXAMAMXSASMXSASASAAXXXXSAMXAAAMAMASXMXSAMASMSMXMSMMMSAMMMMSMXMAXSMMMMAXMAMAMXMASXSXSXSXMXMAXMSAMXSASASMSMMMXMXMMM
|
||||
SAMSSXSXMXMXAMXMMMAMMMSSMSSSMSMMSMXASMASXMASMMSAMXSXSSMMMSAMXMASAMAMXMAXMSAXAMASMMAAMXXSXSXSAAXXSXMXMASASAMMAXXAXMSMMSMAMAMXMASAMXMASASXSSXA
|
||||
XMXXAAMAMASXXMAMXMAMXAMAAXAXAAAMXAMSMMAMAMXXAAMAMAXXAMXAXSXSXSAMXSAMXMXAAMXSXMAXASXSSXXAAMASMMSMAAMXSASASXMSMMMAMAAAAAAXMMMMMMMMMMSXMASAAXSS
|
||||
XSSMMMMXMASAMXAMSSMMMXSMMMMMSSXMMSMMAMMSSMASMMSMAMSSMMXMASXMXMAXAXAXXXSMXXAXXASXMSAMAMMMXMAMAXAMSMMAMMMAMMXAAMMSMSMSMMSSSXMXASXMSAXXMXMMSAMX
|
||||
MMAXXSXMMMSAMSXMAAAMAMXXAAMXMXAAAXASAMXAAAXXSAMXASAAASXSAXAXMXXMMXSMMMXAAXXSSMXAAMXMAMAAXMAMASMXMMMXSAMSMSSSSMAAMAAAXXAXXAMSMSAMMXXAAXXSXMXS
|
||||
ASAMXMSMAAXAMAXMSSMMSMMSSMXAMMAMMSXSMSMSXSAMMMSMMMXSMAAXAXSMMASMMAXASMSMXSAAAXSMMMXXMSMSXSAMXMMAAMSMSXXMAMXAAMSSSMSMAMXMSAMAMSXMAMSXMAMAAXAX
|
||||
MMASAAASMSSSMMSMMAMAAAAAAMSASMXSASMMAXAXAAMSAXAMXAAMMMMMSMMAMAAAMMSAMAAAAXMMMMSAMXMAMAXMASXSAXSMSMAMMMXMXMSSSMMXMAMMMMSMSMSMMMAMXMAXMAASMMMS
|
||||
XSAMMXMMXXMXAMAMSMMXSMMSAMXAMXAMAMAXXMSMMSXSXSMAMMSXMAAAXASXMSSSMMMXMXMSMASASMSAMMAMSASMXSMMAXSAXMSMXAASMMAXAAXXMAMSXAAAXXAXASAMXMXXSAXAMAMA
|
||||
XMMSMXMXXMMSSMAXAXMXAXAMASXMMMXMMMSMSMXAXMAMXXXAXMAAAMMSSMMAAAAAXAMMSAMAMXSASASMMMSAXAXXASAMXMMASAMXMXASMMAMXMMXMAXXMSMSMMMSMXASMSAASMSMMAXS
|
||||
AMAAMSMSMAAAASASXSMMMMASAMAMASASXMAAAXXAMMSMSMSSSMSSMMAAAMSXMMSMMMSAMMXASMMAMAMXAMAMMMMMXSMMSSMMMAMASMASMSMSSSMXMSSSXAMMMSMAAMSMAMMMMAAAXSSX
|
||||
MMMMXAAXSAMMXAXXMMAAXMAMAMMSAXXSASMSMMMMXXXAXAAAAMAAAMASXMAAMAXAMAAMSSSMSAMMMXMXMMXXAAAXMMXAMAAXMXMAXMXMAAAXMASMAAAMSMSAAAAXXXXASXSXMSMSMMAX
|
||||
XAXMSMSMXXMXAMSSMSSMSMXSMMXMMMMSXMXMMSSSSMMSMMMSMMSSMMAXMMMMMASAMXSMSAAASMMXSMSMSAASXSSMMSMSSSMMSAMXMMAMXMSMSAMXMMXMAMXMSSSSMAMAMXMAAAAAAMSM
|
||||
SASXAAAAMSMSMXXAAMXMAXXMASXAAXXXMSXSAAAMAXAAAXMMXAMMAMAXXAAAMXSXMAXXMMMMMSMAMAAAAXMXMAXXAXAXAXXMASMASMSXXMAAMASMXXXSASMAAXAAAAMAMASAMXSSSMMS
|
||||
MAMXSSMSMSAAXMSMMMSMMSMMMMMSMMMAMXAMMMSXXMSSXSASMSSSSMMSSXSMSASAMXXAMXAXXXMAMSMSMXMXMAMMMMSMMMSSXAXXSAAASMMXSAMASXMSASMMMMSAMMMSSXMASXMXAXAA
|
||||
MAMAXMAMAMMMMAMXMASASMXAAAAAASMSMMMMXAMMMXMAMSAMAXAAAXMAMXMXMXSAMMMMMAXMAXSAMXAXXXMASAMXAAXAXAMXSMMMMMMMXAAAMASAXSAMMMMAXMXMASXAAXMAMAMMMMMS
|
||||
SAMXSSMMSMSXSMAMMASXMASMSMSSSMAAXAXXSAMXMAMXMMAMMMMMMXMASXMASAMAMXASAMSASMSXSAXXMXMAXXSSSSSMSASAMXAMXMXMSMMXMAMMXASXXASMMMAXAMMMMMMSSXXAMAXA
|
||||
SXMXMMMAAXAAASXXMAXMXMAMAMAMXMXMASXMMXMASASMMSSMXAMXXAMAXAMXMASXSSMXASXMMAMXSAXMSSMSSMXAAAAAMMMAMSMSXXAMSXXMMMSXMAMMSMSASXMMXSAAXXXMAMSASXSM
|
||||
SASAXMMSMSMAMAXMMSMMASMSXMSSSSSXMAAXSMSASMSAMXAXSSSSXXMSSMMMAXMAAASMSMMAMSMAMMMMAAMXAMMMMMMMMSXSMSMAMXMMMXMXXSAXMAMXAMXMMAXAXSXSXSXMAMSAMXXX
|
||||
SASXSXXXXAMSXSAAAAAXMSASMMXAAAAMXSMMSMMMMXXAMSXMAMAMMSAMXAXASMMMSMMXAAMXMAMMSSSMSSMSSMAMASAMXMAXAMXAAASASXSASMAMSSMSSSMXMMMSXMAXAMSMXMMMMMAA
|
||||
MMMMAMAXSSMXAXMMMSSMASAMAAMMMMXXAMMAXMASMXSAMXSMXMXMXXMASXMSAXXAXAXAMMMXSMSXAAMAAAMAAAXSASXSAMAMAMSSSMSAMAMXXMSMXAAAAMXSMMAMAMAMAMAXAMAAASAM
|
||||
XMAMAMMXXMAMMMSSMAMMXMAMXXXXAXMMSXMXMSASAXSAXAMMAMAMXMXAMAXMASMMSAMXMAMXSAMMMSMSMMASMMMMXSMXAMSXSMAXMXMXMSMSMAMMSMMMXSASAAMSXMMSXMXSMSASMSAA
|
||||
AMASXSXMXMAMMMMAMMSXAXXMMSSSXMASXSMSXAXMAMSXMAMMAMASAMMSSXXXAXAXAMAMXASAMASXAAXAMXMXXMXXAMXSSMXAXMMAMMSSSMAMMMMMAXXXMMAMXMXSXAXSMSAMXAMMXMMM
|
||||
SSMSAMMAASASAAMSMXAXMSAMAMAAMSMMMAXMASXSSMSMSAXSMSASMSAMMXSMXSSSMMAMSMMMSAMMMSXMXAXSASMMAXAXAAMMXAMMMAAMAMXMAAASAXSSSMSMAMAMMSMMAMXMSSSSSSSS
|
||||
MAMMAMAMXMXSXXSAAXMAMAMMASMMMMAAXXSMAMXMAASAMXMAMSAMXMASMAMAAXMAAMXMAXAAMMMAAXXXSMMSAMXSXMMSMMAMMXSXMMSSSMASMSXSAXSAMAMSMMASAXAMXMAXAAAAAAAX
|
||||
SAMSXMSSSMASAMMMSSXMSSSSXSAXASMSMAMMASXMMMMMMSSMMXSSXXSMMXSSMMSSMMMMASMSSSMMXSAXXSAMAMASXAXXXSASMMSAMXMAAMAXXXMMXMMAMAMAXSXMMSAMASXSMMMMMMMM
|
||||
SAMSMMMAAMAMAMAXAXAAAAAMXSMMXAAAMAMSASMSMXMXAXAAAAXSAXXAMXAAAAMAMXXSAMAMAMAMAXMMAAXAXMASXSMAXSXXAXSAMMMXMMMSAMSMMASXMXMMMSAAAMAMASMAXXXMASMM
|
||||
SAMXAAMSMMXXXMXMMSMMMMMMMMXMMMSMMMMMASAAXSAMXMXMMXXMXMSAMMSMMMSAMAXMMMAMMSAMSMXMXMXMXMXXMXMMMMMSMMSAMSSMXAXMXAAAXXMSMXAXASMMMSSMMSXMMMXMAMAX
|
||||
SAMSSMXMMSMSMXXSMSASXSAXASAXAAAAAXMMMMMMSAMXSASXSMXMSASMMAXAMXMMMXSASMSSXSXSAAMMMXAMMMMXSMXAAAAXXAMSMAAASMXMMSSSMSMAMSMMASXMMXXAASAMAXMMMSSM
|
||||
SAMXXXAXXAAAXMASAMMSASXMXSASMSXSMMXAXMAMMXXMMAAAAAAXMXSXSXMSXMMXMASAMAAMASMSASMAASMMAXAMXAMSSSSMMMMAMXXMXMASAAMMAASAMAAAAXAXMASMMXXMMMMMXAMA
|
||||
SMMMASXMSMSMSMXMAMXMAMASXXMMAMAMAMSSMSASMASAMMMSMSAMXAXAMSAXAMSASXMMMXMMAMAXXMXMXMASMMSAMSMMAAXMASXMSMSMMSASMSSMSMSXMMSMSSSMMASMMSMSXSASMMXM
|
||||
SASMAMAAAAAMAMMXAMXMAMAMMAAMXMASAMSAASASMMMAXMAXAXMASMMMMAXMAMSASXAMXSAMASMMMMAMSMAMXAMSAMXXMXMMASAXAAAAMMMSXMXMXXSMSMAXXAAMMAXAXAAMASASXSAS
|
||||
SAXMAXMXMSMSASXXSSMMSMSSSMMSXMAXAMMMMMXMXXXXMMXMAMXMAXAXSASXMMMAMXMMAXAXAXAXXXAXXMXMMMMXMMMMMAMMAXXMSSMMMMASASMSMXXAAXAMMMMXMXSSSMSMAMAMASAS
|
||||
MXMSMXSXMAAMASMMAAMAMAAAAMASMMSSXMAAAMSAMXSMSSMXMASXMMSAMAMXAAMASMSMXSAMSSSMSSMSSMMSSSMSSMSAXAMMXXSXMMMXXMASXMAASXMSMMAMXAMXSXAAXAAMXSAMAMAM
|
||||
SSMXXASASMSMMMAXXXMAXMMMMMXSAXMAMSSSSMSMSMSASXAASASAXAAMMXMMXXMMXAAAMMXMXAAXAAAAXXAAXAXAAAMMXMXAASMSXAAMMMMXAMXMMXMASAAXSASAMMMMMSMSMSMSXMXM
|
||||
XAMSMMSAMAAMXXSXAMSSSSSSSXXMAMMMMXAXMASASAMMMMSMSAMAMSSXSSSMMSSMMSMSMMASMSMMMSMMSMMSSSMMMMMSASMSMAAMMSMMAAMXSMSSMASASMMMMXMMMAAAXAAAXXAXMASM
|
||||
SSMSAXMMMMMMXMMSSXAAXAAAMXMASMSSMMSMMMMAMSMXAAAMMAMXAXAAXXAAASAMXXAMAXAMMAMAAXAMXMSMXXASAMXMASAAXMAMMAAMSXSAXXAAXAMASASASMXSSSSXSMSMSMMMMAMM
|
||||
MMASMMASXSAMXAAAMMMMMMMMMSAAXXAAXAAAAMMMMMMMMMSXSXMASXMSMSSMMMAMMMXMAMXXSAMMMXAMAMXAASMMMAMMXMASMSSMMMSMAAMMSMSMMXMXSAMASAAXMAXAAAAXSAAMXMAS
|
||||
XMXXSSXSMSASMMMMSAMXAXMMASMSXMMMMXXXMSASASXSMAMMAAXAXXAXAAMASXMMMXAMSSMASXSAMMSMMSSMMMXMXAXMXXXXAAAASAMMMSMMXAXMAASXMMMSMMMSAAMSMMMSXSXSXSAM
|
||||
XMSAXXXMASAMXAAAMMXSSXXMASMMASAXXSSMASASAXAAXXXASMMMMMXMMMSMMASMMMMMAAMAMMMASAXAAAXAAXSSSSSMSMSMMMSMMASXAMASMAMMXMXAAAXMASAXXAMXMXXSMMMMMMAS
|
||||
XXMXMASMXMAMSMMSMMMSMXSMMSAMAMMSAAAMXMAMAMSMMMSMAAASMMAMMMXMSMMASXMMMSMASXSAMXSMMSSXMSXAAXAAAXAAAXMXMXMMMSAMMMMSAMSSMMXSAMXSAMXSMXMXAMXMAMMM
|
||||
SMSMSAMXXXAMMXAXMAMXAASXMMMMXMASMSMMAMAMAMAAXAAXMXSMASXSAMAAAMMMXAXMXAMXSAMASXAAXAMXSMMMMMMXMSSSMSMAMSXXAMXMXMAXAXAXAXXMAMAXASAAMAMSSMMMMSAX
|
||||
AAAMMSSSMSMSXMSSMMMMMMMAXAXMXMASXXXSSSSSXSSSMSSSXSXXAMMSASMSMMAXMMMSAAMSMAMASMSMMMMMXAAMASXAXMAMAXMAMXAMXSSSSMMSSMMXMMXSXMSSMMMMSAXAAAAAXAMX
|
||||
MSMSAAMAAAAXMXXAMSASXSSMMSMMAMASXMASXAMMMMMMMAAAXAMMMSMSASAAASMSMSASMXMASXMAXMAXXSMASXMSASAXXAXMMMSMSMAMAAAXAAMAXAXAMSMMAAAAXXSASXMMMMMXXAXX
|
||||
MMAMXXMMSMSMMMMSMSASAAAXAAAXXSAMAMXMMMMMAAXAMXSSMMAAAAXMMMMMMMMAXMMSXMSXSMMSSMSMMAMXSAAMAXMXSSMSXAMXMAAMXMMMMMMMSMSXSAASMMSXMXMASAMSXSAXXMMM
|
||||
SMMMSMMXXMAAXAAAMMAMMMMMMSSMASAMXMASAMASXXSSSMAMAXSMSSMSXXXXAAMXMMASXAXAMXMMXMAASAMMXMMMMSMXAMAXMMSAMXSMXAXXXAXXSMAMXXMMAXMASXMAMAMAAMMXAAAA
|
||||
SAAAAASASXSXSMSXSMSMAXXXAAAMAMAXSSXMSMMXSAAAMAMSXMAAXMMMAMXMSMSMMSAMMMMXMAMSAMSMMASMXSXMXAMXMMMMAXMASAAMSMMMSSSMXMASMSMSAMSAMXMAXAMMSMASASMS
|
||||
SSMSSMMASXMASMMMXAAAXAMMMSSMAXAMMMSXXXXAMMMMMSMSMSXSMSASAMSXXAAAMMASAXAASXMMAMMXMAXAMAAMSMMAXAXXMXXAMMXMAAXXAAAXAMXMASMXMAMXSSSSSMSXAXAAXXMM
|
||||
MAMAAXMXMAMAMAXSMSMSMAAAAAAXSSSXXAMMXXMSXSAMMAMMASAAASXXASXAMSMMMSAMMMSXMXSSSMSSMMSSSMXMAXSXSSMMSSMSSSSSSSSMMSXMSXSMAMXSAMSMMXAXMASXMMXSMSSS
|
||||
MAMMAMMSMSMSMMMMXMXXAXXMSSSMXAMSMASMMMMXAXSXSASMAMMMMMSSMXMSMMAAMMMSXMMAXAXAMXAAAXAMAXXMSXMXMAMMAAXAAXXAXAAAAXAMXAXMXMAMAMXAXMSMXASMSMAMAAAA
|
||||
SMMXMAXAAMAXMXSMAXMXSMSMAXAXMXMXSAAXMAXMSMMMSASMSSSMSAAMSXXAAXMASAMXASMXMSXMAMXSMMASMMMMMASMSSMMXSMMSMMMMSMMXSAMMSMAMXMSAMXMMAMAMXSXAMAMMMMM
|
||||
AMAAXSSMXMSMMASMMSXMAAAXMSSMAMMMMSSXSXSAMASAMAMMAMAAMMSXSXSMSMXASASXMMAXSAMSASXXAXXMASMASMMAAMASAAAXMAAAAXXXASXMAAMMMAMAMSMMMSXMAXXMMSMSSMSX
|
||||
MMMSMMAMAMMAMAXAXSAAMSMSXAAAMAAXAXMMAMMXSAMMSAMMASMXMXMAMMMMMXMASAMAXMXMMAXSASASMMSMMASASAMMMSAMASXMSMMXSMMMASXMXSSXMXSAAAASAMAMSMAMXSXAAAAX
|
||||
SSMMMSAMSMSAMMSMMMXSAMXXAMXSSSMMMSSXMASXMXMXMXXSXSMSXAMAMAMASAMXSASXMMMSXMMMXMAMMAAAXMMXXAMXXMAXXAMASAMAXASMSMASAMXMMMSMSMSMAMXMAAXMASMSMMMM
|
||||
SAAXMMAMAASXMAAMASAMASAMSSXMXAAAAXAXXMASMAMSMSXSXMAMMAXMXXXAMAMXSAMMXXASASXSMMXMMSXSMXXMSMMMSSSMMAMASAMASXXXMSAMASAMAAXXAXMXXMSMMSSMXSAMXMAS
|
||||
SMMMMSXSMXMMMSASAMXSAMAMAAAMSSSMMSMMMMMMSMXAAMASXMAMSMSXSSMMSAMMMMMMMSMSAMAMAMAMXAMXAMXMAMXAAAXXSAMMSAMAMAXMMMMSAMXMMSSSSSSMSXAAXAXXAMMMAMXM
|
||||
MAAAASMXXSAMXAAXMAXMXSAMXSMMAXMAXAXAASAAAXSMAMAMASXXSASAAMAMSXMXAXMAAXAMMMAMSMASMASMAXXSASAMMSMMSXSMSXMASXAMAAMMASMSXMAXAAAAXSSSMXSMXSXSXMAX
|
||||
SMSMSSMXMASASMSMMXXMASMMXXAXXSSMSASMSSMSSMSSXMASMMXAMAMMMMAMMMSSXMXMSSXMXMASMMXSXXMMXMASXSXAXAMMXMAXMASXXAXXSSSMXXMASAMXMSMMMAXXMASMSAMXASMS
|
|
@ -1,49 +0,0 @@
|
|||
def read_grid(filename):
|
||||
grid = []
|
||||
with open(filename, 'r') as file:
|
||||
for line in file:
|
||||
grid.append(list(line.strip()))
|
||||
return grid
|
||||
|
||||
def count_word_occurrences(grid, word):
|
||||
rows = len(grid)
|
||||
cols = len(grid[0])
|
||||
word_length = len(word)
|
||||
count = 0
|
||||
|
||||
directions = [
|
||||
(0, 1), # Right
|
||||
(1, 0), # Down
|
||||
(0, -1), # Left
|
||||
(-1, 0), # Up
|
||||
(1, 1), # Diagonal down-right
|
||||
(1, -1), # Diagonal down-left
|
||||
(-1, -1), # Diagonal up-left
|
||||
(-1, 1), # Diagonal up-right
|
||||
]
|
||||
|
||||
for x in range(rows):
|
||||
for y in range(cols):
|
||||
for dx, dy in directions:
|
||||
match = True
|
||||
for k in range(word_length):
|
||||
nx = x + dx * k
|
||||
ny = y + dy * k
|
||||
if 0 <= nx < rows and 0 <= ny < cols:
|
||||
if grid[nx][ny] != word[k]:
|
||||
match = False
|
||||
break
|
||||
else:
|
||||
match = False
|
||||
break
|
||||
if match:
|
||||
count += 1
|
||||
return count
|
||||
|
||||
# Main execution
|
||||
if __name__ == "__main__":
|
||||
grid = read_grid('input.txt')
|
||||
# grid = read_grid('example.txt')
|
||||
word = "XMAS"
|
||||
total_occurrences = count_word_occurrences(grid, word)
|
||||
print(total_occurrences)
|
|
@ -1,45 +0,0 @@
|
|||
def read_grid(filename):
|
||||
grid = []
|
||||
with open(filename, 'r') as file:
|
||||
for line in file:
|
||||
grid.append(list(line.strip()))
|
||||
return grid
|
||||
|
||||
# Function to check if a diagonal forms 'MAS' or 'SAM'
|
||||
def check_diagonal(grid, x, y, dx, dy):
|
||||
rows = len(grid)
|
||||
cols = len(grid[0])
|
||||
letters = []
|
||||
for k in range(-1, 2): # Positions: -1, 0, 1
|
||||
nx = x + dx * k
|
||||
ny = y + dy * k
|
||||
if 0 <= nx < rows and 0 <= ny < cols:
|
||||
letters.append(grid[nx][ny])
|
||||
else:
|
||||
return False # Out of bounds
|
||||
word = ''.join(letters)
|
||||
return word == 'MAS' or word == 'SAM'
|
||||
|
||||
def count_xmas_patterns(grid):
|
||||
rows = len(grid)
|
||||
cols = len(grid[0])
|
||||
count = 0
|
||||
|
||||
for x in range(1, rows - 1):
|
||||
for y in range(1, cols - 1):
|
||||
if grid[x][y] != 'A':
|
||||
continue
|
||||
diagonal1 = check_diagonal(grid, x, y, -1, -1) # Top-left to bottom-right
|
||||
diagonal2 = check_diagonal(grid, x, y, -1, 1) # Top-right to bottom-left
|
||||
|
||||
if diagonal1 and diagonal2:
|
||||
count += 1
|
||||
|
||||
return count
|
||||
|
||||
# Main execution
|
||||
if __name__ == "__main__":
|
||||
grid = read_grid('input.txt')
|
||||
# grid = read_grid('example.txt')
|
||||
total_xmas = count_xmas_patterns(grid)
|
||||
print(total_xmas)
|
|
@ -1,28 +0,0 @@
|
|||
47|53
|
||||
97|13
|
||||
97|61
|
||||
97|47
|
||||
75|29
|
||||
61|13
|
||||
75|53
|
||||
29|13
|
||||
97|29
|
||||
53|29
|
||||
61|53
|
||||
97|53
|
||||
61|29
|
||||
47|13
|
||||
75|47
|
||||
97|75
|
||||
47|61
|
||||
75|61
|
||||
47|29
|
||||
75|13
|
||||
53|13
|
||||
|
||||
75,47,61,53,29
|
||||
97,61,53,29,13
|
||||
75,29,13
|
||||
75,97,47,61,53
|
||||
61,13,29
|
||||
97,13,75,29,47
|
1369
day5/input.txt
1369
day5/input.txt
File diff suppressed because it is too large
Load diff
|
@ -1,49 +0,0 @@
|
|||
import sys
|
||||
|
||||
def main():
|
||||
lines = sys.stdin.read().splitlines()
|
||||
|
||||
order_rules = set()
|
||||
updates = []
|
||||
i = 0
|
||||
n = len(lines)
|
||||
while i < n and lines[i].strip():
|
||||
line = lines[i].strip()
|
||||
if '|' in line:
|
||||
x, y = line.split('|')
|
||||
x = int(x)
|
||||
y = int(y)
|
||||
order_rules.add((x, y))
|
||||
i += 1
|
||||
|
||||
while i < n and not lines[i].strip():
|
||||
i += 1
|
||||
|
||||
while i < n:
|
||||
line = lines[i].strip()
|
||||
if line:
|
||||
update = [int(x) for x in line.split(',')]
|
||||
updates.append(update)
|
||||
i += 1
|
||||
|
||||
middle_pages = []
|
||||
|
||||
for update in updates:
|
||||
position = {page: idx for idx, page in enumerate(update)}
|
||||
valid = True
|
||||
for x, y in order_rules:
|
||||
if x in position and y in position:
|
||||
if position[x] >= position[y]:
|
||||
valid = False
|
||||
break
|
||||
|
||||
if valid:
|
||||
mid_index = len(update) // 2
|
||||
middle_page = update[mid_index]
|
||||
middle_pages.append(middle_page)
|
||||
|
||||
total = sum(middle_pages)
|
||||
print(total)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -1,83 +0,0 @@
|
|||
import sys
|
||||
import collections
|
||||
|
||||
def main():
|
||||
|
||||
lines = sys.stdin.read().splitlines()
|
||||
|
||||
order_rules = set()
|
||||
updates = []
|
||||
i = 0
|
||||
n = len(lines)
|
||||
while i < n and lines[i].strip():
|
||||
line = lines[i].strip()
|
||||
if '|' in line:
|
||||
x, y = line.split('|')
|
||||
x = int(x)
|
||||
y = int(y)
|
||||
order_rules.add((x, y))
|
||||
i += 1
|
||||
|
||||
while i < n and not lines[i].strip():
|
||||
i += 1
|
||||
|
||||
while i < n:
|
||||
line = lines[i].strip()
|
||||
if line:
|
||||
update = [int(x) for x in line.split(',')]
|
||||
updates.append(update)
|
||||
i += 1
|
||||
|
||||
middle_pages_correct = []
|
||||
middle_pages_incorrect = []
|
||||
|
||||
for update in updates:
|
||||
position = {page: idx for idx, page in enumerate(update)}
|
||||
|
||||
valid = True
|
||||
for x, y in order_rules:
|
||||
if x in position and y in position:
|
||||
if position[x] >= position[y]:
|
||||
valid = False
|
||||
break
|
||||
|
||||
if valid:
|
||||
mid_index = len(update) // 2
|
||||
middle_page = update[mid_index]
|
||||
middle_pages_correct.append(middle_page)
|
||||
else:
|
||||
pages_in_update = set(update)
|
||||
graph = collections.defaultdict(list)
|
||||
indegree = collections.defaultdict(int)
|
||||
for x in pages_in_update:
|
||||
indegree[x] = 0
|
||||
|
||||
for x, y in order_rules:
|
||||
if x in pages_in_update and y in pages_in_update:
|
||||
graph[x].append(y)
|
||||
indegree[y] += 1
|
||||
|
||||
queue = collections.deque([node for node in pages_in_update if indegree[node] == 0])
|
||||
sorted_pages = []
|
||||
|
||||
while queue:
|
||||
node = queue.popleft()
|
||||
sorted_pages.append(node)
|
||||
for neighbor in graph[node]:
|
||||
indegree[neighbor] -= 1
|
||||
if indegree[neighbor] == 0:
|
||||
queue.append(neighbor)
|
||||
|
||||
if len(sorted_pages) != len(pages_in_update):
|
||||
print("Cycle detected in ordering rules. Cannot perform topological sort.")
|
||||
sys.exit(1)
|
||||
|
||||
mid_index = len(sorted_pages) // 2
|
||||
middle_page = sorted_pages[mid_index]
|
||||
middle_pages_incorrect.append(middle_page)
|
||||
|
||||
total_incorrect = sum(middle_pages_incorrect)
|
||||
print(total_incorrect)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -1,10 +0,0 @@
|
|||
....#.....
|
||||
.........#
|
||||
..........
|
||||
..#.......
|
||||
.......#..
|
||||
..........
|
||||
.#..^.....
|
||||
........#.
|
||||
#.........
|
||||
......#...
|
|
@ -1,75 +0,0 @@
|
|||
def count_guard_positions(map_lines):
|
||||
# Convert the map to a mutable 2D list of characters
|
||||
grid = [list(row) for row in map_lines]
|
||||
rows, cols = len(grid), len(grid[0])
|
||||
|
||||
# Directions: UP=0, RIGHT=1, DOWN=2, LEFT=3
|
||||
directions = [(-1, 0), (0, 1), (1, 0), (0, -1)]
|
||||
|
||||
# Find the initial guard position '^'
|
||||
start_pos = None
|
||||
for r in range(rows):
|
||||
for c in range(cols):
|
||||
if grid[r][c] == '^':
|
||||
start_pos = (r, c)
|
||||
grid[r][c] = '.' # Replace '^' with '.'
|
||||
break
|
||||
if start_pos:
|
||||
break
|
||||
|
||||
# Initialize guard state
|
||||
current_pos = start_pos
|
||||
current_dir = 0 # Start facing UP
|
||||
visited = {current_pos}
|
||||
steps = 0
|
||||
|
||||
# Large safety limit to prevent infinite loops in case something goes wrong
|
||||
max_steps = rows * cols * 10
|
||||
|
||||
while True:
|
||||
steps += 1
|
||||
if steps > max_steps:
|
||||
# If something is wrong, break out to avoid infinite loop
|
||||
print("Exceeded maximum expected steps. Stopping.")
|
||||
break
|
||||
|
||||
# Calculate the next forward position
|
||||
dr, dc = directions[current_dir]
|
||||
next_r = current_pos[0] + dr
|
||||
next_c = current_pos[1] + dc
|
||||
|
||||
# Check if moving forward would leave the grid
|
||||
if not (0 <= next_r < rows and 0 <= next_c < cols):
|
||||
# The guard leaves the mapped area here
|
||||
break
|
||||
|
||||
# Check if the next cell is an obstacle
|
||||
if grid[next_r][next_c] == '#':
|
||||
# Can't move forward, turn right
|
||||
current_dir = (current_dir + 1) % 4
|
||||
continue
|
||||
|
||||
# The next cell is free, move forward
|
||||
current_pos = (next_r, next_c)
|
||||
visited.add(current_pos)
|
||||
# Continue forward in the same direction on the next iteration
|
||||
|
||||
return len(visited)
|
||||
|
||||
|
||||
# Given example grid
|
||||
example_grid = [
|
||||
"....#.....",
|
||||
".........#",
|
||||
"..........",
|
||||
"..#.......",
|
||||
".......#..",
|
||||
"..........",
|
||||
".#.^......",
|
||||
"........#.",
|
||||
"#.........",
|
||||
"......#..."
|
||||
]
|
||||
|
||||
result = count_guard_positions(example_grid)
|
||||
print("Result:", result)
|
|
@ -1,9 +0,0 @@
|
|||
190: 10 19
|
||||
3267: 81 40 27
|
||||
83: 17 5
|
||||
156: 15 6
|
||||
7290: 6 8 6 15
|
||||
161011: 16 10 13
|
||||
192: 17 8 14
|
||||
21037: 9 7 18 13
|
||||
292: 11 6 16 20
|
850
day7/input.txt
850
day7/input.txt
|
@ -1,850 +0,0 @@
|
|||
479027832: 8 9 69 659 96 634
|
||||
539373: 6 19 6 863
|
||||
50830: 27 9 91 25 2
|
||||
40213: 9 9 35 9 8 63 11 641
|
||||
26324383: 7 9 8 7 414 471 185 8
|
||||
11884578: 26 91 864 391 590 78
|
||||
72700530602: 854 46 3 415 194 601
|
||||
61748500: 74 5 896 689 5 66 53
|
||||
108: 7 70 23 3 5
|
||||
298900979: 4 57 9 144 35 14 979
|
||||
1302118: 4 5 38 7 239 4 6 373 7
|
||||
7238: 716 7 2 5 8
|
||||
37856477: 728 65 8 4 74
|
||||
189170: 7 269 76 698 93 3
|
||||
7325: 73 2 5
|
||||
345703232252: 3 8 4 6 9 128 6 4 4 8 2 52
|
||||
9609860666: 208 91 230 2 666
|
||||
24003: 5 99 9 4 4
|
||||
9389450245: 47 329 5 2 66 3 92 628
|
||||
959212: 4 4 2 516 472 4 25 708
|
||||
363266: 2 8 7 7 3 2 6 8 302 863 3
|
||||
4758: 74 19 51 14 1 1
|
||||
1387500: 58 128 68 8 5 37
|
||||
165768: 179 9 2 5 87 27 5
|
||||
34729721751: 8 5 7 5 6 2 4 3 4 1 742 10
|
||||
5544045: 621 83 875 5 9
|
||||
23: 1 5 4 4 7
|
||||
31938411: 53 264 23 20 195 411
|
||||
50880: 253 6 4 4 5 5 54
|
||||
36123702: 94 8 319 92 337
|
||||
1041: 586 6 3 26 419
|
||||
1318649: 5 4 26 96 9 2 7 6 8 4 418
|
||||
1131220137: 7 5 5 5 7 315 64 5 76 7 5
|
||||
107904742: 29 97 350 4 9 139
|
||||
8692190347508: 38 62 8 3 957 1 50 9 5 9
|
||||
248139: 14 9 5 4 3 7 844
|
||||
1213689: 291 6 43 873 688
|
||||
480495: 3 3 5 59 3 74 852 7 9 6 3
|
||||
257610286: 42 48 45 50 28 20 6
|
||||
11378: 167 15 62 94
|
||||
3120: 52 4 7 4 7 5 7 36 991 71
|
||||
375716893773: 86 9 7 6 6 3 24 459 3 1 6
|
||||
3015937: 7 9 222 5 87 6 7
|
||||
78452: 927 41 81 7 37
|
||||
36679602: 856 9 1 535 8
|
||||
133081692237: 2 475 583 5 16 28 5
|
||||
1800960: 27 61 6 8 8 420
|
||||
304148: 5 8 8 73 630 8
|
||||
18374977210: 9 6 2 48 584 5 9 3 5 1 8 1
|
||||
10192: 5 202 8 9
|
||||
22869: 72 710 4 70 69 7
|
||||
10138276936: 4 52 306 1 733 5
|
||||
647881: 5 6 610 308 5 206 559
|
||||
290: 25 4 29 2 8
|
||||
2399633064: 236 1 675 5 3 3 1 2 5 6 7
|
||||
264556262: 7 77 4 3 40 8 49 3 33 5
|
||||
82305266448: 882 642 17 6 9 605 9
|
||||
6932815: 59 631 3 20 72 742
|
||||
14686: 7 36 58 70 1
|
||||
1649: 2 1 9 82 53 4 90 463 55
|
||||
7798657: 43 751 18 30 6 96
|
||||
12553640: 24 79 554 220 1
|
||||
7907: 74 65 444
|
||||
382091: 45 8 3 24 4 9 2
|
||||
2420: 27 3 380 23 5
|
||||
455638: 6 62 67 26 12
|
||||
36988109: 660 502 8 7
|
||||
575686004: 59 6 3 4 6 43 8 9 4 6 5
|
||||
993899607: 40 4 8 353 84 3 29 94 8
|
||||
32532: 8 1 5 25 5 13 18
|
||||
7416: 93 20 6 28 53 5 36 36
|
||||
92906446: 7 88 171 98 9 95
|
||||
3089876: 6 5 89 876
|
||||
5455192: 899 164 37 51 9
|
||||
20856: 77 32 1 913 163 899 3
|
||||
72267789002: 2 3 8 2 5 4 3 438 775 4 5
|
||||
8079: 8 994 4 4 58 9 9 8 26 1 8
|
||||
54730: 7 7 3 4 5 180 1 8 4 4 6 44
|
||||
4935024: 3 769 9 81 78 97 3 566
|
||||
9904791314: 7 9 190 96 9 39 315
|
||||
3223765695: 732 674 440 1 91
|
||||
7711608: 7 8 6 5 4 3 5 1 94 4 82 1
|
||||
18911175: 6 72 6 645 626 9 23 15
|
||||
8316883: 3 9 505 290 2 65 3
|
||||
377020: 6 88 251 4 4
|
||||
526041819402: 944 953 657 89 1 43
|
||||
3851549231: 2 6 8 28 3 3 28 4 980 33
|
||||
107: 3 3 2 4 84 9
|
||||
92244852: 2 44 1 9 4 77 1 98 42 9
|
||||
62170895131: 7 65 14 61 457 49 9
|
||||
11227450: 193 62 44 50 751
|
||||
4351218022388: 12 98 37 1 802 238 6
|
||||
24566861832764: 29 959 584 3 6 82 763
|
||||
295399313497: 9 8 4 3 4 24 8 7 8 29 9 7
|
||||
769: 67 8 594 95 3
|
||||
61420988: 1 8 68 7 1 7 162 6 8 5 8 9
|
||||
9876: 6 6 823
|
||||
10054653519: 73 3 381 3 18 372 4 9
|
||||
6989: 7 7 384 68 15
|
||||
135129529789: 777 33 277 85 62
|
||||
7673: 7 1 23 6 38 2
|
||||
7903928909: 784 6 392 8 907
|
||||
1240076: 5 6 485 6 595 4 32 64 1
|
||||
32746896: 330 13 918 13 8
|
||||
1244802: 5 2 431 532 49 6 203 5
|
||||
1230672: 5 37 693 17 8 40 1 16 7
|
||||
12041297446956: 424 674 27 457 922
|
||||
5513286: 772 6 4 5 814 7 708 7 7
|
||||
97636049: 1 2 199 5 4 99 4 1 8 8 5 6
|
||||
8049: 7 627 421
|
||||
39261044: 28 6 256 1 451 148 9 5
|
||||
19224632856: 2 486 4 9 39 3 39 8 7 3 1
|
||||
1929115855: 5 37 7 8 6 5 1 5 8 57
|
||||
27304: 3 6 284 85 106
|
||||
32616946: 3 6 3 8 6 4 454 9 6 7 17
|
||||
815199619: 6 57 4 77 773 4
|
||||
8775823: 1 3 6 9 5 65 8 1 5 7 1 2
|
||||
217617: 53 9 8 6 52 45
|
||||
477661548: 6 3 45 4 2 7 842
|
||||
29764: 7 411 71 86 3
|
||||
67100184: 2 5 98 545 65 18 2
|
||||
38047: 238 374 62 68 30 5
|
||||
235: 85 84 52 14
|
||||
8303004: 86 9 23 380 1
|
||||
10666: 9 2 95 21 1 1 8
|
||||
26841: 99 64 22 4 142
|
||||
536460: 1 48 5 3 380 45 8
|
||||
3621549: 659 785 43 7 43
|
||||
2087722: 629 505 263 4 7
|
||||
10933912587730: 47 9 3 7 563 54 7 5 578
|
||||
15397609243: 513 25 36 3 362 2 876
|
||||
1167073: 220 7 9 5 751 10 9
|
||||
730901143: 1 571 80 122 9 5 177
|
||||
79670161: 1 7 4 643 3 9 51 1 7
|
||||
55499656002: 596 831 9 348 322 42
|
||||
1013553596: 85 271 2 16 85 8 44
|
||||
27479462: 428 642 6 8 795 5 996
|
||||
116525843073: 7 5 813 657 713 91 3 7
|
||||
1322433: 56 9 263 1 4 7 9 6 44 8 4
|
||||
9490150373555: 82 501 902 6 3 55 7 1 6
|
||||
16539526: 6 4 43 601 4
|
||||
78813047: 4 74 8 1 30 48
|
||||
49747920765: 2 4 4 9 9 8 8 7 64 546 9
|
||||
10240294986: 2 529 31 40 2 949 77 6
|
||||
31132779: 4 3 9 38 1 3 3 8 5 3 19 84
|
||||
25191837: 9 8 19 2 1 3 4 81 701 9
|
||||
8225: 781 859 5 5 1
|
||||
448799: 56 8 7 29 72
|
||||
137161187: 762 200 9 11 67 18 3
|
||||
44310875: 92 773 7 63 89
|
||||
35349953: 4 9 2 2 3 6 7 6 9 244 711
|
||||
39390624: 7 4 39 90 9 96 91
|
||||
15361586: 9 770 2 393 4
|
||||
938450: 37 667 17 2 19
|
||||
15001400: 668 7 674 701 4
|
||||
66735558037: 681 4 6 7 3 68 5 487 35
|
||||
86293: 612 6 14 507 22
|
||||
45734133: 2 5 367 83 34 132
|
||||
3362: 3 3 42 6 26 271 4 375
|
||||
6802263846: 35 427 4 8 2 8 4 6 6 8 5 6
|
||||
18865059385: 628 3 68 2 465 3 1 3 8 8
|
||||
339028: 735 46 84 8 9
|
||||
6678676: 6 678 274 18 386
|
||||
1714445: 2 69 4 9 9 207 4 273 4 5
|
||||
3572841955: 4 57 544 18 7 6 6 37 7 8
|
||||
1133784000: 651 60 87 20 3
|
||||
623: 35 2 2 16
|
||||
707: 6 4 58 5 99
|
||||
19994817: 9 98 2 6 352 9 230 6
|
||||
16562765604: 4 7 48 7 4 9 1 3 7 1 12 77
|
||||
2049: 66 9 38 15 352
|
||||
45221301678: 657 309 7 225 99
|
||||
34742: 7 11 8 421 4 176 3
|
||||
3041280: 4 5 6 660 48
|
||||
435872412455: 3 7 9 8 8 539 1 2 4 3 45 6
|
||||
4757632028: 812 46 63 1 99 88 26
|
||||
1646464388441: 783 7 9 9 611 382 44
|
||||
3044809: 11 12 189 2 234
|
||||
48784029: 9 2 56 6 4 5 96 7 956 3 9
|
||||
619028: 476 13 1 73 1 5 49
|
||||
72600: 5 6 44 66 5 4
|
||||
341739027572: 50 42 4 38 405 2 7 572
|
||||
148575: 8 6 75 73 758 7
|
||||
108050910044: 491 4 5 3 6 26 550 4 6
|
||||
421008: 410 8 3 5 179 42
|
||||
5387741232438: 695 510 6 66 19 8 436
|
||||
439590198: 748 6 865 674 658
|
||||
2340: 1 23 39
|
||||
30518405: 10 88 175 2 459 878 3
|
||||
15531686192: 466 417 37 10 1 9
|
||||
2004561: 8 688 4 3 1 80 1 27 3
|
||||
27249935040: 3 4 99 401 9 7 5 3 9 8 7
|
||||
446568: 38 326 9 4 600
|
||||
342738: 6 9 6 4 27 79 3 7 135 9
|
||||
20803548992: 7 1 3 157 9 5 8 5 48 9 9 2
|
||||
4620711220: 840 55 7 112 2 2
|
||||
580614049: 92 8 993 58 2 45 6 7 1 9
|
||||
15358178: 5 307 81 71 8
|
||||
6260474896: 645 5 45 5 1 9 832 2 9
|
||||
57: 8 1 4 8 9 27
|
||||
3074841: 477 900 319 7 1
|
||||
1403327: 12 5 3 495 45
|
||||
1949: 68 21 3 3 8 7 5
|
||||
443856499: 3 41 385 4 2 4 88 1 2 6 3
|
||||
252853988: 766 2 1 242 33
|
||||
56667: 508 11 54 24 7
|
||||
4151663: 3 7 9 4 9 1 5 9 9 105 24
|
||||
5705: 7 1 4 1 6 564 6 6 7 5 53 7
|
||||
49731430430: 141 1 5 448 9 6 4 6 7 7
|
||||
28786: 6 76 61 442 1 382 145
|
||||
264924: 440 1 6 6 99
|
||||
646397410: 359 5 544 4 4 1 4 9 86
|
||||
2130139: 291 8 1 6 2 6 2 97 4 3 2 5
|
||||
607033: 4 55 547 682 2 18 334
|
||||
81325728039: 838 19 895 3 960 3 6
|
||||
1642848: 29 7 3 808 184
|
||||
216332418: 582 1 53 50 281 7 4 4 5
|
||||
1799886: 566 318 3
|
||||
2077118361: 3 785 882 3 71 9 50 10
|
||||
4788545: 63 950 80 3 451 89
|
||||
1237754: 43 65 7 5 9 678 6 8 7
|
||||
4854245763: 273 12 42 420 84
|
||||
19246: 47 33 9 4 278
|
||||
198645: 49 66 4 4 2
|
||||
426450: 389 4 7 9 8 9 4 2 541 2 6
|
||||
8221614: 403 3 299 94 58
|
||||
28148373: 891 1 5 92 3 9 6 526 9
|
||||
7379: 4 2 1 86 590 5
|
||||
22504104678: 7 8 8 9 93 92 4 1 6 69 7
|
||||
25892: 8 32 6 7 222
|
||||
890487: 5 708 92 85 120 370
|
||||
22384616: 2 3 8 12 90 301 6 749 2
|
||||
2040941138: 99 8 426 48 6 34 8 8 4
|
||||
29902530: 361 45 267 99 2 3 9 27
|
||||
42916034: 3 855 3 5 1 64 5 2 391
|
||||
297894: 941 321 490 3 17
|
||||
5147781196853: 857 84 5 7 35 328 6 55
|
||||
297338803: 39 5 29 69 7 7 2 9 4 6 1 5
|
||||
1424023: 81 96 995 8 8
|
||||
201670525236: 417 53 73 7 69 93 38
|
||||
3288661955: 567 58 609 84 9 960
|
||||
814208538: 214 4 5 1 845 34 7 6 26
|
||||
17362647368: 109 1 9 9 6 24 265 5 1
|
||||
1586825227: 21 699 4 9 82 9 5 2 2 9 6
|
||||
9791: 9 88 90
|
||||
148878: 736 102 22 975 3 81
|
||||
7300: 2 7 318 85 311 7 10
|
||||
3095735794: 36 6 3 1 477 57 94
|
||||
1339880257: 40 85 82 4 259
|
||||
11365989800469: 56 829 94 900 2 3 2 7
|
||||
1474435: 24 8 594 5 345 962
|
||||
57327: 4 1 46 5 21
|
||||
6577055605: 798 64 7 1 1 8 809 756
|
||||
456890: 489 5 248 615 7 553
|
||||
5763: 8 9 38 48 483
|
||||
574081871: 8 15 598 234 8
|
||||
528840464: 80 2 9 5 52 6 415 51
|
||||
57552044154: 872 660 44 149 6
|
||||
10800518765: 12 1 900 518 764
|
||||
6120: 74 5 897 6 6 3 2 54 138
|
||||
1038120881: 533 950 7 20 881
|
||||
460348740: 868 3 4 401 656 2 740
|
||||
29069625808: 966 3 6 3 3 59 6 2 581 1
|
||||
69561: 1 5 2 590 5 2 42 861 9
|
||||
3098487638: 1 32 414 5 52 4 9
|
||||
433007: 2 165 8 25 8
|
||||
3645213943: 54 91 8 5 4 2 771 7 8 3 5
|
||||
378966: 7 332 907 24 5 975 41
|
||||
6714932938022: 7 8 993 7 4 145 7 92 25
|
||||
37235: 5 8 69 177 698 5 880
|
||||
7970525755: 8 74 599 91 7 247 8 2
|
||||
140797490: 681 37 2 687 974 90
|
||||
2372816023246: 968 9 772 5 6 588 46
|
||||
9304984576: 9 21 9 4 921 63 565 10
|
||||
28276428: 6 6 31 1 1 9 7 1 38 32 4 8
|
||||
308076: 39 9 418 71 48 4
|
||||
53926: 9 149 7 4 6
|
||||
242577574: 2 7 88 248 87
|
||||
2544764544: 47 44 73 5 3 28 9 304
|
||||
18439604: 9 6 2 3 5 59 3 9 7 1 989 4
|
||||
432: 83 4 5
|
||||
14236771: 19 8 88 439 282
|
||||
25672: 6 21 96 5 5 6 8 2 58 9 1 2
|
||||
147: 93 9 18 7 20
|
||||
186945375: 21 9 646 71 7 61 9 9
|
||||
2762762: 71 5 168 23 2
|
||||
4793309: 32 8 4 6 5 2 5 48 8 6 8 7
|
||||
3339372: 46 3 26 5 2 7 6 522 842
|
||||
39070504: 700 305 183 4
|
||||
39955399: 3 285 977 142 9
|
||||
127900089: 80 3 3 9 1 7 293 51 8 2 7
|
||||
32534: 9 96 7 4 1 72 8 6 77 3 5 1
|
||||
1496879175: 12 61 36 7 8 8 4 71 88
|
||||
43314: 1 8 3 9 89 40 23
|
||||
443: 4 59 63 92 223
|
||||
27758: 2 7 75 2 4
|
||||
455283983: 542 84 39 8 2
|
||||
17903904: 8 2 74 2 5 8 9 7 5 6 597 3
|
||||
164212614: 6 99 3 467 589
|
||||
332: 1 3 63 59 19
|
||||
169957872291: 62 8 777 1 441 2 3 3 58
|
||||
1579812: 1 13 41 988 3
|
||||
7565601: 68 3 13 9 471 4 888
|
||||
650111616: 7 1 4 6 660 44 36 4 7 7 3
|
||||
64658888681: 205 9 2 7 4 8 9 3 1 973
|
||||
110542: 21 47 37 7 987
|
||||
15954644: 289 6 20 92 3
|
||||
21444451948: 709 6 777 75 386
|
||||
62439561: 29 4 42 18 712 9
|
||||
276121: 4 40 7 547 322 7 801
|
||||
159969: 2 987 81 6 66 6
|
||||
3035371450: 7 27 978 289 494 9 4 1
|
||||
239460: 2 5 641 9 4 7 200 9
|
||||
5713195236: 40 2 426 49 3 62 7 9 7
|
||||
2149739426: 8 88 2 28 6 54 7 95 83 5
|
||||
1718: 4 118 30 9 2 9 7 5 9 7 3 9
|
||||
9919: 7 7 7 818 5 45 40 4 7 55
|
||||
34032: 151 1 9 50 24
|
||||
14715168903: 68 5 56 9 62 6 8 905
|
||||
2994525122: 143 1 93 7 3 75 43 80
|
||||
43209839: 7 6 3 150 60 3 5 1 93 36
|
||||
185759568: 4 57 30 4 709 6 9 65
|
||||
9161171: 6 270 922 5 36
|
||||
28041: 64 28 906 98 6 75
|
||||
3593179865754: 359 31 798 65 7 52
|
||||
2865: 2 86 8
|
||||
10692457: 8 6 69 75 1 27 2 4 58
|
||||
4687467843727: 86 744 9 407 17 2 3 24
|
||||
26612: 13 76 4 483 6
|
||||
638458315: 4 742 1 8 6 9 435 3 4 9 7
|
||||
846650: 27 376 7 412 8 4 963
|
||||
611312537954: 998 8 766 96 612
|
||||
830179: 8 2 98 38 340
|
||||
81705528: 40 7 216 4 244 76 2 8
|
||||
1103706718: 52 7 459 734 296 9
|
||||
3277071: 456 38 2 9 189
|
||||
8229389: 777 45 938 7
|
||||
534640294: 1 533 6 40 294
|
||||
2052383067: 1 120 7 6 4 1 3 3 91 2 7
|
||||
10491952: 3 7 49 11 8 53
|
||||
8303907: 3 18 2 345 7 34 28 4 7 6
|
||||
121279661: 3 3 231 875 9 37 59
|
||||
8016321895: 30 28 4 2 5 7 4 1 9 4 9 98
|
||||
105366571639: 731 712 3 6 3 55 8 1
|
||||
602344227: 941 8 1 3 8 1 1 9 6 5 4 95
|
||||
5083703181: 50 8 344 25 722 596 1
|
||||
25570353: 3 9 76 3 9 729 7 8 8 6 1 8
|
||||
8520: 2 7 3 839 9
|
||||
13240: 713 189 2 751 8
|
||||
7507719: 4 5 384 65 4 2
|
||||
24634550: 18 823 95 4 25 262
|
||||
461920: 8 58 31 51 32
|
||||
48092166237366: 7 29 5 5 9 2 228 6 877 4
|
||||
691: 63 39 590
|
||||
1101: 1 2 12 96 1
|
||||
4776018820094: 5 1 48 796 7 5 28 25 96
|
||||
71549891: 234 6 73 402 45 4 891
|
||||
65971: 95 1 474 3 38 1 990
|
||||
2833381733328: 943 8 6 6 5 2 88 8 2 6 8 6
|
||||
12366799605021: 8 48 2 3 54 4 8 450 9 1 8
|
||||
1713454082: 611 8 4 7 497 5 7 6 5 7 5
|
||||
987959604486: 341 618 6 7 23 482
|
||||
419832: 3 97 5 3 1 833
|
||||
5590023: 852 223 52 22 2
|
||||
230667: 64 6 5 3 2 3 8 5 1 5 34 3
|
||||
1574643681: 69 9 79 464 36 82
|
||||
15620: 26 1 79 4 2 71
|
||||
3398985: 15 182 5 83 45 3
|
||||
72740702586: 227 1 6 748 7 9 43 2 51
|
||||
2043806: 6 6 5 3 4 85 125 50 3 56
|
||||
61980953: 291 599 53 696 65
|
||||
882700: 8 89 7 52 5 5
|
||||
66529013: 9 90 672 381 632
|
||||
2008688: 6 63 24 3 827 808
|
||||
28367539823: 30 572 984 8 210 623
|
||||
2877: 3 60 8
|
||||
52543072: 28 98 7 9 259
|
||||
7258524: 331 3 3 697 5 76 644 3
|
||||
1487567187: 21 4 6 6 4 965 3 6 32 8
|
||||
1474483503169: 9 70 7 743 5 9 30 1 66
|
||||
486353339: 863 860 563 110 50
|
||||
7183823: 921 2 13 3 23
|
||||
64897414: 2 39 7 5 79 6 6 806 3 9
|
||||
33481349208: 2 7 5 89 1 912 651 8
|
||||
10637: 14 8 585 2 2 7 776 88 1
|
||||
36614095: 103 64 108 5 203
|
||||
6882018086: 173 6 6 9 2 3 2 330 83
|
||||
2580928: 366 11 2 65 64
|
||||
3574756019: 4 1 79 905 60 17
|
||||
4561971456: 9 490 66 2 4 758 84 8
|
||||
983106398: 98 3 106 40 1
|
||||
251853981: 4 29 4 5 52 3 2 2 4 82 5 7
|
||||
30030613: 396 9 815 4 74 9
|
||||
3871: 8 35 2 97 2 77
|
||||
95531982: 2 8 9 7 7 897 331 18 24
|
||||
4618468: 7 506 108 52 9 28
|
||||
607: 53 1 5 19 51
|
||||
38888: 2 588 433 867 5
|
||||
677821505: 12 6 56 23 388 4 2 8 6 3
|
||||
75800: 1 2 47 537 83
|
||||
265349883428: 2 47 1 388 5 7 6 4 3 6 9 7
|
||||
241279: 4 2 6 5 4 2 315 1 40 65 4
|
||||
690856530: 1 8 814 95 741
|
||||
199715: 9 4 4 7 40 2 7 1 53 1 3 61
|
||||
965312183: 8 312 2 19 3 58 7 80
|
||||
61183275: 667 5 357 55 1 87
|
||||
1400708: 6 8 5 3 1 396 1 7 67 6 8
|
||||
112594: 9 8 8 45 92
|
||||
429636: 1 864 496 590 6
|
||||
1482458: 23 6 5 97 457
|
||||
31614408: 76 27 87 2 18 98
|
||||
2482: 94 4 5 7 5
|
||||
48634: 1 5 3 2 6 63 58 924 22
|
||||
2312924: 384 496 66 925 6
|
||||
350017: 8 27 7 6 7 46 214 4
|
||||
610092810: 1 27 4 774 93 4 3 54 5 9
|
||||
16927878611: 9 66 6 703 272 652 82
|
||||
8915044725: 786 470 1 883 9 535 5
|
||||
499175627: 50 2 801 76 77 1 1 8
|
||||
53008382: 9 6 35 2 7 9 55 5 532
|
||||
433314040: 64 64 7 21 6 9 380 7 42
|
||||
17701929: 688 3 3 5 9 3 3 2 1 9 17
|
||||
150174193: 816 46 7 314 232 2 4
|
||||
2470006: 5 2 5 33 699 17 87 3 92
|
||||
11037638037: 876 42 5 6 2 6 8 3 10 9
|
||||
949685: 5 6 321 2 4 41 67 6 88
|
||||
1717284: 8 7 1 2 438 9 77 7 35 4 5
|
||||
7316: 55 7 19
|
||||
90497: 5 418 5 223 39 95
|
||||
18614610: 21 63 67 30 7
|
||||
4776528: 39 8 761 4 25
|
||||
4692240011: 70 798 70 12 14
|
||||
8013: 80 1 2
|
||||
7719: 2 616 9 6 273
|
||||
722396745: 9 917 3 8 36 3 7 9 2 1 7 8
|
||||
140072504: 21 4 7 4 750 5 832 3 8
|
||||
50461993118: 4 5 888 4 287 440
|
||||
1652432: 319 7 74 6 6
|
||||
5405525: 9 51 37 9 2 5 552 5
|
||||
18749162: 187 491 6 5
|
||||
147238350973: 813 193 479 3 7 9 1 3 2
|
||||
62818731: 5 7 82 2 1 8 7 6 1 9 346 9
|
||||
43686: 890 4 6 4 48 4 290
|
||||
236322561: 9 8 11 844 248 2 1 6 1
|
||||
1780290: 94 20 6 71 3 786
|
||||
254880093: 95 754 596 4 3 30
|
||||
12143752: 2 986 687 725 5
|
||||
1515882: 9 6 1 7 9 4 17 75 6 2 180
|
||||
40428: 9 8 6 41
|
||||
48749373: 5 8 7 41 61 704 8 2 47 3
|
||||
2197095: 3 3 71 1 3 61 9 56 1 99 4
|
||||
7991: 62 46 92 2 94 27
|
||||
21360925: 79 3 34 32 4 9
|
||||
25258: 2 9 5 1 8 1 5 9 7 45 7 2
|
||||
25520: 480 52 557
|
||||
167623903: 2 5 5 6 534 2 107 3 6 47
|
||||
9255627: 8 73 3 41 929
|
||||
4324284200: 116 320 5 253 49 98
|
||||
657311: 2 54 2 772 85 752 6
|
||||
91781: 721 895 23 28 2
|
||||
382727719428: 7 875 6 3 3 5 6 5 9 74 1 9
|
||||
2120662: 989 4 6 838 84 86 74
|
||||
107819: 66 7 3 5 5 47 5 54 5 2 71
|
||||
86547302572: 2 6 363 900 3 5 8 9 7 2
|
||||
53064278158: 67 792 1 207 71 15 4 6
|
||||
306602: 6 274 18 8 604
|
||||
41241669: 44 52 8 537 70
|
||||
1084391294983: 97 9 69 6 960 831 6 9 3
|
||||
143990: 9 8 4 3 778 216 2
|
||||
87046848: 4 6 6 7 7 325 1 8 8 9 96 2
|
||||
3042364000: 4 4 4 914 10 1 2 5 650 8
|
||||
78292621: 2 650 33 411 71
|
||||
12249: 6 8 9 165 42 9 6 4 8
|
||||
596166973: 4 741 8 8 8 6 3 5 84 83 6
|
||||
597: 13 1 16 37 1 352
|
||||
17177: 1 40 1 84 48 74 69 63
|
||||
33357599: 9 3 14 4 1 3 572 2 3 16 6
|
||||
621584: 85 61 679 2 53
|
||||
8476482: 6 282 7 9 93 41 9 5 8 4 1
|
||||
727646: 6 3 4 7 643
|
||||
19310004: 9 26 79 777 218
|
||||
936016: 104 5 5 360 9 7
|
||||
6271776412470: 18 3 6 68 21 103 118 4
|
||||
16848: 1 8 936
|
||||
309755: 2 4 5 23 5 3 711 3 2 205
|
||||
468321108826: 77 9 4 3 8 4 3 81 451 75
|
||||
94284: 3 103 5 28 3
|
||||
207977924: 25 1 68 4 621 9 3 7 7 1 6
|
||||
77834773888: 6 772 347 73 887
|
||||
77741: 7 19 1 56 7 94
|
||||
80917752: 7 1 9 7 118 65 239 24
|
||||
1319980: 51 83 995 190 982
|
||||
305645866808: 4 84 3 6 9 586 6 8 10 7
|
||||
97155423: 1 86 6 176 5 71 6
|
||||
31621436279: 651 24 2 65 510 83 9
|
||||
26817: 4 469 6
|
||||
281762: 7 4 99 4 41 63
|
||||
204471673406: 35 6 7 4 647 1 842 143
|
||||
1111: 76 50 8 5 400 36 1 5
|
||||
187652950250: 69 501 27 99 151 253
|
||||
676192220766: 8 169 38 444 145 5 42
|
||||
15319968215: 951 4 2 498 16 215
|
||||
150001: 534 5 25 3 1 264 45 4
|
||||
790637990: 4 48 2 7 7 67 3 79 2 7 10
|
||||
1852437: 8 65 356 8 431
|
||||
115748421794: 1 10 207 7 6 6 3 7 7 5 5 9
|
||||
221122803677: 32 691 2 803 680
|
||||
79525470: 787 8 23 2 441 29
|
||||
512392: 62 8 95 92 76
|
||||
9224: 20 28 9 717 4 8
|
||||
7233408: 4 7 8 39 644
|
||||
12326464: 133 3 3 3 329 462
|
||||
1240109: 8 5 121 5 1 8 5 9 11 1 4 8
|
||||
1847: 68 6 2 895 136
|
||||
32730604: 541 605 59 47
|
||||
127: 4 1 8 4 5
|
||||
6887587392: 9 5 4 128 4 7 4 9 8 6 84 8
|
||||
40284359256: 242 9 7 9 9 117 6 25 9
|
||||
9085238895: 514 996 4 6 8 4 3 8 8 94
|
||||
45267169: 7 9 27 7 571
|
||||
26320033: 53 13 1 53 3 12 2 82 6
|
||||
4092536: 909 42 45 6 5 76 6 50
|
||||
214224125: 286 4 6 418 5 397 5 6 8
|
||||
926890320: 82 7 9 906 49 2 471 40
|
||||
6561314: 82 4 2 131 3
|
||||
1601: 5 69 2 911
|
||||
36541121965: 6 3 1 58 2 22 43 8 8 1 5 5
|
||||
3920136731: 9 6 2 74 721 6 5 567 2 8
|
||||
38024116764: 3 6 4 2 2 8 241 1 676 6
|
||||
3077565371715: 7 336 90 3 1 6 468 166
|
||||
106438447: 622 2 440 384 49
|
||||
5260: 5 47 60 1
|
||||
278705700: 4 508 6 9 1 8 5 6 7 5 4 9
|
||||
1436928: 8 9 6 921 6 71 5 2 6
|
||||
1951431370: 2 4 89 85 8 76 9 5 48 6 5
|
||||
19899723: 1 3 83 412 1 25
|
||||
8432163: 946 3 34 886 88
|
||||
812364030: 509 95 24 7 29
|
||||
7462067: 44 39 8 2 839
|
||||
9157805023: 49 6 2 792 2 4 68 5 203
|
||||
137882988389321: 90 383 7 47 4 389 319
|
||||
33583: 2 28 4 31 965 12 66 4
|
||||
3717: 97 6 9 4 9
|
||||
1599785: 616 585 1 510 11 85
|
||||
117849: 5 1 6 3 8 5 6 8 709 38 3 8
|
||||
6090541652: 27 41 371 2 1 55
|
||||
8719108: 897 9 9 4 5 6 5 50 64 6
|
||||
47752: 48 5 9 410 5
|
||||
56324: 9 59 92 2 9 2
|
||||
2035735966: 1 1 24 2 8 1 9 24 9 9 91 4
|
||||
116570: 798 9 72 8 253 2
|
||||
29709873287: 88 742 4 35 8 68 13
|
||||
234174187: 3 45 1 57 5 84 9 4 5 9 59
|
||||
16736701598: 343 6 2 7 7 37 72 5 439
|
||||
211644: 9 2 9 60 13 61 10 434
|
||||
179013467433: 378 60 67 45 2 61 4 30
|
||||
166860: 16 5 3 201 90
|
||||
21133014574: 3 773 752 6 35 4 4 5 4 2
|
||||
477838346: 954 9 7 6 1 1 5 62 1 6 5
|
||||
488581292: 2 67 4 158 704 5 2 93
|
||||
613128: 8 424 1 472 3
|
||||
1562923362: 38 2 473 80 3 3 577 22
|
||||
883109888: 3 8 5 6 15 8 5 5 5 1 7 1
|
||||
35305510: 9 255 1 1 75 22 205
|
||||
61140267395: 37 46 2 51 69 2 356 4 8
|
||||
921755: 7 7 867 62
|
||||
1551312028568: 5 8 567 3 456 57 5 6 5
|
||||
7965693: 862 11 475 8 94
|
||||
91279: 90 6 6 61 9
|
||||
14623844097: 38 483 8 76 5 88 11
|
||||
15193332929: 54 638 63 7 9 28
|
||||
445599: 608 35 9 7 11
|
||||
3929218999: 76 678 172 18 6 64 76
|
||||
40719830: 39 881 838 817 16
|
||||
10234: 91 4 1 7 4 8 21 13
|
||||
169: 124 8 1 1 36
|
||||
30930: 30 63 6 9 288
|
||||
49410: 2 19 6 139 270
|
||||
16565: 6 10 55 1 7
|
||||
938: 93 21 19 54 5
|
||||
1150493155: 6 4 316 810 493 157
|
||||
2162495: 12 2 30 832 3
|
||||
1161: 5 28 74 943 4
|
||||
49705: 4 1 5 1 8 6 73 2 52 24 5 5
|
||||
1408162: 47 587 574 5 9
|
||||
45711994001: 884 216 665 1 45 4 8 9
|
||||
461746986: 1 6 432 38 668
|
||||
6256097: 6 46 40 680 9 8
|
||||
932669: 93 266 9
|
||||
20168337417: 23 6 643 277 9 5 6 4 1 8
|
||||
71351707: 37 290 2 4 857 823 76
|
||||
3763: 1 37 99
|
||||
16080: 396 7 433 5 58
|
||||
434234: 2 163 647 8 5 10 9 44
|
||||
6482: 7 7 13 6 4 6 991 979 1 1
|
||||
39893544: 41 1 7 139 495 49
|
||||
350035: 13 4 827 750 8
|
||||
37814: 6 80 57 879 37
|
||||
1380736918: 1 876 736 9 18
|
||||
2125872000: 86 34 74 525 456
|
||||
590566: 89 7 5 564 856 64
|
||||
2383244325: 69 117 25 8 8 164 29 9
|
||||
1111: 3 6 1 24 86
|
||||
2478600296: 3 7 1 255 972 293
|
||||
113122749: 6 58 2 781 226 64 85
|
||||
3588584: 4 181 62 4 444 586
|
||||
229896240115: 8 8 8 6 34 5 8 8 18 2 616
|
||||
28575260691: 59 408 13 338 5 1 37
|
||||
9265890414: 926 58 90 374 42
|
||||
51484691: 520 322 2 50 63 611
|
||||
1040297: 699 4 4 2 93
|
||||
12524863130276: 5 30 6 928 6 2 969 73 5
|
||||
6508607: 7 32 415 20 7 5
|
||||
707165786: 227 35 673 10 89
|
||||
50601453135: 715 17 87 794 8 68 52
|
||||
28548350: 8 7 83 3 9 2 2 8 5 2 1
|
||||
160292921527: 926 577 7 738 4 3 7
|
||||
253414931: 888 267 87 22 274 8
|
||||
898: 20 6 4 615 4 67
|
||||
26195558: 77 486 23 7
|
||||
36957027: 4 106 336 9
|
||||
42539: 96 91 238 3 6
|
||||
536380505: 7 5 595 18 29 47 9 3 8 2
|
||||
344090: 5 92 2 6 59
|
||||
3957: 76 553 56 634 3
|
||||
2422596: 4 2 3 22 59 4
|
||||
857: 34 23 75
|
||||
101657569857: 331 24 33 149 93
|
||||
50738: 6 2 9 4 48 8
|
||||
126: 4 21 5
|
||||
11479: 1 3 32 3 302
|
||||
811587288: 72 992 83 919 9
|
||||
2529432: 1 85 86 342 1
|
||||
68498020: 58 31 330 93 766 2
|
||||
151583563: 25 284 354 2 49 2
|
||||
20379175829: 975 9 9 4 3 3 18 58 3 2 5
|
||||
4603: 6 751 8 86 1
|
||||
6217347273: 469 45 12 336 6 4 9 2 3
|
||||
39774594: 3 718 259 459 6
|
||||
2447810379025: 699 5 9 9 7 197 70 27
|
||||
915416: 3 6 50 8 72 7 46 30 2
|
||||
180195304: 25 6 7 9 3 4 6 6 6 7 303
|
||||
133151317497: 522 34 423 739 6 3 8 9
|
||||
78240: 9 3 321 9 237
|
||||
1451933: 573 50 1 8 39 59 1
|
||||
651038099: 24 84 84 4 8 32 43 961
|
||||
4067855507: 686 8 4 87 74 74 76 5
|
||||
85026: 27 4 46 6 1 18 4 7 4 797
|
||||
725685: 900 7 8 8 2
|
||||
13595185922: 1 6 3 3 96 262 2 4 8 590
|
||||
254255: 6 12 353 9 3
|
||||
504356064: 8 40 59 24 60 622
|
||||
96248635: 962 141 336 9 37
|
||||
5755949526: 2 6 1 59 9 94 5 9 495 2 3
|
||||
3186: 42 7 8 6 8
|
||||
75549035500: 1 4 2 5 6 4 11 111 3 54
|
||||
2162: 7 20 3
|
||||
16475136579: 85 673 8 4 8 97 9 14 9 9
|
||||
195316907: 7 279 16 879 29
|
||||
14893565: 71 233 5 38 9 20
|
||||
18198236: 8 295 6 1 82 37
|
||||
123309891: 759 8 193 833 69
|
||||
47500: 5 28 92 5 76
|
||||
7512336961: 829 3 2 27 43 4 9 964
|
||||
87280442712: 8 7 280 442 712
|
||||
7241800834: 36 7 8 30 8 9 8 4 69 4 8 7
|
||||
734076: 364 600 7 9 84
|
||||
116633: 92 337 679 58 34
|
||||
1063639692: 3 426 41 3 832 74
|
||||
696950735: 101 30 2 180 23 592 2
|
||||
480860228: 8 60 8 60 226
|
||||
23: 5 2 13
|
||||
2786: 7 2 3 279 92 7
|
||||
2616505: 701 533 7 87 8 5 974
|
||||
97117282: 6 2 6 4 3 86 5 8 6 4 3 76
|
||||
337862714: 97 1 6 53 8 1 574
|
||||
467738006: 729 95 81 6 8 69 516
|
||||
396418141: 301 439 210 171 3
|
||||
19534253: 2 188 14 6 6 8 9 161 5 1
|
||||
1226338348: 943 130 43 8 34 5
|
||||
5161934: 80 76 849 14
|
||||
29562003: 9 5 31 9 5 7 9 2 4 76 3
|
||||
981279452: 5 545 76 3 4 9 4 1 9 9 2 9
|
||||
211213420: 22 8 6 2 13 423
|
||||
292: 27 5 6 5 2
|
||||
3830: 1 48 3 35 8
|
||||
39906107: 28 576 638 66 1
|
||||
469693: 1 9 9 6 277 6 5 1 92 4 96
|
||||
20531724713: 3 17 2 32 4 389 247 13
|
||||
57609: 60 8 3 2 4
|
||||
8600: 2 570 3 4 5
|
||||
46593: 1 9 2 49 69 19 19 24
|
||||
2068: 9 1 220 9 1 78
|
||||
9673650: 8 33 32 74 7 83 45
|
||||
857: 76 6 91
|
||||
50804424: 269 69 76 47 551 3 3 4
|
||||
47754844836: 8 71 44 7 7 4 152 9 3 4
|
||||
5675402460: 2 4 3 4 520 4 5 2 7 1 21 2
|
||||
37840572: 8 8 2 5 53 40 5 61 3 6
|
||||
1921721: 9 1 9 7 75 117 7 61 2 21
|
||||
724519325591: 105 69 193 2 5 54 4 8
|
||||
184839: 2 1 46 1 24 2 7 5 8 5 3
|
||||
482549415: 1 19 8 7 6 58 8 202 2 2 3
|
||||
11195245: 4 36 6 929 5 4 351 247
|
||||
111184: 9 2 117 7 7
|
||||
847677692808: 752 95 67 76 92 810
|
||||
29390907: 7 2 51 9 6 178 12 97 30
|
||||
8444586: 957 2 43 47 874
|
||||
2178027047: 21 780 270 11 37
|
||||
2817139367: 7 3 846 28 46 7 34 1 7
|
||||
3793: 46 3 363 41 7
|
||||
1938: 6 39 3 14 6
|
||||
1184361: 908 788 77 668
|
||||
580356547: 37 66 8 83 296 8
|
||||
9009968: 92 85 578 80 88
|
||||
98071: 19 614 5
|
||||
67259: 1 5 726 2
|
||||
58837679: 3 3 95 6 782 4
|
||||
13865366: 462 5 800 6 566
|
||||
762572523: 6 3 532 8 3 8 8 7 1 4 646
|
||||
28358704848: 378 5 58 15 4 850
|
||||
455021: 214 239 985 1 78 959
|
||||
897: 4 393 499
|
||||
61970: 7 59 150 20
|
||||
29458: 9 1 6 2 6 260 754 5 89 1
|
||||
188015178612: 9 19 1 3 4 3 4 2 559 6 1 5
|
||||
69160: 7 4 9 3 3 59 7 6 9 8 1 56
|
||||
32750: 9 3 96 465 213 4 8
|
||||
4752228: 9 22 800 30 226
|
||||
117964: 56 5 391 795 66 1 77
|
||||
2814624: 21 1 8 9 9 7 1 56 2 4 9 8
|
||||
922210: 3 43 1 2 24 265 4 3
|
||||
568694644: 56 8 694 215 427
|
||||
28545605: 8 90 250 626 1 4
|
||||
2226913383: 9 5 6 8 30 4 60 8 5 8 82
|
||||
501457483: 9 200 737 6 41 63 98 2
|
||||
47924895: 891 3 2 4 9 4 8 2 7 8 5 95
|
||||
7837400: 3 7 4 3 6 82 2 973 8 745
|
||||
9928694: 82 910 86 15 78
|
||||
370200093: 987 788 5 50 1 19 417
|
||||
46434: 8 9 4 601 758
|
||||
45316225286: 953 11 175 47 289
|
||||
5369310: 9 5 99 31 958 7 3 76 11
|
||||
2325363: 31 2 7 69 65
|
||||
42357933: 86 4 2 91 46 6 7 9 4 21 8
|
||||
545787: 4 9 4 4 7 565
|
||||
704933270: 37 381 6 9 1 55 7 3 4 5
|
||||
8720: 5 436 4
|
||||
11823: 2 71 43 97 72
|
||||
22741950: 6 49 76 59 770
|
||||
5235416: 871 6 48 893 6
|
||||
3386: 59 1 9 49 8
|
||||
358589982: 512 270 7 9 85
|
||||
3034749: 3 98 1 3 6 7 108 2
|
||||
744180: 9 9 662 1 181
|
||||
58000414934: 82 918 58 410 4 931
|
||||
48137153: 2 7 758 7 9 9 7 2 3 8 6 83
|
||||
57552881: 32 1 6 32 7 4 4 83 1 8 41
|
||||
7006549: 80 2 8 865 4 1 2
|
||||
3102: 13 318 676 3 81
|
||||
116644638: 3 205 5 3 3 47 564 9 1 4
|
||||
1051844: 529 2 22 5 9 8 3
|
||||
5353920: 8 8 715 3 39
|
||||
2644597015: 419 295 7 559 5 37
|
||||
52254730: 5 225 466 6 9
|
||||
11488680: 9 7 924 679 2 9
|
||||
18623: 3 2 76 146 8 6 3 7 3 70
|
||||
42816163: 6 5 6 9 72 54 3 1 71 964
|
||||
41946: 10 7 1 6 7 2 5 7 43 7 1 2
|
||||
8183787858: 5 4 558 1 5 5 4 2 4 3 13 8
|
||||
1557786579: 20 16 5 89 868
|
||||
467817605: 495 2 678 3 94
|
||||
2297229362: 3 745 62 225 4 363
|
||||
4973982: 7 3 62 6 230
|
||||
365272: 8 34 41 44 71
|
||||
7269003: 3 81 9 7 1 3 793 6 7 7 63
|
||||
952425: 4 4 7 75 83 3
|
||||
91911: 83 1 89 7 76 407
|
||||
9547: 57 66 23 984 2 9
|
||||
11760261: 39 20 3 26 1
|
||||
1533: 55 710 9 8 3 741 2 5
|
||||
1100508606915: 78 21 246 572 54 912
|
||||
684156: 41 2 89 73 71
|
||||
21390: 1 23 1 7 1 3 5 2 610 5 6 1
|
||||
1950692122: 830 235 19 2 121
|
||||
25581: 2 5 551 1 1 25
|
||||
11936: 23 718 5 8 2
|
||||
1324: 97 15 3 7 99 3
|
||||
802474583: 3 2 738 173 535 76 4 6
|
||||
187725246720: 901 84 4 46 656 620
|
||||
5640043914682: 5 470 24 439 1 467 9
|
||||
116280601: 6 631 2 88 18 590 7 4
|
||||
19881824665: 1 978 8 6 1 6 68 499 2 4
|
||||
1036887: 2 100 7 9 885
|
||||
11925030602: 52 3 77 265 408 25 3 5
|
||||
57072334: 6 9 309 9 4 6 2 4 2 3 57 1
|
||||
5512320057: 596 42 5 5 2 6 9 8 4 1 4 7
|
||||
1320852514: 539 30 751 8 52 512 3
|
||||
691: 77 2 7 8 1
|
||||
6741399760: 674 1 399 688 69
|
||||
50900868315: 797 1 3 2 129 9 3 165
|
||||
737071088: 664 15 42 74 5
|
||||
16292: 536 14 639 2 5
|
||||
82162954: 2 19 3 112 144 463 5
|
||||
135191283: 160 939 3 840 1
|
||||
545472419: 8 6 6 6 23 47 23 1 4 7 9 3
|
||||
323: 69 13 228 8 7
|
||||
374447: 891 1 3 1 4 6 30 9 4 8 4 2
|
||||
99302403523: 8 55 7 50 8 96 6 2 5 5 2 3
|
||||
803: 7 23 5 1
|
||||
20392701: 96 18 5 7 212
|
||||
1846762620: 9 4 65 28 12 40 5 24 5
|
||||
525204224: 58 35 6 9 222
|
||||
5622: 96 32 22 412 2
|
||||
1001297: 83 2 835 2 99
|
||||
8866240740651: 4 9 9 9 5 1 470 42 5 8 7 1
|
||||
16161: 202 80 3
|
||||
18392917: 94 8 148 18 613 13 1 7
|
||||
1956174: 95 1 7 5 22 831
|
||||
118542608: 28 14 63 8 2 350 226 8
|
||||
183216872: 1 88 563 7 8 457 77 9 2
|
||||
117593050794363: 7 7 4 6 7 3 536 1 74 36 3
|
||||
19028270: 3 338 3 67 28
|
||||
852616932: 9 84 3 756 616 929
|
||||
77555: 8 99 26 7 94 5
|
||||
392041093: 5 5 2 81 6 7 5 8 35 6 9 3
|
||||
72779300001: 9 67 8 94 9 25 80 1
|
||||
146243097: 1 8 8 3 4 4 72 7 4 39 693
|
||||
190320583: 519 1 6 61 583
|
||||
14630112: 12 4 531 574
|
||||
122929: 1 9 243 8 471
|
||||
1423085307: 79 18 966 97 22 3 10 6
|
||||
8082996929: 1 616 582 5 69 8 9 928
|
||||
1719: 9 182 9
|
||||
610770: 3 3 797 1 6 73 44 3 9 4 6
|
||||
4104567568: 69 81 48 32 3 4 153
|
||||
447058: 4 46 1 10 57
|
||||
20788483: 67 310 5 177 2 56 29
|
||||
504485325932: 6 8 4 1 7 6 7 369 39 47
|
||||
65260363: 611 350 1 3 29 10 676
|
||||
1128553734873: 5 302 9 4 54 532 9 4 71
|
||||
90944000: 35 568 4 788 35 2 406
|
||||
90052: 2 8 7 1 5 17 1 8 3 23 6 2
|
||||
52570: 8 2 1 7 3 7 4 6 8 99 3 35
|
||||
6115797: 47 14 15 791 6
|
||||
250: 4 61 5 1
|
||||
144388: 6 8 127 3 3
|
||||
23719254375: 2 63 886 81 77 36
|
||||
211983858: 11 3 1 19 6 7 3 7 6 8 4 5
|
||||
13403: 46 89 99 1 37
|
|
@ -1,36 +0,0 @@
|
|||
import sys
|
||||
import itertools
|
||||
|
||||
def evaluate_expression(values, operators):
|
||||
result = values[0]
|
||||
for num, op in zip(values[1:], operators):
|
||||
if op == "+":
|
||||
result += num
|
||||
elif op == "*":
|
||||
result *= num
|
||||
return result
|
||||
|
||||
def main():
|
||||
lines = sys.stdin.read().splitlines()
|
||||
valid_results = []
|
||||
|
||||
for line in lines:
|
||||
target_result, raw_values = line.split(": ")
|
||||
target_result = int(target_result)
|
||||
numbers = list(map(int, raw_values.split()))
|
||||
|
||||
operators = ["*", "+"]
|
||||
operator_combinations = itertools.product(operators, repeat=len(numbers) - 1)
|
||||
|
||||
for ops in operator_combinations:
|
||||
try:
|
||||
if evaluate_expression(numbers, ops) == target_result:
|
||||
valid_results.append(target_result)
|
||||
break
|
||||
except Exception:
|
||||
continue
|
||||
|
||||
return sum(valid_results)
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(main())
|
|
@ -1,38 +0,0 @@
|
|||
import sys
|
||||
import itertools
|
||||
|
||||
def evaluate_expression(values, operators):
|
||||
result = values[0]
|
||||
for num, op in zip(values[1:], operators):
|
||||
if op == "+":
|
||||
result += num
|
||||
elif op == "*":
|
||||
result *= num
|
||||
elif op == "||":
|
||||
result = int(str(result) + str(num))
|
||||
return result
|
||||
|
||||
def main():
|
||||
lines = sys.stdin.read().splitlines()
|
||||
valid_results = []
|
||||
|
||||
for line in lines:
|
||||
target_result, raw_values = line.split(": ")
|
||||
target_result = int(target_result)
|
||||
numbers = list(map(int, raw_values.split()))
|
||||
|
||||
operators = ["*", "+", "||"]
|
||||
operator_combinations = itertools.product(operators, repeat=len(numbers) - 1)
|
||||
|
||||
for ops in operator_combinations:
|
||||
try:
|
||||
if evaluate_expression(numbers, ops) == target_result:
|
||||
valid_results.append(target_result)
|
||||
break
|
||||
except Exception:
|
||||
continue
|
||||
|
||||
return sum(valid_results)
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(main())
|
|
@ -1 +0,0 @@
|
|||
2333133121414131402
|
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
|||
0099811188827773336446555566
|
|
@ -1,43 +0,0 @@
|
|||
import sys
|
||||
|
||||
def main():
|
||||
raw_line = sys.stdin.read().strip()
|
||||
line = [int(x) for x in raw_line]
|
||||
|
||||
files_map = []
|
||||
file_id = 0
|
||||
is_file_len = True
|
||||
for num in line:
|
||||
if is_file_len:
|
||||
if num > 0:
|
||||
files_map.extend([str(file_id)] * num)
|
||||
file_id += 1
|
||||
else:
|
||||
if num > 0:
|
||||
files_map.extend(["."] * num)
|
||||
is_file_len = not is_file_len
|
||||
|
||||
map_list = files_map
|
||||
while True:
|
||||
try:
|
||||
gap_index = map_list.index(".")
|
||||
except ValueError:
|
||||
break
|
||||
if all(x == "." for x in map_list[gap_index+1:]):
|
||||
break
|
||||
rightmost_file_index = None
|
||||
for idx in range(len(map_list)-1, -1, -1):
|
||||
if map_list[idx] != ".":
|
||||
rightmost_file_index = idx
|
||||
break
|
||||
map_list[gap_index] = map_list[rightmost_file_index]
|
||||
map_list[rightmost_file_index] = "."
|
||||
|
||||
checksum_parts = []
|
||||
for idx, val in enumerate(map_list):
|
||||
if val != ".":
|
||||
checksum_parts.append(idx * int(val))
|
||||
print("System Checksum Found: " + str(sum(checksum_parts)))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -1,60 +0,0 @@
|
|||
import sys
|
||||
|
||||
def main():
|
||||
raw_line = sys.stdin.read().strip()
|
||||
line = [int(x) for x in raw_line]
|
||||
|
||||
blocks = []
|
||||
file_id = 0
|
||||
is_file_len = True
|
||||
for num in line:
|
||||
if is_file_len:
|
||||
if num > 0:
|
||||
blocks.extend([str(file_id)] * num)
|
||||
file_id += 1
|
||||
else:
|
||||
if num > 0:
|
||||
blocks.extend(["."] * num)
|
||||
is_file_len = not is_file_len
|
||||
|
||||
# Move whole files in order of decreasing file ID
|
||||
max_file_id = file_id - 1
|
||||
for fid in range(max_file_id, -1, -1):
|
||||
file_positions = [i for i, b in enumerate(blocks) if b == str(fid)]
|
||||
if not file_positions:
|
||||
continue
|
||||
file_len = len(file_positions)
|
||||
leftmost_file_index = min(file_positions)
|
||||
|
||||
candidate_spans = []
|
||||
free_count = 0
|
||||
start_index = 0
|
||||
for i in range(leftmost_file_index):
|
||||
if blocks[i] == '.':
|
||||
if free_count == 0:
|
||||
start_index = i
|
||||
free_count += 1
|
||||
if free_count == file_len:
|
||||
candidate_spans.append((start_index, i))
|
||||
else:
|
||||
free_count = 0
|
||||
|
||||
if not candidate_spans:
|
||||
continue
|
||||
|
||||
span_start, span_end = candidate_spans[0]
|
||||
|
||||
for pos in file_positions:
|
||||
blocks[pos] = '.'
|
||||
for i in range(span_start, span_start + file_len):
|
||||
blocks[i] = str(fid)
|
||||
|
||||
# Compute checksum
|
||||
checksum_parts = []
|
||||
for idx, val in enumerate(blocks):
|
||||
if val != ".":
|
||||
checksum_parts.append(idx * int(val))
|
||||
print("System Checksum Found: " + str(sum(checksum_parts)))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in a new issue