- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有
dummytxt←'abcdefghijk'
texttoadd←'down'
rfikv←20 30 50
需要下面的输出
defghijk20down defghijk30down defghijk50down
我可以用:
scenv←(¯10↑¨(⊂dummytxt),¨⍕¨rfikv),¨⊂texttoadd
但是请帮我写没有每个运营商但使用等级 ⍤
我使用 Dyalog APL,但请不要使用火车。
谢谢
最佳答案
使用 Each 的表达式,如 f¨x
,可以根据 Rank 表示为 {⊂f⊃⍵} ⍤0⊢x
(注意⊢
是将数组右操作数0
与数组右参数x
分开)。换句话说,在参数的标量上我们:
⊃⍵
f⊃⍵
⊂f⊃⍵
类似的表达式适用于二元情况,x f¨y
,但我们需要:
(⊃⍺)
…(⊃⍵)
(⊃⍺)f(⊃⍵)
⊂(⊃⍺)f(⊃⍵)
这给了我们 x{⊂(⊃⍺)f(⊃⍵)}⍤0⊢y
。因此,我们可以使用 Rank 构建我们自己的 Each 运算符,它允许派生函数的单子(monad)和二元应用:
Each←{⍺←⊢ ⋄ ⍺ ⍺⍺{×⎕NC'⍺':⊂(⊃⍺)⍺⍺(⊃⍵) ⋄ ⊂⍺⍺⊃⍵}⍤0⊢⍵}
(¯10↑Each(⊂dummytxt),Each⍕Each rfikv),Each⊂texttoadd
defghijk20down defghijk30down defghijk50down
或者,我们可以将两个更简单的等价代入您的表达式中:
(¯10{⊂(⊃⍺)↑(⊃⍵)}⍤0⊢(⊂dummytxt){⊂(⊃⍺),(⊃⍵)}⍤0{⊂⍕⊃⍵}⍤0⊢rfikv){⊂(⊃⍺),(⊃⍵)}⍤0⊂texttoadd
defghijk20down defghijk30down defghijk50down
请注意,我们将 texttoadd
括起来,使其成为标量,然后我们使用 ⍤0
来处理整个标量,只是为了再次公开它。相反,我们可以使用 ⍤0 1
来表示在应用函数时想要使用整个 vector 右参数,而这又不需要公开其右参数:
(¯10{⊂(⊃⍺)↑(⊃⍵)}⍤0⊢(⊂dummytxt){⊂(⊃⍺),(⊃⍵)}⍤0{⊂⍕⊃⍵}⍤0⊢rfikv){⊂(⊃⍺),⍵}⍤0 1⊢texttoadd
defghijk20down defghijk30down defghijk50down
rfikv
和 ¯10
是一个简单的标量,因此公开它们没有任何效果:
(¯10{⊂⍺↑(⊃⍵)}⍤0⊢(⊂dummytxt){⊂(⊃⍺),(⊃⍵)}⍤0{⊂⍕⍵}⍤0⊢rfikv){⊂(⊃⍺),⍵}⍤0 1⊢texttoadd
defghijk20down defghijk30down defghijk50down
dummytxt
与上面的 texttoadd
情况相同,但是作为左参数,所以我们可以跳过 enclose-disclose 并要求 Rank 使用整个向量左参数; ⍤1 0
:
(¯10{⊂⍺↑(⊃⍵)}⍤0⊢dummytxt{⊂⍺,(⊃⍵)}⍤1 0{⊂⍕⍵}⍤0⊢rfikv){⊂(⊃⍺),⍵}⍤0 1⊢texttoadd
defghijk20down defghijk30down defghijk50down
这与使用通用方法一样简单。然而,如果我们观察到唯一的非标量是 rfikv
,我们可以将 dummytxt
和 texttoadd
视为全局常量并表达整个事物作为 rfikv
上的单个 ⍤0
函数应用程序:
{⊂(¯10↑dummytxt,⍕⍵),texttoadd}⍤0⊢rfikv
defghijk20down defghijk30down defghijk50down
当然,Each 也可以这样做:
{(¯10↑dummytxt,⍕⍵),texttoadd}¨rfikv
defghijk20down defghijk30down defghijk50down
关于mapping - 如何在 APL 中使用排名运算符而不是每个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58247544/
如何将任何 Dyalog APL 值转换为可以传递给 ⍎ 的字符向量获得相同的值(value)? 预期如何: x←2 3⍴⍳6 x←1,⊂x x←x,⊂'foo'
有没有办法打开文本编辑器,输入一些 APL 代码,将其保存为文件,然后在 Dyalog 或 MicroAPLX 中打开它以执行代码?或者这就是工作空间? 最佳答案 @Tobia 已经对 APL 给出了
我几周前才开始学习 APL,所以这听起来像是一个新手问题。 让 B是一个字符串,在 APL 术语中可以是标量或向量。如果是标量,⍴B返回 null 而不是我想要的字符串长度。 B←'QR' ⍴B ⍝
在 APL 中进行任意精度(整数)算术的最简单方法是什么? 任何已知的图书馆?或者你应该“内联”操作(以及如何)? 最佳答案 Dyalog APL 在 big 中包含运算符 dfns workspac
我到处寻找一个函数来执行此操作,但给出了一个嵌套向量 A←(5 3 2) (3 9 1) 我想用 B 索引它 B ← 2 1 这样对于 A 中的第一项,将返回第二项。对于 A 的第二项,将返回 3(第
根据http://www.microapl.co.uk/apl/APL1_2.PDF ,¯12和12之间有圆函数。例如,函数1、2和3分别是sin、cos和tan .我在 this reference
APL中是否存在续行符,即表示输入尚未完成并继续解析下一行的字符? 我想要它的原因是输入一个与其形状相似的格式的数组,例如,而不是: Forecast ← 4 6 ⍴ 150 200 100 80 8
大约在 1980 年代我开始使用 APL 时,Jim Weigang 提出了一个将 APL 代码写入文件的音译方案。虽然该方案本身很可靠,但人们可能永远不想用它来编程。我记得的一个音译方案(刚找到它,
我是一名经验丰富的软件工程师,开始研究 APL,为了尽早更好地了解该语言,我想了解为什么该语言向编码人员展示了标量和向量之间的区别。据我所知,在我的学习中,这只会限制灵活性,而不会产生任何好处来弥补它
如何在 APL 中定义普适功能? 我做的是 function←{ (⊃⍣(⍬≡⍴⍵)){the function that apply to scalar}¨⍵ } 我认为应该有更好的方法来做
假设我有一个数组 N ← 0 0 0 1 1 1 0 0 1 , 我如何应用扫描 \实现数组0 0 0 1 2 3 0 0 1 ?+\N给我 0 0 0 1 2 3 3 3 4这不是我想要的。+\¨⊆
我正在尝试开始使用 APL 和任何相关的 IDE、工具、编译器等。我可能需要在本地安装。我也在网上看了APL repl,但是所有的符号似乎都很难打(我什至不知道从哪里开始)。 我想知道我需要安装的任何
我正在尝试学习 APL。以下代码片段来自http://archive.vector.org.uk/art10011550其中指出此代码就像用英语阅读“MUMMY”一样简单! R←((V⍳V)=⍳⍴V)
这是 Dyalog APL 中黄金比例的代码: 1+∘÷⍣=1 我不明白。 “1 加 compose rec 重复等于 1”没有任何意义。 最佳答案 ⍣ 的操作数是 +∘÷(左边)和 =(右边)。它的
我正在使用 Dyalog APL,但我发现某些功能在 gnu-apl 中不可用。这两个 APL 实现与所有其他 APL 实现之间是否有很大差异?最常用的 APL 编译器是什么? 最佳答案 出于所有实际
给定 APL 中的列表,我想检查每个相邻对是否有序。因此,给定 (a0, a1, ..., an),我想计算: (a0 ≤ a1) ∧ (a1 ≤ a2) ∧ .... ∧ (a[n-1] ≤ an)
我需要在 Dyalog APL 中精确工作。我知道 ⎕PP 的值设置了精度,但我无法将其增加到超过 18,因此我无法获得超过 18 位的精度,并且我需要使用大数字进行操作。有什么办法可以提高精度吗?
给定 APL 中的列表,我想检查每个相邻对是否有序。因此,给定 (a0, a1, ..., an),我想计算: (a0 ≤ a1) ∧ (a1 ≤ a2) ∧ .... ∧ (a[n-1] ≤ an)
至少有一种单字母语言(当然是 q)具有用于进程间通信的功能,这是一种在多台计算机上并行执行长时间运行的进程。这些 session 可以在同一台计算机上,也可以在不同大陆的服务器上。 使用 q,我只需启
来自 Java 和 Python 程序员,优雅而强大的 APL 问题解决方案的语法通常冗长令人困惑。我编写的代码可能看起来同样强大,但为了我的理解,我更喜欢具有良好变量名称的变量 block 。哪个是
我是一名优秀的程序员,十分优秀!