added rest of the code
This commit is contained in:
3
24/1
Normal file
3
24/1
Normal file
@ -0,0 +1,3 @@
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0]
|
||||
[1, 2, 3, 7, 11, 13, 17, 19, 23, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
|
||||
0000000006 405925792351
|
||||
29
24/input
Normal file
29
24/input
Normal file
@ -0,0 +1,29 @@
|
||||
1
|
||||
2
|
||||
3
|
||||
7
|
||||
11
|
||||
13
|
||||
17
|
||||
19
|
||||
23
|
||||
31
|
||||
37
|
||||
41
|
||||
43
|
||||
47
|
||||
53
|
||||
59
|
||||
61
|
||||
67
|
||||
71
|
||||
73
|
||||
79
|
||||
83
|
||||
89
|
||||
97
|
||||
101
|
||||
103
|
||||
107
|
||||
109
|
||||
113
|
||||
78
24/output
Normal file
78
24/output
Normal file
@ -0,0 +1,78 @@
|
||||
0000000006 405925792351
|
||||
0000000006 398297798863
|
||||
0000000006 397378915159
|
||||
0000000006 393825160111
|
||||
0000000006 387870017503
|
||||
0000000006 386081047967
|
||||
0000000006 385169090599
|
||||
0000000006 381724527871
|
||||
0000000006 377138228059
|
||||
0000000006 373687214839
|
||||
0000000006 373135490311
|
||||
0000000006 372367655983
|
||||
0000000006 368186196751
|
||||
0000000006 365035378879
|
||||
0000000006 364518128159
|
||||
0000000006 358405774439
|
||||
0000000006 356454558899
|
||||
0000000006 354361540807
|
||||
0000000006 352397865679
|
||||
0000000006 349530122299
|
||||
0000000006 349149543271
|
||||
0000000006 347210246311
|
||||
0000000006 336766524151
|
||||
0000000006 332275056199
|
||||
0000000006 329266949191
|
||||
0000000006 325569484327
|
||||
0000000006 321046386319
|
||||
0000000006 317773110799
|
||||
0000000006 317427109771
|
||||
0000000006 313613323159
|
||||
0000000006 313099260847
|
||||
0000000006 302233500799
|
||||
0000000006 300915741871
|
||||
0000000006 300588095659
|
||||
0000000006 300521671999
|
||||
0000000006 297576884767
|
||||
0000000006 286658711767
|
||||
0000000006 269014944199
|
||||
0000000006 261581881039
|
||||
0000000006 261028355059
|
||||
0000000006 260720614927
|
||||
0000000006 258165834991
|
||||
0000000006 255593848319
|
||||
0000000006 243457858951
|
||||
0000000006 221020192639
|
||||
0000000006 218126942599
|
||||
0000000006 217678083247
|
||||
0000000006 215545073551
|
||||
0000000006 215233692559
|
||||
0000000006 213124635247
|
||||
0000000006 211189107967
|
||||
0000000006 209242415383
|
||||
0000000006 208759687519
|
||||
0000000006 205122231079
|
||||
0000000006 186804366079
|
||||
0000000006 184973885407
|
||||
0000000006 184711779647
|
||||
0000000006 179565145831
|
||||
0000000006 172879027843
|
||||
0000000006 172523279179
|
||||
0000000006 171196896679
|
||||
0000000006 170450466391
|
||||
0000000006 170264874739
|
||||
0000000006 168926129839
|
||||
0000000006 165189285379
|
||||
0000000006 163845007999
|
||||
0000000006 137053044739
|
||||
0000000006 135719504167
|
||||
0000000006 118782255031
|
||||
0000000006 118264356199
|
||||
0000000006 118135586371
|
||||
0000000006 116986114663
|
||||
0000000006 116716224559
|
||||
0000000006 115672432711
|
||||
0000000006 78362605279
|
||||
0000000006 77336804839
|
||||
0000000006 35307084999
|
||||
0000000006 11846773891
|
||||
14
24/output.2
Normal file
14
24/output.2
Normal file
@ -0,0 +1,14 @@
|
||||
0000000004 89809099
|
||||
0000000004 88730071
|
||||
0000000004 88633459
|
||||
0000000004 87936559
|
||||
0000000004 87457819
|
||||
0000000004 86600827
|
||||
0000000004 85991299
|
||||
0000000004 85814347
|
||||
0000000004 85616371
|
||||
0000000004 85291519
|
||||
0000000004 84827179
|
||||
0000000004 83439991
|
||||
0000000004 83349139
|
||||
0000000004 80393059
|
||||
90
24/part1.py
Normal file
90
24/part1.py
Normal file
@ -0,0 +1,90 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
mQ = None
|
||||
mC = None
|
||||
|
||||
def read_file(filename):
|
||||
file = open(filename, 'r')
|
||||
while True:
|
||||
line = file.readline()
|
||||
if not line:
|
||||
break
|
||||
yield line
|
||||
|
||||
|
||||
def calculate_qe(packages, used):
|
||||
|
||||
if sum(used) == 0:
|
||||
return None
|
||||
|
||||
result = 1
|
||||
for i in range(len(packages)):
|
||||
if used[i]:
|
||||
result *= packages[i]
|
||||
return result
|
||||
|
||||
|
||||
def calculate_weight(packages, used):
|
||||
if sum(used) == 0:
|
||||
return None
|
||||
|
||||
result = 0
|
||||
for i in range(len(packages)):
|
||||
result += packages[i]*used[i]
|
||||
return result
|
||||
|
||||
|
||||
def find_group_packags(packagesList, packagesUsed, maxPackages, packagesWeight, pos):
|
||||
|
||||
global mC
|
||||
global mQ
|
||||
|
||||
if sum(packagesUsed) > maxPackages:
|
||||
return
|
||||
|
||||
weight = calculate_weight(packagesList, packagesUsed)
|
||||
|
||||
if weight > packagesWeight:
|
||||
return
|
||||
|
||||
if mC is not None and sum(packagesUsed) > mC:
|
||||
return
|
||||
if mQ is not None and calculate_qe(packagesList, packagesUsed) > mQ:
|
||||
return
|
||||
|
||||
if pos >= len(packagesList):
|
||||
if weight == packagesWeight:
|
||||
qe = calculate_qe(packagesList, packagesUsed)
|
||||
yield (sum(packagesUsed), qe)
|
||||
return
|
||||
|
||||
for i in range(2):
|
||||
packagesUsed[pos] = i
|
||||
for (c, q) in find_group_packags(packagesList, packagesUsed, maxPackages, packagesWeight, pos+1):
|
||||
if mC is None:
|
||||
mC = c
|
||||
if c is not None:
|
||||
mC = min (c, mC)
|
||||
if mQ is None:
|
||||
mQ = q
|
||||
if q is not None:
|
||||
mQ = min(q, mQ)
|
||||
yield (c, q)
|
||||
packagesUsed[pos] = 0
|
||||
|
||||
def main():
|
||||
weights = []
|
||||
packagesUsed = []
|
||||
for line in read_file('input'):
|
||||
weights.append(int(line))
|
||||
packagesUsed.append(0)
|
||||
|
||||
weights_sum = sum(weights)
|
||||
group_weight = int(weights_sum / 3)
|
||||
group_1_max_packages = int(len(weights) / 3)
|
||||
|
||||
for (c, q) in find_group_packags(weights, packagesUsed, group_1_max_packages, group_weight, 0):
|
||||
print "%010d %d" % (c, q)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
90
24/part2.py
Normal file
90
24/part2.py
Normal file
@ -0,0 +1,90 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
mQ = None
|
||||
mC = None
|
||||
|
||||
def read_file(filename):
|
||||
file = open(filename, 'r')
|
||||
while True:
|
||||
line = file.readline()
|
||||
if not line:
|
||||
break
|
||||
yield line
|
||||
|
||||
|
||||
def calculate_qe(packages, used):
|
||||
|
||||
if sum(used) == 0:
|
||||
return None
|
||||
|
||||
result = 1
|
||||
for i in range(len(packages)):
|
||||
if used[i]:
|
||||
result *= packages[i]
|
||||
return result
|
||||
|
||||
|
||||
def calculate_weight(packages, used):
|
||||
if sum(used) == 0:
|
||||
return None
|
||||
|
||||
result = 0
|
||||
for i in range(len(packages)):
|
||||
result += packages[i]*used[i]
|
||||
return result
|
||||
|
||||
|
||||
def find_group_packags(packagesList, packagesUsed, maxPackages, packagesWeight, pos):
|
||||
|
||||
global mC
|
||||
global mQ
|
||||
|
||||
if sum(packagesUsed) > maxPackages:
|
||||
return
|
||||
|
||||
weight = calculate_weight(packagesList, packagesUsed)
|
||||
|
||||
if weight > packagesWeight:
|
||||
return
|
||||
|
||||
if mC is not None and sum(packagesUsed) > mC:
|
||||
return
|
||||
if mQ is not None and calculate_qe(packagesList, packagesUsed) > mQ:
|
||||
return
|
||||
|
||||
if pos >= len(packagesList):
|
||||
if weight == packagesWeight:
|
||||
qe = calculate_qe(packagesList, packagesUsed)
|
||||
yield (sum(packagesUsed), qe)
|
||||
return
|
||||
|
||||
for i in range(2):
|
||||
packagesUsed[pos] = i
|
||||
for (c, q) in find_group_packags(packagesList, packagesUsed, maxPackages, packagesWeight, pos+1):
|
||||
if mC is None:
|
||||
mC = c
|
||||
if c is not None:
|
||||
mC = min (c, mC)
|
||||
if mQ is None:
|
||||
mQ = q
|
||||
if q is not None:
|
||||
mQ = min(q, mQ)
|
||||
yield (c, q)
|
||||
packagesUsed[pos] = 0
|
||||
|
||||
def main():
|
||||
weights = []
|
||||
packagesUsed = []
|
||||
for line in read_file('input'):
|
||||
weights.append(int(line))
|
||||
packagesUsed.append(0)
|
||||
|
||||
weights_sum = sum(weights)
|
||||
group_weight = int(weights_sum / 4)
|
||||
group_1_max_packages = int(len(weights) / 4)
|
||||
|
||||
for (c, q) in find_group_packags(weights, packagesUsed, group_1_max_packages, group_weight, 0):
|
||||
print "%010d %d" % (c, q)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user