вводится последовательность целых чисел в первой строке
вводится целое число во второй строке
путем расстановки знаков + и - получить из последовательности чисел первой строки число со второй строки
пример:
вводятся
123456789
200
и как итог получаем все возможные варианты получения числа со второй строки при помощи чисел с первой и знаков “+” и “-”:
123-4+5-6-7+89
123+4+5+67-8+9
1+234-5-6-7-8-9
посоветовали использовать itertools.product для этого, но так как использовать сторонние модули не могу, пришлось вынести ее в отдельную функцию
# -*- coding: utf-8 -*-
def product(*args, repeat = 1):
pools = [tuple(pool) for pool in args] * repeat
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod) # itertools.product(*iterables, repeat=1)
print(result)
return result
Input = input()
number = input()
for combination in product([['+','-','']]*8):
combination = str(combination)
expression = combination.join(Input)
answer = eval(expression)
if answer == number:
print(expression)
break
else:
print('NONE')
Помогите подкорректировать код, чтобы он работал.Заранее спасибо
Ответ
Блок в else выполняется, если из цикла не сделан выход через break, то есть ваш else выполняется всегда.
Как передать параметры в функцию из списка, как перемешать цифры со знаками:
for combination in product(*([['+','-','']] * (len(digits)-1))):
d = [None]*(len(digits)+len(combination))
d[0::2] = digits
d[1::2] = combination
expression = ''.join(d)
answer = eval(expression)
if answer == number:
print(expression)
found = True
if not found: print("NONE")
Комментариев нет:
Отправить комментарий