This commit is contained in:
Alexey Barabanov
2025-12-05 20:45:17 +03:00
parent 369b065e85
commit 48a275021c
6 changed files with 2740 additions and 1211 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,13 @@
range_list: list[list:[str]] = [['1','5'],['7','8']]
range_list: list[list[str]] = [['1','5'],['7','8']]
items_list: list[int] = [1,2,3,6,16]
valid_id: list[int] = []
final_range: list[list:[int]] = [[0,0]]
final_range: list[list[int]] = [[0,0]]
range_new_dict: dict[int,int] = {}
result: int = 0
input = """3-6
1-10
2-2
5-5
10-14
16-20
@@ -31,10 +35,13 @@ input = """3-6
# 228538610394597
# 557824039518207"""
# with open("input.txt", "r") as file:
# input = file.read()
with open("input.txt", "r") as file:
input = file.read()
range_list = list(map(list, [row.split("-") for row in input.split("\n\n")[0].strip().split("\n")]))
items_list = list(map(int, input.split("\n\n")[1].strip().split("\n")))
print("="*100)
print("range_list",len(range_list))
print("="*100)
# получаем все возможные не "протухшие" id продуктов
# for index,i in enumerate(items_list):
# for element in range_list:
@@ -45,29 +52,51 @@ for item in range_list:
low_list.append(int(item[0]))
high_list.append(int(item[1]))
range_new_dict: dict[int,int] = {}
print("="*100)
print("high_list",len(high_list))
for i in high_list:
print(i)
print("="*100)
for low,high in zip(low_list, high_list):
range_new_dict[int(high)] = int(low)
print("="*100)
print("range_new_dict",len(range_new_dict))
for key, value in range_new_dict.items():
print(f"{key}: {value}")
print("="*100)
high_list = sorted(high_list, reverse=True)
final_range = [[0,high_list[0]]]
for d in high_list:
final_range = [[range_new_dict[high_list[0]],high_list[0]]]
print("BEGIN")
# print(f"{str(final_range[-1])}")
if d >= final_range[-1][0] and d != range_new_dict[d]:
for d in high_list[1:]:
# print("Обрабатываем пару\n",range_new_dict[d],d)
if final_range[-1][0] <= d <= final_range[-1][1] and range_new_dict[d] <= final_range[-1][0]:
# print(f"УСЛОВИЕ\n{str(final_range[-1][0])} <= {d} <= {str(final_range[-1][1])} and {str(range_new_dict[d])} <= {str(final_range[-1][0])}")
final_range[-1][0]= range_new_dict[d]
final_range[-1][1]= final_range[-1][1]
print("занесли изменения")
# elif d == range_new_dict[d] and final_range[-1][1] < d:
if d > final_range[-1][0] and d == range_new_dict[d]:
print("pass!!!")
# print(f"Изменили последний в списке\n{str(final_range[-1])}")
elif final_range[-1][0] > d < final_range[-1][1] and range_new_dict[d] < final_range[-1][0]:
# print(f"УСЛОВИЕ\n{str(final_range[-1][0])} > {d} < {str(final_range[-1][1])} and {str(range_new_dict[d])} < {str(final_range[-1][0])}")
final_range.append([range_new_dict[d],d])
# print(f"Добавили новы элемент в список\n{str(final_range[-1])}")
elif final_range[-1][0] < d < final_range[-1][1] and range_new_dict[d] > final_range[-1][0]:
# print(f"УСЛОВИЕ\n{str(final_range[-1][0])} < {d} < {str(final_range[-1][1])} and {str(range_new_dict[d])} > {str(final_range[-1][0])}")
# print(f"Проигнорировали\n{str(final_range[-1])}")
pass
else:
print("bang!")
final_range.append([range_new_dict[d],d])
result: int = 0
for item in final_range:
print(item)
result += item[1] - item[0] + 1
# print(result)
# print(f"УСЛОВИЕ\n{str(final_range[-1][0])} ? {d} ? {str(final_range[-1][1])} and {str(range_new_dict[d])} ? {str(final_range[-1][0])}")
# print("НЕ поймади!!!!!!!!!!!!\n",range_new_dict[d],d,"\n",str(final_range[-1]))
pass
# print("="*100)
# print(final_range)
# print("="*100)
for item in final_range:
# print(item[1] - item[0] + 1)
result += item[1] - item[0] + 1
print("final_range",len(final_range))
print("range_new_dict",len(range_new_dict))
print("result",result)
# print("Всего найденно",len(set(valid_id)))

