Mapping 如何在APL中使用秩运算符代替各运算符
我有 并需要以下输出Mapping 如何在APL中使用秩运算符代替各运算符,mapping,apl,dyalog,Mapping,Apl,Dyalog,我有 并需要以下输出 dummytxt←'abcdefghijk' texttoadd←'down' rfikv←20 30 50 我可以用: defghijk20down defghijk30down defghijk50down 但请帮助我在不使用每个运算符的情况下使用秩⍤ 我使用Dyalog APL,但请不要使用火车 谢谢使用每一个的表达式,如f¨x,可以按等级表示为{⊂F⊃⍵}⍤0⊢x(注意⊢用于将数组右操作数0与数组右参数x)分离。换句话说,在参数的标量上,我们: 公开标量
dummytxt←'abcdefghijk'
texttoadd←'down'
rfikv←20 30 50
我可以用:
defghijk20down defghijk30down defghijk50down
但请帮助我在不使用每个运算符的情况下使用秩⍤代码>
我使用Dyalog APL,但请不要使用火车
谢谢使用每一个的表达式,如f¨x
,可以按等级表示为{⊂F⊃⍵}⍤0⊢x
(注意⊢
用于将数组右操作数0
与数组右参数x
)分离。换句话说,在参数的标量上,我们:
公开标量:⊃⍵代码>
应用函数:f⊃⍵代码>
将结果括起来:⊂F⊃⍵代码>
类似的表达式适用于二元情况,xf–y
,但我们需要:
公开两个标量:(⊃⍺)代码>…(⊃⍵)代码>
应用函数:(⊃⍺)f(⊃⍵)代码>
将结果括起来:⊂(⊃⍺)f(⊃⍵)代码>
这给了我们x{⊂(⊃⍺)f(⊃⍵)}⍤0⊢y
。因此,我们可以使用秩来构建我们自己的每个运算符,该运算符允许派生函数的一元和二元应用:
每个←{⍺←⊢ ⋄ ⍺ ⍺⍺{×⎕NC'⍺':⊂(⊃⍺)⍺⍺(⊃⍵) ⋄ ⊂⍺⍺⊃⍵}⍤0⊢⍵}
(¯10↑各(⊂dummytxt),每个⍕每个rfikv),每个⊂文本添加
Defghijk20向下Defghijk30向下Defghijk50向下
或者,我们可以将两个更简单的等价物替换为表达式:
('10{⊂(⊃⍺)↑(⊃⍵)}⍤0⊢(⊂dummytxt){⊂(⊃⍺),(⊃⍵)}⍤0{⊂⍕⊃⍵}⍤0⊢rfikv){⊂(⊃⍺),(⊃⍵)}⍤0⊂文本添加
Defghijk20向下Defghijk30向下Defghijk50向下
请注意,我们将texttoadd
括起来,这样它就变成了标量,然后我们使用⍤0
来处理整个标量,只会再次公开它。相反,我们可以使用⍤0 1
表示希望在应用函数时使用整个vector right参数,而不需要披露其right参数:
('10{⊂(⊃⍺)↑(⊃⍵)}⍤0⊢(⊂dummytxt){⊂(⊃⍺),(⊃⍵)}⍤0{⊂⍕⊃⍵}⍤0⊢rfikv){⊂(⊃⍺),⍵}⍤0 1⊢文本添加
Defghijk20向下Defghijk30向下Defghijk50向下
rfikv
和10
是一个简单的标量,因此公开它们没有任何效果:
('10{⊂⍺↑(⊃⍵)}⍤0⊢(⊂dummytxt){⊂(⊃⍺),(⊃⍵)}⍤0{⊂⍕⍵}⍤0⊢rfikv){⊂(⊃⍺),⍵}⍤0 1⊢文本添加
Defghijk20向下Defghijk30向下Defghijk50向下
dummytxt
与上面的texttoadd
处于相同的情况,但作为左参数,因此我们可以跳过括号并要求秩使用整个向量左参数;⍤10
:
('10{⊂⍺↑(⊃⍵)}⍤0⊢dummytxt{⊂⍺,(⊃⍵)}⍤1 0{⊂⍕⍵}⍤0⊢rfikv){⊂(⊃⍺),⍵}⍤0 1⊢文本添加
Defghijk20向下Defghijk30向下Defghijk50向下
这和使用一般方法得到的一样简单。但是,如果我们观察到唯一的非标量是rfikv
,我们可以将dummytxt
和texttoadd
视为全局常量,并将整个事物表示为单个⍤0
rfikv上的功能应用程序
:
{⊂(¯10↑dummytxt,⍕⍵),texttoadd}⍤0⊢rfikv
Defghijk20向下Defghijk30向下Defghijk50向下
当然,每个人也可以做到这一点:
{('10↑dummytxt,⍕⍵),texttoadd}–rfikv
Defghijk20向下Defghijk30向下Defghijk50向下
↓(dummytxt{10↑⍺,⍕⍵}⍤1 0⊢rfikv),⍤1.⊢text添加
?秩用于原位(N维意义上的矩形)数据。如果数据参差不齐(长度不均匀),因此不是像你这样的正交/矩形。你想要每一个,就像你拥有的一样。正确的工具用于正确的工作和所有这些。@DanBron OP试图通过翻译一个非常每个表达式来增加她对秩的理解。顺便说一句,数据是矩形的,因为它只包含简单的标量和向量,这显然不能参差不齐。Adám,谢谢你们非常详细的回答(和你们所有人)1.在最后的回答中,你们忘记了'10
,这就是为什么我认为最后的答案是{⊂(¯10↑dummytxt(⍕⍵)),texttoadd}⍤0⊢rfikv
@yulliiaserhiienko不客气。谢谢你指出这一点-修复了。很抱歉弄乱了你的帖子。你能解释一下⍺⍺代码>此处每个←{⍺←⊢ ⋄ ⍺ ⍺⍺{×⎕NC'⍺':⊂(⊃⍺)⍺⍺(⊃⍵) ⋄ ⊂⍺⍺⊃⍵}⍤0⊢⍵}
@yulliiaserhiienko为了避免混乱,可以问一个单独的问题:我在答案中看到了以下代码:每个←{⍺←⊢ ⋄ ⍺ ⍺⍺{×⎕NC'⍺':⊂(⊃⍺)⍺⍺(⊃⍵) ⋄ ⊂⍺⍺⊃⍵}⍤0⊢⍵}代码>…阿德姆,谢谢,单独创建
scenv←(¯10↑¨(⊂dummytxt),¨⍕¨rfikv),¨⊂texttoadd