空座位

 

问题

有一个能容纳 1000 人的餐馆,他们将座位按顺序编号并记录在了数据库表中,每个客人就坐之后,服务员就会在座位表中标记一下,当客人离开后,就删除这个标记。某一时刻下的该表如下:

imagepng

由于经常有客人是多位一起,需要坐到连续的座位上,为方便寻找这种连续的座位,餐馆需要一个同步的“空闲座位片区表”,用于记录当前的空闲座位有哪些区段,以及每个区段的位置。

请帮助餐馆的管理员,由上面的座位表生成空闲座位片区表。

思路

大致思路:合并相同的内容,集算器中的分组函数可以解决,而只合并相邻的相同内容,group 函数带有不排序参数可选,不排序分组就可以完美的解决这个问题。

代码

A
1 =file("C:\\txt\\Seatings.txt").import@t() 座位表
2 =A1.group@o(Availability;~.count():NumberOfSeats,~.SeatNo:StartingSeatNo) 按是否有客人进行不排序分组
3 =A2.select(Availability) 选出空闲的座位片区

结果

imagepng