小编maz*_*zin的帖子

如何屏蔽 APL 中的扫描操作符?

假设我有一个数组N \xe2\x86\x90 0 0 0 1 1 1 0 0 1,我如何应用扫描\\来实现数组0 0 0 1 2 3 0 0 1

\n

+\\N给了我0 0 0 1 2 3 3 3 4这不是我想要的。

\n

+\\\xc2\xa8\xe2\x8a\x86\xe2\x8d\xa8N给我| 1 2 3 | 1 |哪个更接近,但随后我失去了位置。

\n

有没有办法在扫描和乘法中携带原始值,或者也许有更好的方法?

\n

apl dyalog

4
推荐指数
2
解决办法
240
查看次数

APL 中的惯用图表

APL 非常适合解决数组类型问题,但我很好奇如何最好地处理 APL 中的图形。我正在玩 leet 问题,例如问题662. 二叉树的最大宽度,该练习适用于具有值/左/右指针样式的 Node 对象,但是测试用例使用像[1,3,null,5,3]. 符号被压缩;未压缩的将是[[1], [3,null], [5,3,null,null]]. 逐层阅读给出[[1], [3], [5,3]](所以2是最宽的层)。

\n

另一个例子

\n

[5,4,7,3,null,2,null,-1,null,9]给出答案 2\n树可视化

\n

所以我不确定处理树木的惯用方法。我使用类吗?还是数组最好?在这两种情况下,我如何转换输入?

\n

我想出了几个解决方案,但都感觉不优雅。(抱歉没有评论)

\n
 convert\xe2\x86\x90{\n     prev \xe2\x86\x90 {(-\xe2\x8c\x882\xc3\xb7\xe2\x8d\xa8\xe2\x89\xa2\xe2\x8d\xb5)\xe2\x86\x91\xe2\x8d\xb5}\n     nxt\xe2\x86\x90{\n         \xe2\x8d\xb5\xe2\x89\xa1\xe2\x8d\xac:\xe2\x8d\xba\n         m\xe2\x86\x902/\xc3\x97prev \xe2\x8d\xba\n         cnt\xe2\x86\x90+/m\n         (\xe2\x8d\xba,(m\\cnt\xe2\x86\x91\xe2\x8d\xb5))nxt(cnt\xe2\x86\x93\xe2\x8d\xb5)\n     }\n\n     (1\xe2\x86\x91\xe2\x8d\xb5)nxt(1\xe2\x86\x93\xe2\x8d\xb5)\n }\n
Run Code Online (Sandbox Code Playgroud)\n

或者,

\n
convert \xe2\x86\x90 {\n     total\xe2\x86\x90(+/\xc3\x97\xe2\x8d\xb5)\n     nxt\xe2\x86\x90{\n         double\xe2\x86\x90\xc3\x971,2\xe2\x86\x932/0,\xe2\x8d\xb5\n         (((+/double)\xe2\x86\x91\xe2\x8d\xba)@\xe2\x8a\xa2)double\n     }\n     \xe2\x8d\xb5 nxt\xe2\x8d\xa3{(+/\xc3\x97\xe2\x8d\xba)=total}1\n }\n\n
Run Code Online (Sandbox Code Playgroud)\n

两种解决方案都受到限制,因为它们假设0null

\n

一旦我解压了输入,它就只是按其顺序分层的问题

\n
\xe2\x8c\x88/(1+\xe2\x8c\x88/-\xe2\x8c\x8a/)\xe2\x88\x98\xe2\x8d\xb8\xc2\xa8\xc3\x97nodes\xe2\x8a\x86\xe2\x8d\xa8\xe2\x8d\xb82*\xc2\xaf1+\xe2\x8d\xb3\xe2\x8c\x882\xe2\x8d\x9f\xe2\x89\xa2nodes\n
Run Code Online (Sandbox Code Playgroud)\n

在Python中,我可以使用其他方法来遍历,即在每个深度的基础上跟踪最左/最右的节点。

\n

注意:这可能是两个问题,一个是解压缩,另一个是如何遍历一般图,但一个取决于另一个

\n

有任何想法吗? …

tree graph apl dyalog

0
推荐指数
1
解决办法
382
查看次数

标签 统计

apl ×2

dyalog ×2

graph ×1

tree ×1