49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
# input = "3285251637222363222472154314252527157326423323532213732223724533233636375713623545544337332247253314"
|
||
# input = """987654321111111
|
||
# 811111111111119
|
||
# 234234234234278
|
||
# 818181911112111"""
|
||
result = 0
|
||
|
||
with open("input.txt", "r") as file:
|
||
input = file.read()
|
||
|
||
|
||
def cruncher(block: str, minimum: int):
|
||
print(minimum,block," len",len(block))
|
||
for i in range(9, 0, -1):
|
||
print("i -", i)
|
||
print("сколько",i,"в блоке",block.count(str(i)))
|
||
if block.count(str(i)) != 0:
|
||
result = block[block.index(str(i))+1:]
|
||
print(result," len ", len(result))
|
||
if len(result)+1 >= minimum and minimum != 1:
|
||
print(result,"первый выход")
|
||
return[i,result]
|
||
elif minimum == 1:
|
||
print(result," последний шанс")
|
||
return [i, i]
|
||
else:
|
||
print(f"остаток с права от {i} слишком мал")
|
||
pass
|
||
else:
|
||
print(f"в блоке нету {i}")
|
||
pass # не нашли это число
|
||
|
||
for block in input.splitlines():
|
||
print(f"block: {block}")
|
||
semiresult = ""
|
||
reminder = block
|
||
while len(semiresult) != 12:
|
||
result_list = cruncher(reminder, 12 - len(semiresult))
|
||
if result_list:
|
||
semiresult += str(result_list[0])
|
||
reminder = result_list[1]
|
||
else:
|
||
print("кранчер не вернул результата")
|
||
break
|
||
print(semiresult,"len",len(semiresult))
|
||
print("="*100)
|
||
print(semiresult,"len",len(semiresult))
|
||
result += int(semiresult)
|
||
print(f"result - {result}") |