Compito
Un teatro ha 10 righe, etichettati A
a J
dalla parte anteriore alla parte posteriore e 15 posti in ogni fila, numerati da 1 a 15 da sinistra a destra.
Il programma utilizza le seguenti regole per scegliere i posti migliori.
- Regola 1: tutti i posti in una prenotazione devono essere nella stessa fila, uno accanto all'altro.
- Regola 2: i posti devono essere il più vicino possibile alla parte anteriore, quindi il più vicino possibile alla sinistra (lettera più bassa, quindi numero più basso)
Scrivi una funzione che accetta il numero di ticket desiderato come input intero ( n
) e genera i migliori posti disponibili in un elenco di lunghezza n
.
Il tuo programma dovrebbe:
- Uscita
-1
se 1> Ingresso o Ingresso> 15 * - Uscita
-1
se i posti non sono disponibili * - Avere una funzione
B(n)
che l'utente può usare per inserire il numero desiderato di posti.
* È possibile generare -1 in un elenco se lo rende più semplice
Esempi
I / O
La chiamata B(5)
su un nuovo array dovrebbe restituire La [A1, A2, A3, A4, A5]
chiamata B(2)
dopo che dovrebbe quindi tornare La [A6, A7]
chiamata B(10)
dopo che dovrebbe quindi tornare La [B1, B2, ... B9, B10]
chiamata B(-1)
dovrebbe sempre tornare-1
Soluzione non golfata 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