首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对J Tally(#)的误解

对J Tally(#)的误解
EN

Stack Overflow用户
提问于 2012-08-21 23:13:59
回答 2查看 112关注 0票数 3

在J中,要找出可以使用的元素的数量,对吗?

例如:

代码语言:javascript
复制
# 2 3 4 5 6
5

好的。那么多维数组怎么样呢?

代码语言:javascript
复制
b=: 2 3 4 $ i.2

   b
0 1 0 1
0 1 0 1
0 1 0 1

0 1 0 1
0 1 0 1
0 1 0 1

这里#b是2。我猜是因为第一维的长度是2。也就是数组的框架。

所以如果我稍微修改一下:

代码语言:javascript
复制
b=:3 2 4 $ i.2
   b
0 1 0 1
0 1 0 1

0 1 0 1
0 1 0 1

0 1 0 1
0 1 0 1

这里有计数3,因为前导维度的长度是3,对吧?

但我无法解释这一点:

代码语言:javascript
复制
#\b
1 2 3

我对b的元素进行了计数。因此,我认为每个2x4子数组都会被使用,并且我希望#\b给出

代码语言:javascript
复制
2 2 2

因为:

代码语言:javascript
复制
c=:2 4 $i.2
   c
0 1 0 1
0 1 0 1
   #c
2

所以我的问题是,为什么#\b =1 2 3?我认为这与动词等级有关,对吧?我很难理解这个话题...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-21 23:52:33

要查看发生了什么,最简单的方法是对\b进行装箱

代码语言:javascript
复制
   <\b
┌───────┬───────┬───────┐
│0 1 0 1│0 1 0 1│0 1 0 1│
│0 1 0 1│0 1 0 1│0 1 0 1│
│       │       │       │
│       │0 1 0 1│0 1 0 1│
│       │0 1 0 1│0 1 0 1│
│       │       │       │
│       │       │0 1 0 1│
│       │       │0 1 0 1│
└───────┴───────┴───────┘

u\yu应用于y的前缀:

代码语言:javascript
复制
<\1 2 3
┌─┬───┬─────┐
│1│1 2│1 2 3│
└─┴───┴─────┘
#\1 2 3
1 2 3
*/\1 2 3
1 2 6

因此,#\b会给出每个b前缀的项数。

你可能认为你会得到的是b的2阶数:

代码语言:javascript
复制
#"2 b
2 2 2
<"2 b
┌───────┬───────┬───────┐
│0 1 0 1│0 1 0 1│0 1 0 1│
│0 1 0 1│0 1 0 1│0 1 0 1│
└───────┴───────┴───────┘
票数 6
EN

Stack Overflow用户

发布于 2012-08-24 02:54:23

要获取多维数组中排名为0的项的计数,请执行以下操作:

代码语言:javascript
复制
   rank_0s =: */&$
   wild1 =: 2 3 4 $ 'abcdefghijklmnopqrstuvwxyz'

   rank_0s wild1
24
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12058028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档