Пожалуйста. Помогите с задачей.

endermeg

Новичок
Пользователь
Май 2, 2020
4
0
1
Добрый день решаю задачу но решение всё время является частичным.
Вот задача:
С клавиатуры вводится большое целое число a и число n. Можно ли получить n суммой или разностью цифр числа a? Если да, то необходимо найти все варианты.
Решение нужно оформить в виде функции с названием num_combinations, в которую поступают два числа и которая возвращает список строк, которые являются математическими выражениями(смотрите пример).
Цифры должны идти в выражении в том порядке, в котром они шли в исходном числе.
Порядок выражений внутри списка не важен.

Вот одно из моих последних решений:
Python:
def num_combinations(a, b):
    c = 0
    L = []
    for i in range(1 << len(str(a))):
        m = 0
        h = 0
        g = ""
        for elem in str(a):
            if (c >> m) & 1:
                h += int(elem)
                g += "+"
            else:
                h -= int(elem)
                g += "-"
            m += 1
            g += elem
        if h == b:
            if g[0 == "+"]:
                L.append(g[1::])
            else:
                L.append(g)
        c += 1
    return L


Помогите пожалуйста.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот эти строки:
Python:
if g[0 == "+"]:
    L.append(g[1::])
нужно заменить на
Python:
if g[0] == "+":
    L.append(g[1:])
потому что в вашем варианте условие всегда выполняется и знак у первого элемента всегда срезается, а также для среза первого символа строки достаточно написать g[1:] вместо g[1::]
 

endermeg

Новичок
Пользователь
Май 2, 2020
4
0
1
Большое спасибо, но чекер всё равно пишет что решение частично и при каком-то вводе происходит runtime error
 
-1

God

Уже не совсем ламер.
Пользователь
Апр 11, 2020
91
14
8
Вы отсюда? Там чекер хреновый, постоянно выкидывает частичное решение. Можете считать, что задача решена.
 

Форум IT Специалистов