Task 15.1, 16.1, 16.2. Naive solution for 15.2, should use A*
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
__pycache__/
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
from timeit import timeit as _timeit
|
||||||
|
timeit = lambda x: _timeit(x, globals=globals(), number=1)
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
def find_min_risk(field):
|
||||||
|
M = len(field[0])
|
||||||
|
N = len(field)
|
||||||
|
field = defaultdict(lambda: float("+inf"), {(i,j): int(x) for i, line in enumerate(field) for j,x in enumerate(line)})
|
||||||
|
directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
|
||||||
|
stack = []
|
||||||
|
def f(i, j, s):
|
||||||
|
stack.append((i,j,s))
|
||||||
|
if d[(i,j)] <= s:
|
||||||
|
return
|
||||||
|
d[(i,j)] = s
|
||||||
|
if (i, j) == (N-1, M-1):
|
||||||
|
return
|
||||||
|
for di, dj in directions:
|
||||||
|
f(i+di, j+dj, s+field[(i,j)])
|
||||||
|
d = defaultdict(lambda: float("+inf"))
|
||||||
|
f(0,0,0)
|
||||||
|
return d[(N-1, M-1)]
|
||||||
|
|
||||||
|
def find_min_risk_opt1(field):
|
||||||
|
M = len(field[0])
|
||||||
|
N = len(field)
|
||||||
|
field = defaultdict(lambda: float("+inf"), {(i,j): int(x) for i, line in enumerate(field) for j,x in enumerate(line)})
|
||||||
|
directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
|
||||||
|
stack = [(0,0,0)]
|
||||||
|
d = defaultdict(lambda: float("+inf"))
|
||||||
|
while stack:
|
||||||
|
i, j, s = stack.pop()
|
||||||
|
if d[(i,j)] <= s:
|
||||||
|
continue
|
||||||
|
d[(i,j)] = s
|
||||||
|
if (i, j) == (N-1, M-1):
|
||||||
|
continue
|
||||||
|
stack.extend([(i+di, j+dj, s+field[(i,j)]) for di, dj in directions][::-1])
|
||||||
|
return d[(N-1, M-1)]
|
||||||
|
|
||||||
|
statement_field = """
|
||||||
|
1163751742
|
||||||
|
1381373672
|
||||||
|
2136511328
|
||||||
|
3694931569
|
||||||
|
7463417111
|
||||||
|
1319128137
|
||||||
|
1359912421
|
||||||
|
3125421639
|
||||||
|
1293138521
|
||||||
|
2311944581
|
||||||
|
""".strip().split('\n')
|
||||||
|
print('a1:', timeit('assert find_min_risk(statement_field)==40'))
|
||||||
|
print('b1:', timeit('assert find_min_risk_opt1(statement_field)==40'))
|
||||||
|
|
||||||
|
statement_field = """
|
||||||
|
1163751742
|
||||||
|
1381373672
|
||||||
|
2135511328
|
||||||
|
3694931569
|
||||||
|
7463417111
|
||||||
|
1319128137
|
||||||
|
1359912421
|
||||||
|
3125421639
|
||||||
|
1293138521
|
||||||
|
2311944582
|
||||||
|
""".strip().split('\n')
|
||||||
|
x = int(statement_field[0][0])
|
||||||
|
y = int(statement_field[-1][-1])
|
||||||
|
print('a2:', timeit('assert find_min_risk(statement_field)-x+y==40'))
|
||||||
|
print('b2:', timeit('assert find_min_risk_opt1(statement_field)-x+y==40'))
|
||||||
|
|
||||||
|
with open("input") as f:
|
||||||
|
field = f.read().strip().split('\n')
|
||||||
|
|
||||||
|
x = int(field[0][0])
|
||||||
|
y = int(field[-1][-1])
|
||||||
|
print('b3:', timeit('print(find_min_risk_opt1(field)-x+y)'))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+78
@@ -0,0 +1,78 @@
|
|||||||
|
from timeit import timeit as _timeit
|
||||||
|
timeit = lambda x: _timeit(x, globals=globals(), number=1)
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
def find_min_risk(field):
|
||||||
|
M = len(field[0])
|
||||||
|
N = len(field)
|
||||||
|
field = defaultdict(lambda: float("+inf"), {(i,j): int(x) for i, line in enumerate(field) for j,x in enumerate(line)})
|
||||||
|
directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
|
||||||
|
stack = []
|
||||||
|
def f(i, j, s):
|
||||||
|
stack.append((i,j,s))
|
||||||
|
if d[(i,j)] <= s:
|
||||||
|
return
|
||||||
|
d[(i,j)] = s
|
||||||
|
if (i, j) == (N-1, M-1):
|
||||||
|
return
|
||||||
|
for di, dj in directions:
|
||||||
|
f(i+di, j+dj, s+field[(i,j)])
|
||||||
|
d = defaultdict(lambda: float("+inf"))
|
||||||
|
f(0,0,0)
|
||||||
|
return d[(N-1, M-1)]
|
||||||
|
|
||||||
|
def find_min_risk_opt1(field):
|
||||||
|
M = len(field[0])
|
||||||
|
N = len(field)
|
||||||
|
field = defaultdict(lambda: float("+inf"), {(i,j): int(x) for i, line in enumerate(field) for j,x in enumerate(line)})
|
||||||
|
directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
|
||||||
|
stack = [(0,0,0)]
|
||||||
|
d = defaultdict(lambda: float("+inf"))
|
||||||
|
while stack:
|
||||||
|
i, j, s = stack.pop()
|
||||||
|
if d[(i,j)] <= s:
|
||||||
|
continue
|
||||||
|
d[(i,j)] = s
|
||||||
|
if (i, j) == (N-1, M-1):
|
||||||
|
continue
|
||||||
|
stack.extend([(i+di, j+dj, s+field[(i,j)]) for di, dj in directions][::-1])
|
||||||
|
return d[(N-1, M-1)]
|
||||||
|
|
||||||
|
def make_field(field):
|
||||||
|
def tr(f, n):
|
||||||
|
orig = '123456789'
|
||||||
|
t = orig[n:]+orig[:n]
|
||||||
|
return [line.translate(str.maketrans(orig, t)) for line in field]
|
||||||
|
field = [[tr(field, (x+y)%9) for x in range(5)] for y in range(5)]
|
||||||
|
res = []
|
||||||
|
for y in field:
|
||||||
|
res.extend([''.join(line)for line in zip(*y)])
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
statement_field = """
|
||||||
|
1163751742
|
||||||
|
1381373672
|
||||||
|
2136511328
|
||||||
|
3694931569
|
||||||
|
7463417111
|
||||||
|
1319128137
|
||||||
|
1359912421
|
||||||
|
3125421639
|
||||||
|
1293138521
|
||||||
|
2311944581
|
||||||
|
""".strip().split('\n')
|
||||||
|
statement_field = make_field(statement_field)
|
||||||
|
x = int(statement_field[0][0])
|
||||||
|
y = int(statement_field[-1][-1])
|
||||||
|
assert len(statement_field)==50
|
||||||
|
assert all(len(line)==50 for line in statement_field)
|
||||||
|
#print('a1:', timeit('assert find_min_risk(statement_field)-x+y==315'))
|
||||||
|
print('b1:', timeit('assert find_min_risk_opt1(statement_field)-x+y==315'))
|
||||||
|
with open("input") as f:
|
||||||
|
field = f.read().strip().split('\n')
|
||||||
|
field = make_field(field)
|
||||||
|
x = int(field[0][0])
|
||||||
|
y = int(field[-1][-1])
|
||||||
|
print('b3:', timeit('print(find_min_risk_opt1(field)-x+y)'))
|
||||||
|
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
5965431295231274959859471916143233128326711395729192128364316532213221929918691297412714255729119678
|
||||||
|
5571897338216218431415954149362624276359139213313969151416742291159728416827198123589199183154421441
|
||||||
|
3171111816481142595911182373573161912252822129979242953221478138221541791599391292297963231851159431
|
||||||
|
9912211892621122931135719915833918979685811292995911617199521191388755133362728179681718485233647194
|
||||||
|
2987717117181921276421242757232451934721539188871562767329737971291989492419782719814733134234821933
|
||||||
|
9891232431917289993316672595151742912432646712141912168416542141941216491869741913829123336917781131
|
||||||
|
2698914787863913941391762518231717573495733231319567329146712118498191194315219217722234827598851193
|
||||||
|
4283278171452331941533118839965433462226622832745718911759578161711723284741154292254247215947117574
|
||||||
|
4729518876865318339218246659989198519229318334714183283292591124797119479179394376119759972315478312
|
||||||
|
9269611539112923941193374337611812273918782182111711228427912932296164741975399476436521399232611411
|
||||||
|
9121614993242617961129113713945816376519116179731694591819925123143171631946122131119165191268899289
|
||||||
|
3742884711891125959671491792344349183328253285436718419711971691631991651911113672513227961721934331
|
||||||
|
8386429171626218818331257434191312391838221163873213171952144474839144447959323981181924964139114743
|
||||||
|
8559951249535321919111326533269294228753311471313239139712918148811118291248147293998923231824825953
|
||||||
|
2789117919873315689147799878123695111353222423721757995381929611588473162137467168231869271324231355
|
||||||
|
7914627695211918114193931949264919292219928123824441531634314333793231287191917166925593913153482232
|
||||||
|
1262112726194175111191797116111399224811131184323341138153831263112157229911915168161253225238752494
|
||||||
|
1131236973684481251933224999151945318398522199345615346816294227718215941244184143871881329318569161
|
||||||
|
2942187879461418913791381619992748188581394114881829182888612315299844313923299592169441832481233925
|
||||||
|
8142892413414816219212242925171241983422147743391874415186344512195196641427137425188341657542929433
|
||||||
|
2521911911316278711912358924176128818171299312296391789431219184854899928916531113271994449221194859
|
||||||
|
8313348333413351612952934112629191629311963993135815829727231241615838142563754833112555469216647317
|
||||||
|
9633744821772918214829913112189931943123664949532111193996821251928322492279918113124117186171633313
|
||||||
|
1959512811325548291131164792383211359134673972998953413685257218126191712261169392922969939811611346
|
||||||
|
4691635924913113169446735419979373331461969496153811615499113111566233695921111412278312151199265118
|
||||||
|
1911952979162847617491231718412915381719216493885181961982169437835621919225167181352132466947212251
|
||||||
|
3993213131949137771191157349287169243158355117936813278131499142244112196294691992881118963142812297
|
||||||
|
7931579884449265469944911352845942797137928351452778381792832311258391913999145929797919628525791211
|
||||||
|
4289614841271194227719181197121971214316222958475411329519817163112813519758857175113191951611126896
|
||||||
|
4235131256268377917746199186571115782411268288989513953132994869696761126534881868419335988994944591
|
||||||
|
7265449192232826611517628179189169912829574829682498614999931937952613247431884311961721991998141236
|
||||||
|
1919719613934615393146891967337914891846914138977164184312239229494714912151376189817862779992633893
|
||||||
|
1218485334111292199531181164646847166447541121113192158529328692291391391789562814919816828911988975
|
||||||
|
2527298831123449891371213818329367387824244141614273298321915195591237972862121745324935118531973233
|
||||||
|
1194948997852981914333518118114166124898319959113816255947387387992617611194644711119171466672133748
|
||||||
|
3217752918581197915172732889491321622883486587239111498982651437898374298614278393773899671793581123
|
||||||
|
1254211818114228385792226321918423856871251825121397819121927898316155628319321519712525422856961615
|
||||||
|
2625471627416119641844871538338161612118681914831491211115378228922134943591142869796878464129225593
|
||||||
|
1821712411947735737699227942163662161571111241811119112377385524586972739197313531581118112936881194
|
||||||
|
9991757561242423292598362221193967375793829756272522298512418764214212271161145253121199611299621268
|
||||||
|
9719395999111919621971615756117162111359218381455215863964677995737381239411429213638639832518543717
|
||||||
|
8198198191714482761927275271131811643184668612186526248299266119391191195344428185161412841758671931
|
||||||
|
2273723799191412198351188375259187551889839175329371179244181895377958133753211314825974132663991739
|
||||||
|
6814211984227791229348648141939726582529931916859326942822245897694924148831411911131518235628916922
|
||||||
|
3417895692282481371971281463362226182417895851264753379951497833542139615565212913777416227691431119
|
||||||
|
6455174227779716346111961999416845124124237136868223311135337294812339861886117319291911231981548199
|
||||||
|
4319687952311517111727411419921987289728328129165897199362729193761119614468822641935121541215172316
|
||||||
|
9551464398816197815267855219973799311391725514624214219835111129211214211891513344793234792423179195
|
||||||
|
1579289734282814931227314738393182655529249281999363195922116129121618525571992211889793134871992185
|
||||||
|
1957917583169672131992374177294573739792398249364289413551632251165561142155162389611358942142147239
|
||||||
|
8115436171215339346819152438599865414292116624438272963988492399783991451437571299165292151891143191
|
||||||
|
6918135343632841518635115413781881515224447253291523618236138487335782512861737648826317711218117228
|
||||||
|
1131933281358351575735614123421811519822378955438164329957714143292461113488314274536977399292581712
|
||||||
|
2152418317916392153511213751949513942548165227848181872275332182942881922617789522172817193129374222
|
||||||
|
7917937117521911746122328994115229818324751148422914281582129582514727981852322315312219199249784928
|
||||||
|
4199586496373561382244212119621932812736195174962234296424398681753917513498173991483231496113419143
|
||||||
|
3223313369368256742177628183985197975464168381627127971911693986177414217145124152992879918823111898
|
||||||
|
3161791917621473317992611126721158233273596192219315391577844241293411128119923941247927697113311161
|
||||||
|
1518522144186291199161971141117291897196255188322821721273211448871486653875346117613418698536881461
|
||||||
|
7312568733228619891623791448221532356992822412679217122466489191389673319217119351887273129141768488
|
||||||
|
3132954394433419221274357395492965169625645963811284595429172694771119215169577629471419777858371861
|
||||||
|
4525752448161352959212951272784267232911492669259584781713181277313928856962642975558922213992812812
|
||||||
|
4411699228919883181412127169459462174861199972126617141785113487249317151828319173681165212611474291
|
||||||
|
2144673427134379179956991554891313913124532943996874192586178544648139177812779281188873892826833721
|
||||||
|
1717118979766813975495913912261492363828622974373133982175915929414117781145155122952115711171593289
|
||||||
|
5741122121316841788399928794147349164363323538131525286519747989212822156211293712184883628444991196
|
||||||
|
5161889958134429989784251461713348212412718118141289328635173938489951145212916978917351396952846819
|
||||||
|
6594122165189896111937927127466455424793563291192531366721812671212272531653375734786611498937367199
|
||||||
|
2968693491684139241588455438122195551132335137397286824749298216112984199467932963832572151212184454
|
||||||
|
8293921312188179793684426113342688491229989511221293834834719589162439113376959732126851252312681119
|
||||||
|
8666192162454911622411753271211192673299764921591313923222911967312311621681819532394519598511112443
|
||||||
|
8779793643282146931734827622826421119219889964192992819693683215911999199511458831337111841421522259
|
||||||
|
1219792916238199521494126131399921334972715212889281599896952289419115991599537188123224451156993341
|
||||||
|
2251821669779281284113472362112618192934737721241539171236371399149449618411148821994262236195852832
|
||||||
|
7196137112977332111799616197356858683419865726696927892783859514913997393244662627188669458295215173
|
||||||
|
5536212691188118713618211237899242871161411959846811961929152213659974537956717248196859922232395713
|
||||||
|
9151767195118113957117158217616711219382811391922293293497319315161881942914435343191467557891244614
|
||||||
|
3414127119951269611479179262125713534288923743824197571822177645933283667267196375142247139192311881
|
||||||
|
8661423691131343581931189157927412282295722941294737782812151975924896133721986591189175866192522966
|
||||||
|
9921212994331474189312737154711532431523331911992884598347426989993412195325179145125914538124847368
|
||||||
|
1639118359917119386811693835392919415594212512243391259321174151872162362886618681799539198929283999
|
||||||
|
9141799415936859175191224531432634646139921391963628791193992211721141899251663116537191693849311591
|
||||||
|
1541781881492185614438119529991438696917337513811563861889968529734919588441715376811969163838211332
|
||||||
|
9198751187133981839218541214295384243427368728593997815182717148692782292139332753818719219719311591
|
||||||
|
7175318434982471167893512469882752619153593992218118111181721987891856458336461339171533457452925119
|
||||||
|
1171499957276561389282363655177681538957231864391484531933324731455472731955237312149114923512361481
|
||||||
|
1628315422465119711892467576216462312891631286421695131549249361116218228318144429461592141122938291
|
||||||
|
5799815937621339981781318639712538178132485317183495697141324744511716692916739592411127412248231724
|
||||||
|
3939863191548532933819814354527167962317696991959198148921636211178872127268316413941131369534426337
|
||||||
|
3259512673234461128517343215132571161869341335221173113793111697368128511972421614423219381725229112
|
||||||
|
5121313815187862142899924619321981716113831391963261113124626387262589199961973176992513134918344991
|
||||||
|
1472456295678166514812314139392621148816972222192461121181995397795159411129196691817112178597974321
|
||||||
|
2696571561334173521699391286118462392235814438517137873361191242371365541856467311315134611459519492
|
||||||
|
1977317492552933151911919385998935122197818127589192887244617929461626952522289647328292723154114456
|
||||||
|
3437289259373386811484153512188116411137821113618191319282152172714897687391121149137126248311313135
|
||||||
|
6794828187612538184422171879226312597948117148714337492123259674949823181138199728757191779616541289
|
||||||
|
9691389126382153541371119592751814333719912451418598114281927149938692919911948737611235984533791389
|
||||||
|
7517194327393193831789919536224437162986114218925912116719229214841394595559914781371933911191674216
|
||||||
|
8676199797277622897519172484951266968413527198436711119433871454129115339532217199911174984188311532
|
||||||
|
8124243751295749113419291185127217294146194815916155295313333231281622793177415132442917171643496523
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
from math import prod
|
||||||
|
with open("input") as f:
|
||||||
|
data = f.read().strip()
|
||||||
|
|
||||||
|
trt = {x: list(f'{int(x, base=16):04b}') for x in '0123456789ABCDEF'}
|
||||||
|
|
||||||
|
def take(n, rest, tail, tr):
|
||||||
|
if not tr:
|
||||||
|
l = len(rest)
|
||||||
|
return list(rest)+list(tail[:n-l]), [], tail[n-l:]
|
||||||
|
head = []
|
||||||
|
while n>len(rest) and tail:
|
||||||
|
head += rest
|
||||||
|
n -= len(rest)
|
||||||
|
a, *tail = tail
|
||||||
|
rest = trt[a]
|
||||||
|
head += rest[:n]
|
||||||
|
rest = rest[n:]
|
||||||
|
return head, rest, tail
|
||||||
|
|
||||||
|
def make_val(r, t, tr):
|
||||||
|
val = []
|
||||||
|
h, r, t = take(5, r, t, tr)
|
||||||
|
while h[0]!='0':
|
||||||
|
val.extend(h[1:])
|
||||||
|
h, r, t = take(5, r, t, tr)
|
||||||
|
val.extend(h[1:])
|
||||||
|
val = int(''.join(val), base=2)
|
||||||
|
return val, r, t
|
||||||
|
|
||||||
|
def make_by_len(r, t, tr):
|
||||||
|
res = []
|
||||||
|
while t:
|
||||||
|
pak, r, t = make_pak(r, t, tr)
|
||||||
|
res.append(pak)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def make_by_count(l, r, t, tr):
|
||||||
|
res = []
|
||||||
|
for _ in range(l):
|
||||||
|
pak, r, t = make_pak(r, t, tr)
|
||||||
|
res.append(pak)
|
||||||
|
return res, r, t
|
||||||
|
|
||||||
|
def make_pak(r, t, tr):
|
||||||
|
h, r, t = take(3, r, t, tr)
|
||||||
|
ver = ''.join(h)
|
||||||
|
h, r, t = take(3, r, t, tr)
|
||||||
|
typ = ''.join(h)
|
||||||
|
if typ=='100':
|
||||||
|
val, r, t = make_val(r, t, tr)
|
||||||
|
return (ver, typ, val), r, t
|
||||||
|
else:
|
||||||
|
(ltid,), r, t = take(1, r, t, tr)
|
||||||
|
if ltid=='0':
|
||||||
|
l, r, t = take(15, r, t, tr)
|
||||||
|
l = int(''.join(l), base=2)
|
||||||
|
h, r, t = take(l, r, t, tr)
|
||||||
|
return (ver, typ, make_by_len([], h, tr=False)), r, t
|
||||||
|
else:
|
||||||
|
l, r, t = take(11, r, t, tr)
|
||||||
|
l = int(''.join(l), base=2)
|
||||||
|
paks, r, t = make_by_count(l, r, t, tr)
|
||||||
|
return (ver, typ, paks), r, t
|
||||||
|
|
||||||
|
def sum_ver(pak):
|
||||||
|
ver, typ, val = pak
|
||||||
|
if typ=='100':
|
||||||
|
return int(ver, base=2)
|
||||||
|
else:
|
||||||
|
return int(ver, base=2)+sum(sum_ver(pak) for pak in val)
|
||||||
|
|
||||||
|
def test_a():
|
||||||
|
paks, _ ,_ = make_by_count(1, [], list('D2FE28'), True)
|
||||||
|
assert paks[0][2] == 2021
|
||||||
|
def test_b():
|
||||||
|
paks, _ ,_ = make_by_count(1, [], list('38006F45291200'), True)
|
||||||
|
p1, p2 = paks[0][2]
|
||||||
|
assert p1[2]==10 and p2[2]==20
|
||||||
|
def test_c():
|
||||||
|
paks, _ ,_ = make_by_count(1, [], list('EE00D40C823060'), True)
|
||||||
|
p1, p2, p3 = paks[0][2]
|
||||||
|
assert p1[2]==1 and p2[2]==2 and p3[2]==3
|
||||||
|
|
||||||
|
def test_1():
|
||||||
|
paks, _ ,_ = make_by_count(1, [], list('8A004A801A8002F478'), True)
|
||||||
|
assert sum_ver(paks[0])==16
|
||||||
|
def test_2():
|
||||||
|
paks, _ ,_ = make_by_count(1, [], list('620080001611562C8802118E34'), True)
|
||||||
|
sum_ver(paks[0])==12
|
||||||
|
def test_3():
|
||||||
|
paks, _ ,_ = make_by_count(1, [], list('C0015000016115A2E0802F182340'), True)
|
||||||
|
sum_ver(paks[0])==23
|
||||||
|
def test_4():
|
||||||
|
paks, _ ,_ = make_by_count(1, [], list('A0016C880162017C3686B18A3D4780'), True)
|
||||||
|
sum_ver(paks[0])==31
|
||||||
|
|
||||||
|
def test_bug1():
|
||||||
|
_, r, t = take(22, [], list('C0015000016115A2E0802F182340'), True)
|
||||||
|
_, r, t = take(84, r, t, True)
|
||||||
|
assert len(r)==2 and len(t)==1
|
||||||
|
|
||||||
|
def calculate(pak):
|
||||||
|
ver, typ, val = pak
|
||||||
|
typ = int(typ, base=2)
|
||||||
|
if typ==0:
|
||||||
|
return sum(calculate(pak) for pak in val)
|
||||||
|
elif typ==1:
|
||||||
|
return prod(calculate(pak) for pak in val)
|
||||||
|
elif typ==2:
|
||||||
|
return min(calculate(pak) for pak in val)
|
||||||
|
elif typ==3:
|
||||||
|
return max(calculate(pak) for pak in val)
|
||||||
|
elif typ==4:
|
||||||
|
return val
|
||||||
|
elif typ==5:
|
||||||
|
p1, p2 = val
|
||||||
|
return 1 if calculate(p1)>calculate(p2) else 0
|
||||||
|
elif typ==6:
|
||||||
|
p1, p2 = val
|
||||||
|
return 1 if calculate(p1)<calculate(p2) else 0
|
||||||
|
elif typ==7:
|
||||||
|
p1, p2 = val
|
||||||
|
return 1 if calculate(p1)==calculate(p2) else 0
|
||||||
|
else:
|
||||||
|
raise ValueError('Incorrect packet type')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
paks, _ ,_ = make_by_count(1, [], list(data), True)
|
||||||
|
print(sum_ver(paks[0]))
|
||||||
|
print(calculate(paks[0]))
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
4057231006FF2D2E1AD8025275E4EB45A9ED518E5F1AB4363C60084953FB09E008725772E8ECAC312F0C18025400D34F732333DCC8FCEDF7CFE504802B4B00426E1A129B86846441840193007E3041483E4008541F8490D4C01A89B0DE17280472FE937C8E6ECD2F0D63B0379AC72FF8CBC9CC01F4CCBE49777098D4169DE4BF2869DE6DACC015F005C401989D0423F0002111723AC289DED3E64401004B084F074BBECE829803D3A0D3AD51BD001D586B2BEAFFE0F1CC80267F005E54D254C272950F00119264DA7E9A3E9FE6BB2C564F5376A49625534C01B0004222B41D8A80008446A8990880010A83518A12B01A48C0639A0178060059801C404F990128AE007801002803AB1801A0030A280184026AA8014C01C9B005CE0011AB00304800694BE2612E00A45C97CC3C7C4020A600433253F696A7E74B54DE46F395EC5E2009C9FF91689D6F3005AC0119AF4698E4E2713B2609C7E92F57D2CB1CE0600063925CFE736DE04625CC6A2B71050055793B4679F08CA725CDCA1F4792CCB566494D8F4C69808010494499E469C289BA7B9E2720152EC0130004320FC1D8420008647E8230726FDFED6E6A401564EBA6002FD3417350D7C28400C8C8600A5003EB22413BED673AB8EC95ED0CE5D480285C00372755E11CCFB164920070B40118DB1AE5901C0199DCD8D616CFA89009BF600880021304E0EC52100623A4648AB33EB51BCC017C0040E490A490A532F86016CA064E2B4939CEABC99F9009632FDE3AE00660200D4398CD120401F8C70DE2DB004A9296C662750663EC89C1006AF34B9A00BCFDBB4BBFCB5FBFF98980273B5BD37FCC4DF00354100762EC258C6000854158750A2072001F9338AC05A1E800535230DDE318597E61567D88C013A00C2A63D5843D80A958FBBBF5F46F2947F952D7003E5E1AC4A854400404A069802B25618E008667B7BAFEF24A9DD024F72DBAAFCB312002A9336C20CE84
|
||||||
Reference in New Issue
Block a user