没有parens我怎么能做这个操作?
How can I do this operation without parens?
Here 我读到 "The Babylonians came up with the "四分之一平方乘法”,它将乘法简化为减法:
a*b = (a+b)^2/4 - (a-b)^2/4
当我在 APL 中尝试这个时,我得到了这个:
(((a + b) * 2) ÷ 4) - (((a - b) * 2) ÷ 4)
但是这么多家长不是很丑吗?我无法弄清楚如何将“÷ 4
”放在“(a + b) * 2)
”之前,以便它根据 "right to left" 规则最后执行。
您可能需要查看 ⍨
"commute" 运算符。它采用单个函数并派生出一个与旧函数相同的新函数,但交换了参数:
5-2
3
5-⍨2
¯3
所以你的公式可以写成:
(4 ÷⍨ 2 *⍨ a + b) - (4 ÷⍨ 2*⍨ a - b)
(免责声明:我以前从未见过 APL,所以这可能不是地道的。但这只是一种编程语言;它有多难?)
我想出了以下完全不使用括号的方法:
-/2*⍨0.5×a+b×1 ¯1
算法:
- 创建一个包含
[1, -1]
. 的数组
- 将每个元素乘以
b
,得到 [b, -b]
。
- 将
a
添加到每个元素,得到[a+b, a-b]
。
- 将每个元素乘以 1/2 (0.5),得到
[(a+b)/2, (a-b)/2]
。
- 对每个元素求平方(使用交换运算符
⍨
将指数放在左边),得到 [((a+b)/2)^2, ((a-b)/2)^2]
,等价于 [(a+b)^2 / 4, (a-b)^2 / 4]
.
- 将元素彼此相减,得到
(a+b)^2 / 4 - (a-b)^2 / 4
。
很抱歉来晚了,但这里有一个只有一组括号的解决方案——括号内的短语是 Train,其中 a (f g h) b ←→ (a f b) g a h b
:
-⌿4 ÷⍨ 2 *⍨ a (+ ,[⎕IO-0.5] -) b
只有一对 ()
4÷⍨-/2*⍨(+/,-/)10 2
20
Here 我读到 "The Babylonians came up with the "四分之一平方乘法”,它将乘法简化为减法:
a*b = (a+b)^2/4 - (a-b)^2/4
当我在 APL 中尝试这个时,我得到了这个:
(((a + b) * 2) ÷ 4) - (((a - b) * 2) ÷ 4)
但是这么多家长不是很丑吗?我无法弄清楚如何将“÷ 4
”放在“(a + b) * 2)
”之前,以便它根据 "right to left" 规则最后执行。
您可能需要查看 ⍨
"commute" 运算符。它采用单个函数并派生出一个与旧函数相同的新函数,但交换了参数:
5-2
3
5-⍨2
¯3
所以你的公式可以写成:
(4 ÷⍨ 2 *⍨ a + b) - (4 ÷⍨ 2*⍨ a - b)
(免责声明:我以前从未见过 APL,所以这可能不是地道的。但这只是一种编程语言;它有多难?)
我想出了以下完全不使用括号的方法:
-/2*⍨0.5×a+b×1 ¯1
算法:
- 创建一个包含
[1, -1]
. 的数组
- 将每个元素乘以
b
,得到[b, -b]
。 - 将
a
添加到每个元素,得到[a+b, a-b]
。 - 将每个元素乘以 1/2 (0.5),得到
[(a+b)/2, (a-b)/2]
。 - 对每个元素求平方(使用交换运算符
⍨
将指数放在左边),得到[((a+b)/2)^2, ((a-b)/2)^2]
,等价于[(a+b)^2 / 4, (a-b)^2 / 4]
. - 将元素彼此相减,得到
(a+b)^2 / 4 - (a-b)^2 / 4
。
很抱歉来晚了,但这里有一个只有一组括号的解决方案——括号内的短语是 Train,其中 a (f g h) b ←→ (a f b) g a h b
:
-⌿4 ÷⍨ 2 *⍨ a (+ ,[⎕IO-0.5] -) b
只有一对 ()
4÷⍨-/2*⍨(+/,-/)10 2
20