Tarefa
Um teatro tem 10 linhas, marcadas A
para J
de frente para trás, e 15 assentos em cada linha, numerados de 1 a 15 da esquerda para a direita.
O programa usa as seguintes regras para escolher os melhores assentos.
- Regra 1: Todos os assentos em uma reserva devem estar na mesma fila, próximos um do outro.
- Regra 2: Os assentos devem estar o mais próximo possível da frente e, depois, o mais próximo possível da esquerda (letra mais baixa e número mais baixo)
Escreva uma função que considere o número de tickets desejados como uma entrada inteira ( n
) e produz os melhores assentos disponíveis em uma lista de comprimento n
.
Seu programa deve:
- Saída
-1
se 1> Entrada ou Entrada> 15 * - Saída
-1
se os assentos não estiverem disponíveis * - Tem uma função
B(n)
que o usuário pode usar para inserir o número desejado de assentos.
* Você pode imprimir o -1 em uma lista se isso facilitar
Exemplos
I / O
A chamada B(5)
em uma nova matriz deve retornar A [A1, A2, A3, A4, A5]
chamada B(2)
depois disso deve retornar A [A6, A7]
chamada B(10)
depois disso deve retornar A [B1, B2, ... B9, B10]
chamada B(-1)
sempre deve retornar-1
Solução sem golfe 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