SHOW:
|
|
- or go back to the newest paste.
1 | fun main(args: Array<String>) { | |
2 | find(Numbers) | |
3 | } | |
4 | ||
5 | fun find(numbers: IntArray, index: Int = 0, data: String = "") { | |
6 | if (index >= numbers.size) { | |
7 | if (data.isNotEmpty() && eval(data).compareTo(Result) == 0) | |
8 | println("$data = $Result") | |
9 | } else { | |
10 | val number = numbers[index].toString() | |
11 | if (index == 0) { | |
12 | find(numbers, 1, number) | |
13 | find(numbers, 1, Minus + number) | |
14 | } else | |
15 | for (operator in Operators) | |
16 | find(numbers, index + 1, data + operator + number) | |
17 | } | |
18 | } | |
19 | ||
20 | fun eval(data: String) = Expression(data).eval() | |
21 | ||
22 | val Numbers = intArrayOf(6, 6, 1, 3, 7, 6, 6) | |
23 | val Result = BigDecimal("100") | |
24 | val Operators = arrayOf("+", "-", "/", "*") | |
25 | val Minus = "-" |