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 |
… | … |