Zadanie
Teatr ma 10 rzędów, oznaczonych A
na J
od przodu do tyłu, a 15 miejsc w każdym wierszu, ponumerowanych od 1 do 15, od lewej do prawej.
Program korzysta z następujących zasad, aby wybrać najlepsze miejsca.
- Zasada 1: Wszystkie miejsca w jednej rezerwacji muszą znajdować się w tym samym rzędzie obok siebie.
- Zasada 2: Siedzenia muszą znajdować się jak najbliżej przodu, a następnie możliwie jak najbliżej lewej (najniższa litera, a następnie najniższa liczba)
Napisz funkcję, która przyjmuje liczbę żądanych biletów jako liczbę całkowitą ( n
) i wyświetla najlepsze miejsca dostępne na liście długości n
.
Twój program powinien:
- Wyjście,
-1
jeśli 1> Wejście lub Wejście> 15 * - Dane wyjściowe,
-1
jeśli siedzenia nie są dostępne * - Mieć funkcję
B(n)
, za pomocą której użytkownik może wprowadzić żądaną liczbę miejsc.
* Możesz wypisać -1 na liście, jeśli to ułatwi
Przykłady
I / O
Wywołanie B(5)
nowej tablicy powinno oddzwonić [A1, A2, A3, A4, A5]
Wywołanie B(2)
po tym powinno następnie powrócić [A6, A7]
Wywołanie B(10)
po tym powinno następnie powrócić [B1, B2, ... B9, B10]
Wywołanie B(-1)
powinno zawsze powrócić-1
Rozwiązanie bez golfa 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