7.27 Apply 运算退化为笛卡尔积
使用序列字段连接,计算叉积来生成新序表。
根据任课教师表和课程表,查询每个可能能够安排的老师名字。
Teachers:
| Teacher | Branch | Courses |
|---|---|---|
| Petitti | Matematica | 28,33,30,35 |
| Canales | Apesca | 11,16,12,17,13,18,14,19 |
| Lucero | NavegacionI | 6,11,16,21,7,12,17,22,… |
| Bergamaschi | TecPesc | 1,26,2,27,3,28,4,29,5,30 |
| … | … | … |
Courses:
| ID | Name |
|---|---|
| 1 | lua |
| 2 | maa |
| 3 | mia |
| 4 | jua |
| … | … |
使用 A.news() 函数与其他序列计算叉积。
脚本:
| A | |
|---|---|
| 1 | =T(“Teachers.txt”).run(Courses=Courses.split@cp()) |
| 2 | =T(“Courses.txt”) |
| 3 | =A2.news(A1;ID,Name:Course,Teacher,Courses) |
| 4 | =A3.select(Courses.contain(ID)) |
| 5 | =A4.group(Course;~.(Teacher).concat@c():Teachers) |
A1 导入教师表,并将课程按逗号拆分组成序列
A2 导入课程表
A3 使用 A.news 函数计算课程表和教师表的叉积
A4 选出课程序列包含当前课程 ID 的记录
A5 按课程分组汇总,将教师序列用逗号相连组成教师字段
运行结果:
| Course | Teachers |
|---|---|
| jua | Bergamaschi,Puebla,Jimenez |
| jub | Lucero,Mazza,Puebla,Chiatti,Jimenez,Luceroo |
| juc | Canales,Lucero,Mazza,Puebla,Chiatti,Luceroo |
| … | … |
