Всем доброго дня!
Решаю задачу из двух частей, пользовать любыми доп библиотеками запрещено:
Первая часть РЕШЕНА:
Сделать алгоритм, который делит список из чисел на 4 части. В каждом таком куске:
- воспринимает число с индексом 0 как инструкцию (1 - сложение, 2 - умножение, 99 - остановка формулы),
- числа с индексом 1 и 2 как переменные, которые нужно сложить или перемножить,
- число 4 как позицию, на которую нужно поставить результат мат вычислений,
- возвращает число, которое стоит на 0 индексе в списке после прогона формулы.
inputlist = [
1, 15, 30, 3, 1, 1, 2, 3, 1, 3, 4, 3, 1, 5, 0, 3, 2, 6, 1, 19, 2, 19, 9, 23, 1, 23, 5, 27, 2, 6, 27, 31, 1,
31, 5, 35, 1, 35, 5, 39, 2, 39, 6, 43, 2, 43, 10, 47, 1, 47, 6, 51, 1, 51, 6, 55, 2, 55, 6, 59, 1, 10, 59,
63, 1, 5, 63, 67, 2, 10, 67, 71, 1, 6, 71, 75, 1, 5, 75, 79, 1, 10, 79, 83, 2, 83, 10, 87, 1, 87, 9, 91, 1,
91, 10, 95, 2, 6, 95, 99, 1, 5, 99, 103, 1, 103, 13, 107, 1, 107, 10, 111, 2, 9, 111, 115, 1, 115, 6, 119,
2, 13, 119, 123, 1, 123, 6, 127, 1, 5, 127, 131, 2, 6, 131, 135, 2, 6, 135, 139, 1, 139, 5, 143, 1, 143,
10, 147, 1, 147, 2, 151, 1, 151, 13, 0, 99, 2, 0, 14, 0
]
def program_solver(inputlist: list):
"""
Solves mathematical issue.
:param inputlist:list, a list of integers
:return: int, the first number of the modified list
"""
chunk_of_numbers = []
source_code = inputlist[0] # нужен для того, чтобы вернуть список в исходный вид (понадобится в ч.2)
for a in inputlist:
chunk_of_numbers.append(int(a))
if len(chunk_of_numbers) == 4:
if chunk_of_numbers[0] == 1:
sum_of_the_chunk = inputlist[chunk_of_numbers[1]] + inputlist[chunk_of_numbers[2]]
inputlist[chunk_of_numbers[3]] = sum_of_the_chunk
chunk_of_numbers.clear()
elif chunk_of_numbers[0] == 2:
mult_of_the_chunk = inputlist[chunk_of_numbers[1]] * inputlist[chunk_of_numbers[2]]
inputlist[chunk_of_numbers[3]] = mult_of_the_chunk
chunk_of_numbers.clear()
elif chunk_of_numbers[0] == 99:
result = inputlist[0]
inputlist[0] = source_code
return result
А вот с частью 2 возникла проблем. По заданию нужно предположить, что числа в списке с индексом 1 и 2 - неизвестные переменные. При этом известен результат формулы из ч. 1: desire_result = 7156875 и тот факт, что переменные (назовем их 'x' и 'y') могут быть любыми числами в диапазоне от 1 до 99, включительно.
Итого собрал алгоритм перебора всех возможных переменных с применением формулы из ч.1, но алгоритм не работает, выдает ошибку на втором прогоне цикла.
desire_result = 7156875
number_range = range(1, 100)
n = 0
program_check = 0
for x in number_range:
inputlist[1] = x
for y in number_range:
inputlist[2] = y
print(inputlist)
program_check = program_solver(inputlist)
print(program_check)
if program_solver(inputlist) == desire_result:
print(f"x = {x}, y = {y}")
else:
n += 1
print(inputlist)
print(n)
print(inputlist)
Вот что получается:
[1, 1, 1, 3, 1, 1, 2, 3, 1, 3, 4, 3, 1, 5, 0, 3, 2, 6, 1, 19, 2, 19, 9, 23, 1, 23, 5, 27, 2, 6, 27, 31, 1, 31, 5, 35, 1, 35, 5, 39, 2, 39, 6, 43, 2, 43, 10, 47, 1, 47, 6, 51, 1, 51, 6, 55, 2, 55, 6, 59, 1, 10, 59, 63, 1, 5, 63, 67, 2, 10, 67, 71, 1, 6, 71, 75, 1, 5, 75, 79, 1, 10, 79, 83, 2, 83, 10, 87, 1, 87, 9, 91, 1, 91, 10, 95, 2, 6, 95, 99, 1, 5, 99, 103, 1, 103, 13, 107, 1, 107, 10, 111, 2, 9, 111, 115, 1, 115, 6, 119, 2, 13, 119, 123, 1, 123, 6, 127, 1, 5, 127, 131, 2, 6, 131, 135, 2, 6, 135, 139, 1, 139, 5, 143, 1, 143, 10, 147, 1, 147, 2, 151, 1, 151, 13, 0, 99, 2, 0, 14, 0]
521343
[1, 1, 2, 2, 1, 1, 2, 3, 1, 3, 4, 3, 1, 5, 0, 3, 2, 6, 1, 2, 2, 19, 9, 6, 1, 23, 5, 7, 2, 6, 27, 14, 1, 31, 5, 15, 1, 35, 5, 16, 2, 39, 6, 32, 2, 43, 10, 128, 1, 47, 6, 130, 1, 51, 6, 132, 2, 55, 6, 264, 1, 10, 59, 268, 1, 5, 63, 269, 2, 10, 67, 1076, 1, 6, 71, 1078, 1, 5, 75, 1079, 1, 10, 79, 1083, 2, 83, 10, 4332, 1, 87, 9, 4335, 1, 91, 10, 4339, 2, 6, 95, 8678, 1, 5, 99, 8679, 1, 103, 13, 8684, 1, 107, 10, 8688, 2, 9, 111, 26064, 1, 115, 6, 26066, 2, 13, 119, 130330, 1, 123, 6, 130332, 1, 5, 127, 130333, 2, 6, 131, 260666, 2, 6, 135, 521332, 1, 139, 5, 521333, 1, 143, 10, 521337, 1, 147, 2, 521338, 1, 151, 13, 0, 99, 2, 0, 14, 0]
Traceback (most recent call last):
File "<input>", line 48, in <module>
File "<input>", line 20, in program_solver
IndexError: list assignment index out of range
Спасибо!