Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 9, 2017 17:20:23

shiroi
Зарегистрирован: 2017-10-25
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

расстановка математических знаков

Добрый вечер. Как расписать программу, которая на вход получает две строки:
первая строка с целыми числами
вторая целое число

и надо расписать, используя цифры из первой строки все варианты получения числа со второй строки
ввод:
123456789
200

результаты:
123-4+5-6-7+89
123+4+5+67-8+9
1+234-5-6-7-8-9

только + и -, не должно быть повторяющихся строк и если нет решения, то none
Заранее спасибо за помощь

Отредактировано shiroi (Ноя. 9, 2017 18:15:42)

Офлайн

#2 Ноя. 9, 2017 18:03:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

расстановка математических знаков

shiroi
первая строка с обычными цифрами
Начнем сразу, с начала предлагаю дать ссылку на определение “обычной цифры” или предоставить такое определение самостоятельно.



Офлайн

#3 Ноя. 9, 2017 18:07:13

shiroi
Зарегистрирован: 2017-10-25
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

расстановка математических знаков

FishHook
целые числа

Офлайн

#4 Ноя. 9, 2017 18:15:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

расстановка математических знаков

FishHook
целые числа
первая строка с обычными цифрами
вторая целое число



Не, нифига, в вашем мире, целые числа и обычные цифры - это одно и то же




Отредактировано FishHook (Ноя. 9, 2017 18:17:04)

Офлайн

#5 Ноя. 9, 2017 18:16:36

shiroi
Зарегистрирован: 2017-10-25
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

расстановка математических знаков

FishHook
я уже исправил, первая строка это целые числа, вторая целое число

Офлайн

#6 Ноя. 9, 2017 18:19:25

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

расстановка математических знаков

shiroi
я уже исправил
А вот теперь, сформируй Техническое Задание, потому что то что ты напридумывал, понятно только тебе.



Офлайн

#7 Ноя. 9, 2017 18:25:40

shiroi
Зарегистрирован: 2017-10-25
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

расстановка математических знаков

FishHook
вводится последовательность целых чисел в первой строке
вводится целое число во второй строке

путем расстановки знаков + и - получить из последовательности чисел первой строки число со второй строки

пример:
вводятся
123456789
200

и как итог получаем все возможные варианты получения числа со второй строки при помощи чисел с первой и знаков “+” и “-”:
123-4+5-6-7+89
123+4+5+67-8+9
1+234-5-6-7-8-9

Офлайн

#8 Ноя. 10, 2017 14:46:17

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

расстановка математических знаков

Пока несколько наводящих строк кода…

 from itertools import product
product(*[['+','-','']]*8)

Далее, остается рассмотреть list('123456789') и расставить знаки из всех комбинаций из product.

Офлайн

#9 Ноя. 10, 2017 23:03:55

shiroi
Зарегистрирован: 2017-10-25
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

расстановка математических знаков

scidam
спасибо большое, если я правильно понял, то функция product возвращает нам все возможные комбинации введенной нами последовательности?а что делает вот эта часть

 (*[['+','-','']]*8)

Отредактировано shiroi (Ноя. 10, 2017 23:04:55)

Офлайн

#10 Ноя. 11, 2017 00:37:56

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

расстановка математических знаков

shiroi
scidamспасибо большое, если я правильно понял, то функция product возвращает нам все возможные комбинации введенной нами последовательности?а что делает вот эта часть

Это чтобы не писать 8 аргументов функции product, т.е. вместо этого:

  product(['+', '-', ''],['+', '-', ''], repeat  this 8 times)

Далее, нужен цикл по всем возможным комбинациям, возвращаемым product, т.е.
 for combination in product(...):
   expression = ... # Here we need to construct the expression to be evaluated: e.g. use ''.join(...) and list comprehension concept
   answer = ast.literal_eval(expression) # tested in Python 3.5.x, import ast first!
   if anser == number: # compare the result and the target value
       print('Target expression is: ', expression)
       break
else:  #see for-else docs for details... 
    print('Sorry... Target expression wasn't found.')

Отредактировано scidam (Ноя. 11, 2017 01:03:55)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version