如何取 J 中字符串向量的外积?

如何解决如何取 J 中字符串向量的外积?

我正在尝试在 APL 中复制外积符号:

∘.,⍨ 'x1' 'y1' 'z1' 'x2' 'y2' 'z2' 'x3' 'y3' 'z3'

产生的结果

 x1x1 x1y1 x1z1 x1x2 x1y2 x1z2 x1x3 x1y3 x1z3 
 y1x1 y1y1 y1z1 y1x2 y1y2 y1z2 y1x3 y1y3 y1z3 
 z1x1 z1y1 z1z1 z1x2 z1y2 z1z2 z1x3 z1y3 z1z3 
 x2x1 x2y1 x2z1 x2x2 x2y2 x2z2 x2x3 x2y3 x2z3 
 y2x1 y2y1 y2z1 y2x2 y2y2 y2z2 y2x3 y2y3 y2z3 
 z2x1 z2y1 z2z1 z2x2 z2y2 z2z2 z2x3 z2y3 z2z3 
 x3x1 x3y1 x3z1 x3x2 x3y2 x3z2 x3x3 x3y3 x3z3 
 y3x1 y3y1 y3z1 y3x2 y3y2 y3z2 y3x3 y3y3 y3z3 
 z3x1 z3y1 z3z1 z3x2 z3y2 z3z2 z3x3 z3y3 z3z3 

但我不知道如何在 J 中做类似的事情。我发现这个 Cartesian product in J 帖子我认为足够相似,但我似乎无法将其转换为字符串数组来自一组数字。

在其中改编 Dan Bron 的答案并将其应用于更简单的示例

