Aufgabe
Ein Theater hat 10 Zeilen, etikettieren , A
um J
von vorne nach hinten, und 15 Sitze in jeder Zeile der Nummern 1 bis 15 von links nach rechts.
Das Programm verwendet die folgenden Regeln, um die besten Plätze auszuwählen.
- Regel 1: Alle Sitzplätze in einer Buchung müssen in derselben Reihe nebeneinander liegen.
- Regel 2: Die Sitze müssen so weit vorne wie möglich und dann so weit links wie möglich sein (niedrigster Buchstabe, dann niedrigste Zahl)
Schreiben Sie eine Funktion, die die Anzahl der gewünschten Tickets als Ganzzahleingabe ( n
) verwendet und die besten verfügbaren Plätze in einer Längenliste ausgibt n
.
Ihr Programm sollte:
- Ausgang,
-1
wenn 1> Eingang oder Eingang> 15 * - Ausgabe,
-1
wenn die Plätze nicht verfügbar sind * - Haben Sie eine Funktion
B(n)
, mit der der Benutzer die gewünschte Anzahl von Plätzen eingeben kann.
* Sie können -1 in einer Liste ausgeben, wenn dies einfacher ist
Beispiele
I / O
Das Aufrufen B(5)
eines neuen Arrays sollte zurückgeben. Das [A1, A2, A3, A4, A5]
Aufrufen B(2)
danach sollte zurückgeben. Das [A6, A7]
Aufrufen B(10)
danach sollte zurückgeben. Das [B1, B2, ... B9, B10]
Aufrufen B(-1)
sollte immer zurückgeben-1
Ungolfed 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