Here我读到“巴比伦人想出了“四分之一平方乘法”,它将乘法减为减法:
a*b = (a+b)^2/4 - (a-b)^2/4
当我在APL中尝试此操作时,结果如下:
(((a + b) * 2) ÷ 4) - (((a - b) * 2) ÷ 4)
但是所有这些parrens难道不是很丑吗?我无法弄清楚如何将“ ÷ 4
”放在“ (a + b) * 2)
”之前,以便根据“从右到左”规则最后执行它。
答案 0 :(得分:2)
您可能需要研究⍨
“通勤”运算符。它只需要一个函数并派生出一个与旧函数相同的新函数,但是交换了参数:
5-2
3
5-⍨2
¯3
因此您的公式可以写为:
(4 ÷⍨ 2 *⍨ a + b) - (4 ÷⍨ 2*⍨ a - b)
答案 1 :(得分:0)
(免责声明:我以前从未见过APL,所以这可能不是惯用语言。但这只是一种编程语言;难易程度如何?)
我提出了以下内容,该内容根本不使用括号:
-/2*⍨0.5×a+b×1 ¯1
算法:
[1, -1]
的数组。b
,得到[b, -b]
。a
,得到[a+b, a-b]
。[(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
。答案 2 :(得分:0)
很抱歉晚到派对,但这是一个只有一组括号的解决方案-括号内的短语是Train,其中a (f g h) b ←→ (a f b) g a h b
:
-⌿4 ÷⍨ 2 *⍨ a (+ ,[⎕IO-0.5] -) b
答案 3 :(得分:0)
只需一对()
start