Информатика, вопрос задал qweewq258456 , 7 лет назад

Python Помогите решить

Приложения:

Ответы на вопрос

Ответил leoden03
0

Немного костыльное решение.

Его минус в том что оно может находить разность или сумму только двух слагаемых, можно было сделать по человечески, но мне было лень)

Получается я написал функцию, которую из плюсов-минусов получает число, а обратную ей я не знал как написать, потому чтобы в итоге получить эту ерунду я просто перебрал все такие дурацкие числа длинной от 1 до 10, потому скрипт немного долго выполняется, но не критично. )) Больше 10ти скрипт уже может крашнуться, так что последний пример из задачи решить он не в состоянии, но это хоть что-то.

Проверил, по остальным приведенным примерам, все правильно выполняется.

Сам код (если знаешь как написать обратную функцию, можешь поступить по моему примеру)) ):

import itertools

s='+-+-+ (+) +-0-0-+-0'

def f(s):

   s=s[::-1]

   num=0

   for i in range(len(s)):

       num=num + eval(s[i].replace('+','1').replace('-','-1') +'*3**'+str(i))

   return num

l=[]

for i in range(1,11):    #вот тут на свой страх и риск можешь увеличить 11 на 14 или упаси бог на 15, но не надейся на что-то)

   for t in list(map(''.join, itertools.product('+-0', repeat=i))):

       l.append((f(t), t))

s=''.join(i if i not in '()' else ' ' for i in s).split()

n=eval( str(f(s[0])) + s[1] + str(f(s[2])))

print(l[ [i[0] for i in l].index(n) ][1])

Новые вопросы