1139
2025/day05/resalt.txt Normal file

File diff suppressed because it is too large Load Diff

160
2025/day05/test.txt Normal file
View File

@@ -0,0 +1,160 @@
128296595656740: 128090435565893
520680231223961: 516646968075993
121469878351411: 121303722516259
187509500763042: 184451521773344
322319001484105: 322319001484105
280684888221717: 274806869508260
516646968075991: 514438413362009
138727668698066: 132349591532179
490068787056426: 486243537942013
56062629697162: 54623576419307
14102794073969: 11353860494207
207446516452508: 205001469839256
126230955401172: 125991199148198
148491040905647: 147729485142408
451484809123146: 451484809123146
359463520087035: 359053130524152
358352062518361: 357786441350792
142410145788221: 141922154874971
500162969228335: 498512861436809
143336045340736: 142712330197883
309614305380432: 305553988553089
18518550743963: 11353860494207
359241738138390: 359053130524152
360733119271015: 360209761509539
268765589443650: 268765589443650
541250620812775: 540370845452425
196962670293129: 192064547028079
144971713737752: 144445903486214
502183124179640: 500840968185735
352764008778800: 352205065835097
144209938381891: 143845537211324
246101052874062: 243911089658423
347024089877584: 345510954148422
250949254556108: 243911089658423
8620306610733: 1044968356565
538620689319205: 538034934899821
509422688282060: 503491050554325
205001469839256: 205001469839256
44713957162007: 42418322605745
257951604706781: 255291499440206
357578919024061: 356686924268999
373680822776436: 373680822776436
407995201288641: 405270266934611
58089521120112: 56469897323097
154536030528942: 151507101180182
540919835538807: 540370845452425
351499582176480: 349723679945308
84714690217557: 83435122631954
8620306610734: 8620306610734
361074865419872: 360733119271015
470067029665991: 463715551522546
463715551522545: 463715551522545
537199372458960: 536728486691148
76867276500306: 72964785871349
123858971349985: 122979858606629
537728593486491: 537199372458960
143138890837459: 142712330197883
348334471649737: 346514235578006
234964384798218: 233205523155060
190562887032622: 182346755020066
355042522902373: 354313332647316
420964506240332: 414428695514970
172774975945841: 170964436461788
268765589443649: 264752773214328
399919737975832: 394765607926923
440214621701724: 433084352729848
220116680452766: 215336323231110
535946752554745: 535334756689170
354313332647316: 353383191338668
121021248428266: 120716599623935
166469766895641: 162263036034040
358417507911555: 357786441350792
481582981972375: 478274169461818
175083680385657: 173402039804471
57019622066918: 55610960686943
53001016873213: 51565461964452
345043443452428: 343233055201654
105988002849265: 104529470195937
318782874805890: 315810311262719
328377829612349: 322319001484106
341490504875998: 332453909506765
353193079069012: 352515853732737
357014127583128: 356686924268999
122075834548422: 121815005485034
366040551504191: 363749098254248
494429027363041: 492956167989992
59159269639217: 57741057488985
356193014903068: 355562206590921
287334582134420: 283196666663541
289837321464177: 285207834707345
230286959305425: 222723629589749
357786441350792: 357014127583128
215336323231109: 215336323231109
53847767132647: 52414455015199
114550071877472: 114550071877472
89073721556903: 84714690217559
456761387005216: 454374340539320
345872527145502: 344403103725284
499138127579527: 497228218136475
296310126395247: 294257959023573
33116976702234: 33116976702234
124309257454445: 123515340573940
380277740620249: 373680822776436
478274169461817: 473572326249410
178276991688526: 176630628998032
158271739403219: 154536030528943
55038227688595: 53462051699403
533603905465383: 533449888714546
278420089957536: 271909537551301
127045854916286: 126737606530374
350353518727258: 348719529040708
352981220165049: 352205065835097
486243537942013: 486243537942013
123515340573940: 122813658263364
549728556538034: 544045044703613
179675424057861: 177943715924728
460118746229547: 454374340539320
451484809123145: 442946901104883
498096219419675: 496419306867766
431551616810758: 426473105763803
389256694479560: 384733173418522
528733568551118: 528733568551118
305553988553088: 304378656112241
495661623342158: 494154738613300
147470556387226: 147127768772571
142962560124315: 142410145788221
36362594463344: 33116976702235
149089620983943: 148491040905647
538481920549577: 538034934899821
51978209332872: 50628531324301
25647637586520: 21510975309678
145421164162861: 145197903285334
540125112314245: 539489330207205
238842053697119: 234964384798220
173876683612927: 172104549535423
67361498115628: 67361498115628
427865203454575: 424078106771771
99665822904286: 95134002207351
337339005423803: 335108425238189
358775435159048: 358417507911555
369322820735068: 363749098254248
501064537358521: 499381006144660
349389413930101: 347741108235009
343856975953052: 342193155992385
558418634540905: 555838442293911
540620249680923: 540370845452425
176044947582224: 174705771055447
122505865387822: 121815005485034
109978946486232: 101004158922811
300497055284581: 296310126395249
60069385470894: 58737078212031
149594229576463: 148944195643716
47941161579201: 44713957162008
560773839216269: 554358003043155
118157826889848: 114550071877472
496637580442970: 495276191731937
177389489675613: 175788501632135
420964506240333: 420964506240333
180821249282979: 178784675241648
96308486909196: 90737967071577

