задача
Театр имеет 10 строк, помеченных , A
чтобы J
от передней части к задней, а также 15 мест в каждом ряду, пронумерованных от 1 до 15 слева направо.
Программа использует следующие правила, чтобы выбрать лучшие места.
- Правило 1: Все места в одном бронировании должны быть в одном ряду, рядом друг с другом.
- Правило 2: сиденья должны быть как можно ближе к передней части, а затем как можно ближе к левому краю (нижняя буква, затем наименьшее число)
Напишите функцию, которая принимает число желаемых билетов в качестве целочисленного input ( n
) и выводит лучшие места, доступные в списке длины n
.
Ваша программа должна:
- Выведите,
-1
если 1> Вход или Вход> 15 * - Вывод,
-1
если места не доступны * - Есть функция,
B(n)
которую пользователь может использовать для ввода желаемого количества мест.
* Вы можете вывести -1 в списке, если это облегчает
Примеры
I / O
Вызов B(5)
нового массива должен возвращать [A1, A2, A3, A4, A5]
Calling, B(2)
после чего должен возвращаться [A6, A7]
Calling, B(10)
после чего должен затем возвращаться [B1, B2, ... B9, B10]
Calling B(-1)
должен всегда возвращаться-1
Un-golf Solution 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