生成以下为J

我涉足我的脚J和,让球滚动指定模式的数据,决定写一个函数:生成以下为J

  • 得到整数N;
  • 吐出遵循此模式的表:

(例如用于N = 4

1 

0 1

0 0 1

0 0 0 1

即零的各行数从0增加至N - 1

然而,作为新手,我卡住了。为N = 4情况下我现在的吃力(和不正确)解决方案是这样的:

(4 # ,: 0 1) #~/"1 1 (1 ,.~/ i.4) 

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

而且与它的问题是双重的:

  • 它没有足够的一般,看上去有点难看(括号和"使用);
  • 尾随零 - 据我所知,J中的所有数组都是齐次的,所以在我的情况下,每行都应该装盒。

就像是:

┌───────┐ 

│1 │

├───────┤

│0 1 │

├───────┤

│0 0 1 │

├───────┤

│0 0 0 1│

└───────┘

或者我应该使用哪一个将与空间,而不是零来填充字符串(例如'0 0 1')。

那么,我亲切地问这里是:

  • 请提供与解释这项任务惯用Ĵ解决方案;
  • 批评我的尝试,并指出如何完成。

在此先感谢!

回答:

与J中的诸多挑战一样,有时候最好将注意力集中在结果上并找到实现目标的不同方式。在这种情况下,你最初的做法是创建一个单位矩阵。我会用

=/[email protected]:i. 4 

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

你已经正确识别问题与尾随0的,事实上,歼意志垫出0的避免破烂阵列。因为每一行都是独立的,所以拳击避免了这种填充。

因此,请先创建您的列表。我会用反超,以获得额外的0

4{.1 

1 0 0 0

下一行使用1:从1动词和箱子追上返回1至4

(>:@:i. <@:{."0 1:) 4 

+-+---+-----+-------+

|1|1 0|1 0 0|1 0 0 0|

+-+---+-----+-------+

因为我们希望这是颠倒,然后制成字符串,我们将":@:|[email protected]:添加到过程中。

(>:@:i. <@:":@:|[email protected]:{."0 1:) 4 

+-+---+-----+-------+

|1|0 1|0 0 1|0 0 0 1|

+-+---+-----+-------+

然后我们拆箱

>@:(>:@:i. <@:":@:|[email protected]:{."0 1:) 4 

1

0 1

0 0 1

0 0 0 1

我不知道这是每个人都可以解决这个问题的方式,但它的工作原理。

另一种不使用拳击并使用二元j的解决方案。 (园区)和

1j4 # 1 

1 0 0 0 0

(1 j. 4) # 1

1 0 0 0 0

(1 #~ 1 j. ]) 4

1 0 0 0 0

所以,我创建一个列表中i. 4每个整数,然后反转他们,让他们为字符串的事实。由于它们现在是字符串,所以额外的填充是用空格完成的。

(1 ":@:|[email protected]:#~ 1 j. ])"[email protected]:i. 4 

1

0 1

0 0 1

0 0 0 1

这一步一步作为希望解释更好一点。

i.4 

0 1 2 3

,然后将其施加到(1 ":@:|[email protected]:#~ 1 j. ])原子的时间,因此使用的"0 打破什么括号内继续。我先拿右边的三个动词构成一个叉子。

(1 j. ])"[email protected]:i.4 

1 1j1 1j2 1j3

现在,有效,让我

1 ":@:|[email protected]:#~ 1 1j1 1j2 1j3 

叉的中间齿成为作用于两个名词arguments.The ~交换参数的动词。所以它变成相当于

1 1j1 1j2 1j3 ":@:|[email protected]:# 1 

这是因为方式@:作品是一样的

": |. 1 1j1 1j2 1j3 # 1 

因为叉使用"0改变我怎么还没有表现出这些组件的结果这些论据被发送到中间齿轮并在稍后汇集。我希望在这里有足够的空间,有些人挥手说明可能就足够了

从默认到明确的跳转可能是一个很大的问题,因此,明确编写相同的动词可能会更好它更有意义。

lowerTriangle =: 3 : 0 

​rightArg=. i. y

​complexCopy=. 1 j. rightArg

​1 (":@:|[email protected]:#~)"0 complexCopy

​)

lowerTriangle 4

1

0 1

0 0 1

0 0 0 1

lowerTriangle 5

1

0 1

0 0 1

0 0 0 1

0 0 0 0 1

看看当你“滚球”时会发生什么?我想关于J的事情是,无论你从哪里开始,球都会沿着一个非常陡峭的斜坡下坡。令人兴奋的,呃?

以上是 生成以下为J 的全部内容, 来源链接: utcz.com/qa/257253.html

回到顶部