如何找到各种可能的方法来求和?

时间:2018-12-02 21:58:36

标签: python numpy math addition

说我有一个整数。任何整数。任意示例:6

是否有一种干净的方法可以对可能的方法进行网格化,以便在一定范围内到达6

1-9

如果我有6,如何获得5+1, 2+4, 3+3, 9-3, 7-1, 8-2等的数组?

也许输出看起来像

[5,1],[2,4],[3,3],[9,3]

实际上任何方法都可以,我可以弄清楚输出实际返回该类型函数的方式后会弄乱输出。

2 个答案:

答案 0 :(得分:2)

你可以做

public class DictionaryActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dictionary);

返回import math def get_combinations(number, minimum, maximum): ret = [] for x in range(minimum, math.ceil(number/2)): ret.append((x, number - x)) for x in range(maximum - number): ret.append((maximum - x, maximum - (number + x))) return ret 中的list

我们来看看:

tuple

这只是定义要返回的数组,因此我们可以向其中添加内容。

ret = []

循环遍历所有可能的添加剂组合。此操作通过以下列表进行:

for x in range(minimum, math.ceil(number/2)):

但是,它最多只占数字的一半(四舍五入);没关系,因为就我们的目的而言,(1, x-1), (2, x-2), ..., (n, x-n) (1, 6)是相同的,我们不应同时包含两者。

(6, 1)

这只是ret.append((x, number - x)) 的Python表示形式。

(n, x-n)

循环遍历所有可能的减法组合。 遍历列表:

for x in range(maximum - number):

继续!

(maximum, maximum - x), (maximum - 1, maximum - (x + 1)), ..., (maximum - n, maximum - (x + n))

同样,只是ret.append((maximum - x, maximum - (number + x))) 的Python表示形式。

(maximum - n, maximum - (x + n))

最后,返回完成的列表。

答案 1 :(得分:0)

# checks for valid tuple
def valid_tuple(min_val, max_val, x):
    i,j = x
    return i>=min_val and i<=max_val and j>=min_val and j<=max_val

def combinations(sum_val, max_val, min_val):
    result =  [(i, sum_val-i) for i in range(min_val, max_val)]
    result = filter(lambda x: valid_tuple(min_val, max_val, x) , result)
    return list(result) 

combinations (6, 9,0)
# [(0, 6), (1, 5), (2, 4), (3, 3), (4, 2), (5, 1), (6, 0)]