1

我正在尝试在 Dyalog APL 中解决Euler 18,但我无法理解为什么我的解决方案不起作用。

问题如下:

通过从下方三角形的顶部开始并移动到下方行中的相邻数字,从上到下的最大总数为 23。

   3 
  7 4 
 2 4 6
8 5 9 3

也就是说,3 + 7 + 4 + 9 = 23。

以我以这种方式表示的示例为例:

d ← (3 0 0 0)  (7 4 0 0)  (2 4 6 0)  (8 5 9 3) 

我正在尝试以这种方式解决它:

{⍵+((2⌈/⍺)),0}/⌽d

这给了我这个数组:22 19 15 0,其中更大的数字是 22,这不是问题的正确答案,它应该是 23。

我得到了这种行为(为了便于阅读,从左到右):

(2⌈/(8 5 9 3),0)+(2⌈/(2 4 6 0),0)+(2⌈/(7 4 0 0),0)+(2⌈/(3 0 0 0),0)

这给了我与函数相同的结果。

我期望的是这种行为(每个语句直接在下一行替换):

    (2⌈/(8 5 9 3)),0
(2 4 6 0)+8 9 9 0
    (2⌈/(10 13 15 0)),0
(7 4 0 0)+13 15 15 0
    (2⌈/(20 19 15 0)),0
(3 0 0 0) + 20 19 15 0
23 19 15 0

我是否想知道我在 APL 流程中的哪些地方误解了导致与我预期不同的结果。

谢谢!

4

1 回答 1

4
于 2021-06-05T00:46:31.000 回答