【问题标题】:APL Dyalog Nested Array Element TransformationsAPL Dyalog 嵌套数组元素转换
【发布时间】:2018-08-13 20:31:09
【问题描述】:

我一直在使用 Dyalog APL 进行类分配,但在转换嵌套数组的每个元素时遇到了问题。

我有一个名为 HOLD 的字符数组,其中包含可变数量的 7 个字符长数组。使用拆分转换,我可以将其转换为只读嵌套数组的嵌套数组,但是我需要它们成为字符向量。

我可以使用 MIX 运算符将一个元素单独更改为字符向量,

TEST←↑HOLD[1]  ⍝Test will be a character vector

但我似乎无法同时对每个元素都这样做。

我最好的尝试看起来像

TEST←↑¨HOLD ⍝Test will be a nested array, seemingly identical to hold

但这似乎将每个元素都保留为只读字符数组。如何同时对 HOLD 中的每个元素执行此操作并获得仅包含字符向量的嵌套数组?

【问题讨论】:

  • 我很好奇什么类使用 Dyalog APL...我对你的问题有点困惑。字符数组包含字符,而不是其他数组。举个例子就好了。
  • 抱歉不清楚,原始字符数组只是一个随机字母数字字符的列表,每7个字符开始一个新行。例如:AIG67QC C12TOBL W1ZKGG2 我不确定 APL 如何处理换行符,但每组 7 个字符在我的原始字符数组中的换行符上。
  • 该课程是我大学的通用编程语言课程。它基本上是对许多不同语言的概述,是计算机科学专业的必修课。
  • this 对您有帮助吗?

标签: arrays vector nested apl dyalog


【解决方案1】:

您正在寻找的是“enlist”-primitive。它要求⎕ML > 0,所以我在 dfn 中分配它(以保持范围本地): TEST←{⎕ML←1 ⋄ ∊⍵}HOLD

如果您的 ⎕ML 已经 >0(请参阅 status bar),您可以简单地执行以下操作:TEST←∊HOLD

Try it online!

【讨论】:

  • 我认为我的问题可能在于获取某些索引处的元素。我用你的 foo←'I' 'am' 'a' 'vector' 'of' 'text' 'vectors' 的例子进行了测试。当我设置 bar←foo[4] 时,它将对象显示为只读嵌套数组而不是向量。感谢您的帮助!
  • 嗯,它不完全是“只读”,您可以随时覆盖它! ;-) 为了获取元素的内容并删除一层嵌套,请执行4⊃foo。你也可以做∊foo[4],看起来很相似,但不是。尝试:foo[4]←∊'multiple' 'strings' 并尝试前面的语句! ;-)
  • 对不起,错字!我的意思是“...试试foo[4]←⊂'multiple' 'strings'
猜你喜欢
  • 1970-01-01
  • 2020-10-19
  • 2017-05-03
  • 2017-10-29
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
相关资源
最近更新 更多