claude-3.5-sonnet 写的,不懂,看看输出对不对

Code AardioLine:113复制
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102.103.104.105.106.107.108.109.110.111.112.113.import
win
.ui;import
math
;var
winform = win
.form(text="24点计算器"
;right=399
;bottom=701
)- winform.add(
- button={cls=
"button"
;text="计算"
;left=340
;top=20
;right=380
;bottom=50
;z=5
}; - edit1={cls=
"edit"
;left=20
;top=20
;right=80
;bottom=50
;edge=1
;z=1
}; - edit2={cls=
"edit"
;left=100
;top=20
;right=160
;bottom=50
;edge=1
;z=2
}; - edit3={cls=
"edit"
;left=180
;top=20
;right=240
;bottom=50
;edge=1
;z=3
}; - edit4={cls=
"edit"
;left=260
;top=20
;right=320
;bottom=50
;edge=1
;z=4
}; - edit5={cls=
"edit"
;left=20
;top=70
;right=380
;bottom=684
;edge=1
;multiline=1
;vscroll=1
;z=6
} - )
- operators = {
"+"
, "-"
, "*"
, "/"
}; - calculate =
function
(a, b, op) { -
if
(op == "+"
) return
a + b; -
if
(op == "-"
) return
a - b; -
if
(op == "*"
) return
a * b; -
if
(op == "/"
) return
b != 0
? a / b : null
; - }
- permute =
function
(arr, start = 1
) { -
if
(start == -
return
{arr}; - }
-
var
result = {}; -
for
(i=start; - arr[start], arr[i] = arr[i], arr[start];
-
var
subPermutations = permute(arr, start + 1
); -
for
(j=1
; -
table
.push(result, table
.clone(subPermutations[j])); - }
- arr[start], arr[i] = arr[i], arr[start];
- }
-
return
result; - }
- solve24 =
function
(nums) { -
var
solutions = {}; -
var
permutations = permute(nums); -
-
for
(p=1
; -
var
nums = permutations[p]; -
for
(i=1
;4
;1
) { -
for
(j=1
;4
;1
) { -
for
(k=1
;4
;1
) { -
var
a = calculate(nums[1
], nums[2
], operators[i]); -
if
(a === null
) continue
; -
var
b = calculate(a, nums[3
], operators[j]); -
if
(b === null
) continue
; -
var
c = calculate(b, nums[4
], operators[k]); -
if
(c === null
) continue
; -
if
(math
.abs(c - 24
) < 0
.000001
) { -
var
expr = string
.format("((%g%s%g)%s%g)%s%g"
, - nums[
1
], operators[i], nums[2
], operators[j], nums[3
], operators[k], nums[4
]); -
table
.push(solutions, expr + " = 24"
); - }
-
- a = calculate(nums[
3
], nums[4
], operators[k]); -
if
(a === null
) continue
; - b = calculate(nums[
2
], a, operators[j]); -
if
(b === null
) continue
; - c = calculate(nums[
1
], b, operators[i]); -
if
(c === null
) continue
; -
if
(math
.abs(c - 24
) < 0
.000001
) { -
var
expr = string
.format("%g%s(%g%s(%g%s%g))"
, - nums[
1
], operators[i], nums[2
], operators[j], nums[3
], operators[k], nums[4
]); -
table
.push(solutions, expr + " = 24"
); - }
- }
- }
- }
- }
-
return
solutions; - }
- winform.button.oncommand =
function
(id,event){ -
var
nums = { -
tonumber
(winform.edit1.text), -
tonumber
(winform.edit2.text), -
tonumber
(winform.edit3.text), -
tonumber
(winform.edit4.text) - };
-
-
-
for
(i=1
;4
;1
) { -
if
(type
(nums[i]) != "number"
) { - winform.edit5.text =
"请在所有输入框中输入有效的数字。"
; -
return
; - }
- }
-
- winform.edit5.text =
"正在计算,请稍候..."
; -
win
.delay(100
); -
-
var
solutions = solve24(nums); -
-
if
( - winform.edit5.text =
string
.join(solutions, '\r\n'
); - }
else
{ - winform.edit5.text =
"没有找到解法。"
; - }
- }
- winform.show();
win
.loopMessage();