今天我们将生成所有可能的数学方程。快速生成字符串组合的方法
给出这样的语法:[1,0][+,-][2,3]
这意味着我们需要所有具有1或0作为第一个字符,+或 - 作为第二个字符,以及2或3作为第三个字符的字符串。
所以,这8个可能的组合
1+2
1+3
1-2
1-3
0+2
0+3
0-2
0-3
我的方法是有效的,但它会得到稍微大的值相当缓慢。我解析上面的语法并为每个标记创建一个可能值的数组,并将其放入一个数组中。
equation_set = [];
tokens = [['1','0'],['+','-'],['2','3']]
// Initialize empty equation_set
token = tokens.pop();
foreach symbol in tokens
question_set.add(symbol)
// We now have a question_set = ['1','0']
// and tokens = [['+','-']['2','3']]
//
// Now we need to fill out the rest of the possible equations
foreach token in tokens
new_question_set = []
foreach symbol in token
foreach question in question_set
new_question_set.add(question + symbol)
question_set = new_question_set
我相信应该给我我想要的结果,但所有这些foreach让我感到紧张。我现在才想出了这个算法,但我觉得我错过了一些明显的东西。我们正在搞乱combinatorics,所以如果它非常慢,我不会感到惊讶,但感觉这并不是什么特别的东西。
干杯!
你需要一次生成它们吗?即,您是否需要能够同时收集包含所有这些信息的集合。 – Wug