Existe sim a possibilidade de haverem dois botões carregados ao mesmo tempo... quanto mais não seja porque o universo está cheio de idiotas e a lei de Murphy existe.
Como tal, adicionar um buzzer para quando um chico esperto estiver a carregar em dois botões ao mesmo tempo seria algo que levaria uma ponto extra se fosse eu o professor.
A tua questão, segundo percebi, tem mais a ver com a maneira do elevador optimizar a viagem e não necessariamente de carregar em dois botões ao "mesmo tempo". Ou seja, num prédio com 10 andares, a primeira pessoa carrega para ir para o oitavo andar e a segunda pessoa carrega para ir para o terceiro andar. Obviamente que não queres levar a pessoa ao oitavo e depois baixar ao terceiro.
Como tal, se eu estivesse na tua situação fazia algo deste género, a primeira pessoa a carregar no andar define o sentido de movimento e esse andar é guardado num vector. Todos os outros níveis que sejam inseridos para o elevador parar, são colocados nesse mesmo vector por ordem de chegada. Se houver um andar que esteja em sentido contrário de movimento, vai para outro vector.
Ao fechar a porta, pegas no vector que indica as paragens no sentido em que vais viajar e ordenas por ordem crescente ou decrescente. E depois tens os níveis onde tens de parar já ordenados. Ao chegar ao final desse vector, se houver níveis para serem atingidos abaixo de onde começaste, o elevador começa a descer para baixo.
Sinceramente, eu não sei como pegaria nisto em Ladder... mas com uma linguagem textual parece-me até bastante simples.
No entanto, porque não mudar as coisas um pouco e em vez de fazeres um elevador normal, fazeres um elevador moderno onde as pessoas não chamam o elevador, mas apenas carregam no andar para onde querem ir. Isto, obviamente, apenas funciona com mais do que um elevador.
↧