gpt4 book ai didi

tacit-programming - 如何在 J 中定义一个动词,将不同的动词交替应用于列表中的每个原子?

转载 作者:行者123 更新时间:2023-12-03 07:49:38 24 4
gpt4 key购买 nike

假设我在 J 中定义了以下名称:

m =: >: i. 2 4 5

这看起来如下:

 1  2  3  4  5 6  7  8  9 1011 12 13 14 1516 17 18 19 2021 22 23 24 2526 27 28 29 3031 32 33 34 3536 37 38 39 40

我想创建一个适用于此列表列表中的每个列表的 1 级单子(monad)动词。它将为列表中的每个替代项加倍 (+:) 或加 1 (>:)。如果我们将此动词应用于第一行,我们会得到2 3 6 5 10

获取与每个项目交替的 bool 值列表相当容易,例如 0 1 $~{:$ m 为我们提供 0 1 0 1 0。我想,啊哈!我会使用类似 +:`>: @. 的东西,后跟一些表达式,但我永远无法完全理解它可以工作。

有什么建议吗?

更新

以下内容似乎可行,但也许 J 专业人士可以将其重构为更优雅的东西。

poop =: monad define    (($ y) $ 0 1 $~{:$ y) ((]+:)`(]>:) @. [)"0 y)

最佳答案

我会使用排名为 1 的斜动词 (/."1) - 因此它依次适用于每个列表的连续元素。

您可以将动名词传递到 /. 中,它会按顺序应用它们,循环扩展。

   +:`>: /."1 m 
2
3
6
5
10

12
8
16
10
20

22
13
26
15
30

32
18
36
20
40


42
23
46
25
50

52
28
56
30
60

62
33
66
35
70

72
38
76
40
80

关于tacit-programming - 如何在 J 中定义一个动词,将不同的动词交替应用于列表中的每个原子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2988579/

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