Tâche
Un théâtre a 10 rangées, marquées A
à J
partir de l' avant vers l' arrière, et les 15 sièges de chaque rangée, numérotés de 1 à 15 de gauche à droite.
Le programme utilise les règles suivantes pour choisir les meilleurs sièges.
- Règle 1: Tous les sièges d'une réservation doivent être dans la même rangée, côte à côte.
- Règle 2: Les sièges doivent être le plus près possible de l'avant, puis aussi près de la gauche que possible (lettre la plus basse, puis numéro le plus bas)
Écrivez une fonction qui prend le nombre de tickets voulu comme entrée entière ( n
), et sort les meilleurs sièges disponibles dans une liste de longueur n
.
Votre programme devrait:
- Sortie
-1
si 1> Entrée ou Entrée> 15 * - Sortie
-1
si les sièges ne sont pas disponibles * - Avoir une fonction
B(n)
que l'utilisateur peut utiliser pour saisir le nombre de sièges souhaité.
* Vous pouvez afficher le -1 dans une liste si cela facilite
Exemples
E / S
L'appel B(5)
sur un nouveau tableau doit renvoyer l' [A1, A2, A3, A4, A5]
appel B(2)
après cela devrait alors retourner l' [A6, A7]
appel B(10)
après cela devrait alors retourner l' [B1, B2, ... B9, B10]
appel B(-1)
devrait toujours retourner-1
Solution non golfée 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