任务
一个剧场有10行,标记A
,以J
从前向后,并且在每行15个席位,编号从1到15从左到右。
该计划使用以下规则选择最佳座位。
- 规则1:一次预订中的所有座位必须在同一行中,彼此相邻。
- 规则2:座位必须尽可能靠近前排,然后尽可能靠近左排(最低字母,然后最低数字)
编写一个函数,该函数将所需的票数作为整数输入(n
),并在length列表中输出可用的最佳座位n
。
您的程序应:
- 输出
-1
,如果1>输入或输入> 15 * -1
如果没有座位,则输出*- 具有
B(n)
用户可以用来输入所需座位数的功能。
*如果更容易,您可以在列表中输出-1
例子
输入输出
调用B(5)
一个新的阵列上应返回[A1, A2, A3, A4, A5]
调用B(2)
之后应该然后返回[A6, A7]
调用B(10)
之后应该然后返回[B1, B2, ... B9, B10]
调用B(-1)
应始终返回-1
Ungolf解决方案Python
Theatre = [ [False] * 16 ] * 11
def B(n):
if 0 <= n <= 15:
for i in range(10):
for j in range(15-n+1):
try:
if not Theatre[i][j]:
if not Theatre[i][j + n]:
row = i
start = j
List = []
for q in range(n):
List.append(chr(row + 65) + str(start + q + 1))
Theatre[row][start + q] = True
return List
except:
break
return -1