6 6 $,> { 2 # < 'abc'

给予

aaabac
babbbc
cacbcc
aaabac
babbbc
cacbcc

这几乎是我想要的,但我不知道如何将其概括为以类似的方式使用 2 个字母(或更多)字符串而不是单个字符串。我也不知道如何用 APL 输出等对之间的空格来格式化这些结果,所以它也可能不是正确的路径。

同样,我尝试从该线程中改编 Michael Berry 的回答以获得

9 36 $,"1/ ~ 9 2 $ 'x1y1z1x2y2z2x3y3z3'

给出

x1x1x1y1x1z1x1x2x1y2x1z2x1x3x1y3x1z3
y1x1y1y1y1z1y1x2y1y2y1z2y1x3y1y3y1z3
z1x1z1y1z1z1z1x2z1y2z1z2z1x3z1y3z1z3
x2x1x2y1x2z1x2x2x2y2x2z2x2x3x2y3x2z3
y2x1y2y1y2z1y2x2y2y2y2z2y2x3y2y3y2z3
z2x1z2y1z2z1z2x2z2y2z2z2z2x3z2y3z2z3
x3x1x3y1x3z1x3x2x3y2x3z2x3x3x3y3x3z3
y3x1y3y1y3z1y3x2y3y2y3z2y3x3y3y3y3z3
z3x1z3y1z3z1z3x2z3y2z3z2z3x3z3y3z3z3

再说一次,这几乎是我想要的,这个处理了多个字符,但它们之间仍然没有空格,命令离APL版本的简单性越来越远。

我可以用 ravel 物品更干净地获得相同的结果

,.,"1/ ~ 9 2 $ 'x1y1z1x2y2z2x3y3z3'

我一直在阅读 J 入门书并探索字典中看起来相关的部分,但我仍然很新,所以如果这是一个愚蠢的问题,我深表歉意。我觉得秩合运算符应该能够在这里帮助我,但是我很难按照入门中的解释进行操作。我使用 ": 尝试将字符串格式化为尾随空格,但我也无法弄清楚。这在 APL 中如此简单,这一事实也让我觉得我在 J 中做错了什么,遇到这么多麻烦。

阅读更多的入门书后,我得到了一些我想要的东西

,. 9 1 $ ' ',."2,"1/~ [ ;._2 'x1 y1 z1 x2 y2 z2 x3 y3 z3 '

但这仍然比 APL 版本复杂得多,所以我仍然希望有一种真正优雅和简洁的方法来做到这一点。

解决方法

对于您已经指出的内容,我认为我唯一可以添加的内容是将字符串分隔成您需要装箱的组件。

   <@,"1/~ 9 2 $ 'x1y1z1x2y2z2x3y3z3'
+----+----+----+----+----+----+----+----+----+
|x1x1|x1y1|x1z1|x1x2|x1y2|x1z2|x1x3|x1y3|x1z3|
+----+----+----+----+----+----+----+----+----+
|y1x1|y1y1|y1z1|y1x2|y1y2|y1z2|y1x3|y1y3|y1z3|
+----+----+----+----+----+----+----+----+----+
|z1x1|z1y1|z1z1|z1x2|z1y2|z1z2|z1x3|z1y3|z1z3|
+----+----+----+----+----+----+----+----+----+
|x2x1|x2y1|x2z1|x2x2|x2y2|x2z2|x2x3|x2y3|x2z3|
+----+----+----+----+----+----+----+----+----+
|y2x1|y2y1|y2z1|y2x2|y2y2|y2z2|y2x3|y2y3|y2z3|
+----+----+----+----+----+----+----+----+----+
|z2x1|z2y1|z2z1|z2x2|z2y2|z2z2|z2x3|z2y3|z2z3|
+----+----+----+----+----+----+----+----+----+
|x3x1|x3y1|x3z1|x3x2|x3y2|x3z2|x3x3|x3y3|x3z3|
+----+----+----+----+----+----+----+----+----+
|y3x1|y3y1|y3z1|y3x2|y3y2|y3z2|y3x3|y3y3|y3z3|
+----+----+----+----+----+----+----+----+----+
|z3x1|z3y1|z3z1|z3x2|z3y2|z3z2|z3x3|z3y3|z3z3|
+----+----+----+----+----+----+----+----+----+

如果您想去掉这些框而是插入空格,那么您实际上不会单独拥有字符项,您将得到带有空格的长字符串作为结果的一部分。

这是一个很好的问题,因为它要求您了解 J 中的字符串是向量这一事实。我想从技术上讲,您正在寻找的是 9 9 4 形状,但它看起来不像您期望的那样。

,"1/~ 9 2 $ 'x1y1z1x2y2z2x3y3z3'
x1x1
x1y1
x1z1
x1x2
x1y2
x1z2
x1x3
x1y3
x1z3

y1x1
y1y1
y1z1
y1x2
y1y2
y1z2
y1x3
y1y3
y1z3

z1x1
z1y1
z1z1
z1x2
z1y2
z1z2
z1x3
z1y3
z1z3

x2x1
x2y1
x2z1
x2x2
x2y2
x2z2
x2x3
x2y3
x2z3

y2x1
y2y1
y2z1
y2x2
y2y2
y2z2
y2x3
y2y3
y2z3

z2x1
z2y1
z2z1
z2x2
z2y2
z2z2
z2x3
z2y3
z2z3

x3x1
x3y1
x3z1
x3x2
x3y2
x3z2
x3x3
x3y3
x3z3

y3x1
y3y1
y3z1
y3x2
y3y2
y3z2
y3x3
y3y3
y3z3

z3x1
z3y1
z3z1
z3x2
z3y2
z3z2
z3x3
z3y3
z3z3
   $,"1/~ 9 2 $ 'x1y1z1x2y2z2x3y3z3'
9 9 4
您也可以将这些框转换为符号,这可能更接近您想要的内容,尽管它们确实将反引号指示符作为其表示的一部分。
 s:@<@,"1/~ 9 2 $ 'x1y1z1x2y2z2x3y3z3'
`x1x1 `x1y1 `x1z1 `x1x2 `x1y2 `x1z2 `x1x3 `x1y3 `x1z3
`y1x1 `y1y1 `y1z1 `y1x2 `y1y2 `y1z2 `y1x3 `y1y3 `y1z3
`z1x1 `z1y1 `z1z1 `z1x2 `z1y2 `z1z2 `z1x3 `z1y3 `z1z3
`x2x1 `x2y1 `x2z1 `x2x2 `x2y2 `x2z2 `x2x3 `x2y3 `x2z3
`y2x1 `y2y1 `y2z1 `y2x2 `y2y2 `y2z2 `y2x3 `y2y3 `y2z3
`z2x1 `z2y1 `z2z1 `z2x2 `z2y2 `z2z2 `z2x3 `z2y3 `z2z3
`x3x1 `x3y1 `x3z1 `x3x2 `x3y2 `x3z2 `x3x3 `x3y3 `x3z3
`y3x1 `y3y1 `y3z1 `y3x2 `y3y2 `y3z2 `y3x3 `y3y3 `y3z3
`z3x1 `z3y1 `z3z1 `z3x2 `z3y2 `z3z2 `z3x3 `z3y3 `z3z3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-