190
2025/day05/test2.txt Normal file
View File

@@ -0,0 +1,190 @@
128296595656740
520680231223961
121469878351411
187509500763042
322319001484105
280684888221717
516646968075991
138727668698066
490068787056426
56062629697162
14102794073969
207446516452508
126230955401172
148491040905647
451484809123146
359463520087035
358352062518361
142410145788221
500162969228335
143336045340736
309614305380432
18518550743963
359241738138390
360733119271015
268765589443650
541250620812775
196962670293129
144971713737752
502183124179640
352764008778800
144209938381891
246101052874062
347024089877584
250949254556108
8620306610733
538620689319205
509422688282060
205001469839256
44713957162007
257951604706781
357578919024061
373680822776436
407995201288641
144971713737752
58089521120112
154536030528942
540919835538807
351499582176480
84714690217557
8620306610734
361074865419872
470067029665991
196962670293129
463715551522545
537199372458960
76867276500306
123858971349985
537728593486491
509422688282060
143138890837459
348334471649737
234964384798218
190562887032622
541250620812775
355042522902373
420964506240332
76867276500306
172774975945841
268765589443649
399919737975832
355042522902373
440214621701724
220116680452766
535946752554745
354313332647316
121021248428266
166469766895641
358417507911555
481582981972375
175083680385657
57019622066918
53001016873213
138727668698066
345043443452428
126230955401172
540919835538807
143138890837459
105988002849265
318782874805890
328377829612349
341490504875998
353193079069012
357014127583128
122075834548422
366040551504191
494429027363041
59159269639217
356193014903068
287334582134420
289837321464177
230286959305425
357786441350792
215336323231109
53847767132647
114550071877472
89073721556903
456761387005216
345872527145502
257951604706781
499138127579527
296310126395247
33116976702234
124309257454445
380277740620249
478274169461817
178276991688526
158271739403219
55038227688595
533603905465383
278420089957536
127045854916286
350353518727258
440214621701724
352981220165049
486243537942013
123515340573940
549728556538034
179675424057861
537199372458960
460118746229547
451484809123145
498096219419675
431551616810758
389256694479560
528733568551118
305553988553088
495661623342158
147470556387226
142962560124315
36362594463344
149089620983943
538481920549577
51978209332872
25647637586520
399919737975832
389256694479560
145421164162861
123515340573940
540125112314245
238842053697119
173876683612927
67361498115628
356193014903068
540125112314245
427865203454575
541250620812775
144971713737752
99665822904286
337339005423803
360733119271015
358775435159048
358775435159048
369322820735068
501064537358521
528733568551118
349389413930101
343856975953052
558418634540905
127045854916286
540620249680923
176044947582224
67361498115628
407995201288641
122505865387822
109978946486232
230286959305425
300497055284581
60069385470894
149594229576463
47941161579201
560773839216269
144971713737752
118157826889848
496637580442970
177389489675613
420964506240333
538620689319205
180821249282979
142410145788221
96308486909196

View File

@@ -0,0 +1,13 @@
with open("input.txt", "r") as file:
input = file.read()
range_list = list(map(list, [row.split("-") for row in input.split("\n\n")[0].strip().split("\n")]))
items_list = list(map(int, input.split("\n\n")[1].strip().split("\n")))
for i in range_list:
a = range(int(i[0]),int(i[1]))
a_list = list(a)
print(a)
# a_set = set(a_list)
# for b in a_set:
# print(b)