Skip to content

Instantly share code, notes, and snippets.

@huogerac
Created June 8, 2023 14:14
Show Gist options
  • Save huogerac/07eb9b3a05d66915217fa519ecc898a2 to your computer and use it in GitHub Desktop.
Save huogerac/07eb9b3a05d66915217fa519ecc898a2 to your computer and use it in GitHub Desktop.
"""
14 <-- \o/
7
T
"""
e1_posicoes = ['A', '', '', '']
def obter_posicao_atual():
# e1_posicoes = ['', '', 'A', '']
index = 0
for item in e1_posicoes:
if item != '':
index += 1
return index
def chamar(andar_chamado: int):
sentido = '+'
step = 1
# if sentido == "-":
# numero_sentido = -1
index = obter_posicao_atual()
if index < andar_chamado:
sentido = '-'
step = -1
return [andar for andar in range(index+1, andar_chamado+1, step)]
def teste_subir_elevador():
"""
elevador está 0
chamador está no 3
"""
global e1_posicoes
e1_posicoes = ['A', '', '', '']
resposta = chamar(3)
assert resposta == [1, 2, 3]
# teste_if_baby_needs_cadeirinha
def teste_descer_elevador():
"""
elevador está 2
chamador está no 1
"""
global e1_posicoes
e1_posicoes = ['', '', 'A', '']
resposta = chamar(1)
assert resposta == [1]
def teste_descer_elevador_3_andares():
"""
elevador está 3
chamador está no 0
"""
global e1_posicoes
e1_posicoes = ['', '', '', 'A']
resposta = chamar(0)
assert resposta == [2, 1, 0]
@huogerac
Copy link
Author

huogerac commented Jun 9, 2023

Ideia de testes para 1 elevador:

"""

1 Elevador
- elevador no 0, o 7 andar faz a chamada 
    -> tem q subir 7
- elevador está no 14, o 7 andar chama 
    -> tem q descer 7
- elevador está  no 0, chama do 0, pede 7o. andar
    -> abre a porta e sobe 7
- elevador está no 1, o 7 andar chama, pede o 9
    -> sobe 2
- elevador está no 1, o 7 andar chama, pede o 0 e o 3
    -> desce 4, abre a porta, desce até o zero
- elevador está no 0, o 7 andar chama, pede o 0 e 0 17
    -> desce até o zero, sobe tudo até 17
- elevador está no 0, o 9o. chama, depois o 7o. chama
    -> elevador vai até o 9 e depois desce até o 7, depois o 0
- elevador está no 0, o 7o. chama, depois o 9o. chama
    -> se o elevador está subindo e ainda não chegou no 7o.
    -> elevador vai até o 9 e depois desce até o 7, depois o 0
    -> se já parou no 7o. desce até o 0, depois vai para o 9o.
- elevador está no 4o. 7 chama, 15 chama, e depois o 2 chama
    -> elevador vai até o 15, vem descendo parando no 7, 2 e 0
- elevador está no 0, 7 chama e no meio da descida, o 9o. chama e depois o 2 chama
    -> se o elevador está antes do 2o, para no 2 e depois 0, volta para o 9
    -> se já passou o 2, vai até o 0, vai para o 9, depois para no 2 e depois 0

Ideia de Solução:
- uma lista representando a quantidade de andares com parada de elevadores
- uma fila (FIFO) para representar as chamadas de elevador
- uma representação do estado atual do elevador e um mecanismo para pegar a
  próxima ação da fila de chamadas e mover o elevador

"""


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment