gpt4 book ai didi

j - 修改数组的一行

转载 作者:行者123 更新时间:2023-12-01 07:06:45 25 4
gpt4 key购买 nike

我才刚刚开始学习 J,有些事情我不知道该怎么做

例如,假设我想打印一个包含 2 个符号的棋盘格

baba
abab
baba

为此,我假设您可以生成一个数组
baba
baba
baba

并反转第二行。

生成数组很容易: 3 4 $ 'ba' .但是倒车第二排是我挣扎的地方。

我可以通过做 |. 1 { 3 4 $ 'ba' 得到第二行的反面但这只给了我第二行,而不是整个数组。我不知道如何使用 J 语法我实际上可以保留顶行和底行并且只应​​用 |.到中间一排。

更一般地说,您将如何申请 |.只有每隔一行?

最佳答案

你问的

申请|.到一行,尝试类似:

   x =: 3 4 $ 'ba'
(|. 1{x) 1} x
baba
abab
baba

要反转每隔一行,我不知道是否有比这更简单的东西:
   ,/ 1 (]`(|."1))\ i. 5 4
0 1 2 3
7 6 5 4
8 9 10 11
15 14 13 12
16 17 18 19

这使用 relatively obscure feature二人组的 \ (Infix) :

x m\ y applies successive verbs from the gerund m to the infixes of y, extending m cyclically as required.



在这里, x是 1,所以我们的“中缀”只是 1×4 矩阵;我们循环通过动名词( ] ` (|."1) )在什么都不做( ] )和反转子矩阵的单行( |."1 )之间交替。然后,我们用 ,/ 将得到的 5×1×4 数组展平回 5×4 矩阵。 .

你可能想要的

实现“棋盘”的更简单的方法如下:首先,使用 +/在两个范围内创建“加法表”,如下所示:
   (i.3) +/ (i.4)
0 1 2 3
1 2 3 4
2 3 4 5

然后将所有这些值取模 2,以获得 0 和 1 的棋盘模式:
   2 | (i.3) +/ (i.4)
0 1 0 1
1 0 1 0
0 1 0 1

然后用 { 从选择的字符串中索引:
   (2 | (i.3) +/ (i.4)) { 'ba'
baba
abab
baba

关于j - 修改数组的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com