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