仕事
劇場には前から後ろにラベルが付けA
られた10列があり、J
各列には15席があり、左から右に1から15の番号が付けられています。
プログラムは、次のルールを使用して最適な座席を選択します。
- 規則1:1つの予約の座席はすべて、同じ列に並んでいる必要があります。
- 規則2:座席は、可能な限り正面に近く、次に可能な限り左側に配置する必要があります(最低文字、最低番号)
整数入力(n
)として必要なチケットの数を取り、lengthのリストで利用可能な最適な座席を出力する関数を作成しますn
。
あなたのプログラムは:
-1
1>入力または入力> 15 *の場合に出力-1
座席が利用できない場合に出力*B(n)
ユーザーが希望の座席数を入力するために使用できる機能があります。
* -1を簡単に出力できる場合は、リストに-1を出力できます
例
I / O
呼び出すB(5)
新しい配列にして返す必要があります[A1, A2, A3, A4, A5]
呼び出すB(2)
ことがその後返す必要があります後に[A6, A7]
呼び出すB(10)
ことがその後返す必要があります後に[B1, B2, ... B9, B10]
呼び出すとB(-1)
、常に返す必要があります-1
ゴルフされていないソリューション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