Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 25, 2019 09:39:53

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

Перебор символов

Привет!
Есть 3 числа: 1, 2 ,3.
Нужно перебрать между ними знаки арифметических действий (+,-,*,/), все возможные комбинации.
Догадываюсь что нужно воспользоваться циклом ‘for’, но как согласовать типы данных у чисел и знаков и при этом получить результат вычислений(print)? И как грамотно организовать перебор, чтобы не было повторений, но и не упустить какой либо вариант.



Находчивый питон проглотил двух разнополых кроликов.

Офлайн

#2 Янв. 25, 2019 10:30:10

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Перебор символов

Если без учёта коммутативности и приоритета операций, то как то так:

 >>> from operator import add, div, mul, sub
>>> s = [1,2,3]
>>> s = [ (x, y, z) for x in s for y in s for z in s ]
>>> o = [add, div, mul, sub]
>>> o = [ (x, y) for x in o for y in o ]
>>> [ [ x(y(a,b),c) for (x, y) in o ] for (a,b,c) in s ]
[[3, 2, 2, 1, 2, 1, 1, 0, 2, 1, 1, 0, 1, 0, 0, -1], [4, 3, 3, 2, 1, 0, 0, 0, 4, 2, 2, 0, 0, -1, -1, -2],
 [5, 4, 4, 3, 0, 0, 0, 0, 6, 3, 3, 0, -1, -2, -2, -3], [4, 1, 3, 0, 3, 0, 2, -1, 3, 0, 2, -1, 2, -1, 1,
-2], [5, 2, 4, 1, 1, 0, 1, -1, 6, 0, 4, -2, 1, -2, 0, -3], [6, 3, 5, 2, 1, 0, 0, -1, 9, 0, 6, -3, 0, -3,
 -1, -4], [5, 1, 4, -1, 4, 0, 3, -2, 4, 0, 3, -2, 3, -1, 2, -3], [6, 2, 5, 0, 2, 0, 1, -1, 8, 0, 6, -4,
2, -2, 1, -4], [7, 3, 6, 1, 1, 0, 1, -1, 12, 0, 9, -6, 1, -3, 0, -5], [4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2,
1, 2, 1, 1, 0], [5, 4, 4, 3, 1, 1, 1, 0, 6, 4, 4, 2, 1, 0, 0, -1], [6, 5, 5, 4, 1, 0, 0, 0, 9, 6, 6, 3,
0, -1, -1, -2], [5, 2, 5, 1, 4, 1, 4, 0, 4, 1, 4, 0, 3, 0, 3, -1], [6, 3, 6, 2, 2, 0, 2, 0, 8, 2, 8, 0,
2, -1, 2, -2], [7, 4, 7, 3, 1, 0, 1, 0, 12, 3, 12, 0, 1, -2, 1, -3], [6, 1, 7, 0, 5, 0, 6, -1, 5, 0, 6,
-1, 4, -1, 5, -2], [7, 2, 8, 1, 2, 0, 3, -1, 10, 0, 12, -2, 3, -2, 4, -3], [8, 3, 9, 2, 1, 0, 2, -1, 15,
 0, 18, -3, 2, -3, 3, -4], [5, 4, 4, 3, 4, 3, 3, 2, 4, 3, 3, 2, 3, 2, 2, 1], [6, 5, 5, 4, 2, 1, 1, 1, 8,
 6, 6, 4, 2, 1, 1, 0], [7, 6, 6, 5, 1, 1, 1, 0, 12, 9, 9, 6, 1, 0, 0, -1], [6, 2, 7, 2, 5, 1, 6, 1, 5, 1
, 6, 1, 4, 0, 5, 0], [7, 3, 8, 3, 2, 0, 3, 0, 10, 2, 12, 2, 3, -1, 4, -1], [8, 4, 9, 4, 1, 0, 2, 0, 15,
3, 18, 3, 2, -2, 3, -2], [7, 2, 10, 1, 6, 1, 9, 0, 6, 1, 9, 0, 5, 0, 8, -1], [8, 3, 11, 2, 3, 0, 4, 0, 1
2, 2, 18, 0, 4, -1, 7, -2], [9, 4, 12, 3, 2, 0, 3, 0, 18, 3, 27, 0, 3, -2, 6, -3]]



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Янв. 25, 2019 11:00:09)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version