首页 > 解决方案 > 用于名词初始化的句子的原子表示

问题描述

在数据结构中,例如

在此处输入图像描述

我希望能够使用“。(do)来初始化左侧可能是一长串名词名称,右侧是嵌套数组中的值。值可以是嵌套数组。5!:5需要获取原子表示的名词名称。获取数据的 AR 的方法是什么,例如嵌套数组,例如 <'data';'data';100?

标签: j

解决方案


如果你想要一个名词的 AR,我用这个:

   5!:1 <'t' [ t=. <'data';'data';100
┌─────────────────────┐
│┌─┬─────────────────┐│
││0│┌───────────────┐││
││ ││┌────┬────┬───┐│││
││ │││data│data│100││││
││ ││└────┴────┴───┘│││
││ │└───────────────┘││
│└─┴─────────────────┘│
└─────────────────────┘

如果您想将它扩展到您存储为线性文本表达式的其他词性,您可以这样做:

   5!:1 <'t' [ ". 't=.', '<''data'';''data'';100'
┌─────────────────────┐
│┌─┬─────────────────┐│
││0│┌───────────────┐││
││ ││┌────┬────┬───┐│││
││ │││data│data│100││││
││ ││└────┴────┴───┘│││
││ │└───────────────┘││
│└─┴─────────────────┘│
└─────────────────────┘

这需要引号中的额外 qoutes,但如果它们是文本格式,则允许所有词性:

   5!:1 <'t' [ ". 't=.', '+'
┌─┐
│+│
└─┘

但是如果你有你所指出的结构,为什么不做这样的事情:

   [ s=:4 3 $ 'one';'=:';1;'two';'=:';2;'three';'=:';3;'four';'=:';4
┌─────┬──┬─┐
│one  │=:│1│
├─────┼──┼─┤
│two  │=:│2│
├─────┼──┼─┤
│three│=:│3│
├─────┼──┼─┤
│four │=:│4│
└─────┴──┴─┘
   {:"1 s
┌─┬─┬─┬─┐
│1│2│3│4│
└─┴─┴─┴─┘
   (;:^:_1 {."1 s)
one two three four
   (;:^:_1 {."1 s)=.{:"1 s
   one
1
   two
2
   three
3
   four
4

添加的解决方案

由于您只想将名词表示为 AR,因此您始终可以根据 AR 的规则构造它们。将名词框起来,附加列表“0”,然后将结果框起来。

   arc =: 3 : '5!:1 < ''y''' NB. explict verb to create AR using intermediate name
   ar=. < @:((<, '0'),<)     NB. tacit verb to construct AR for nouns with no intermediate name
   (arc -: ar) 5
1
   (arc -: ar) <'data';'data';100
1
   (arc -: ar) 5;<'data';3j2
1

推荐阅读