忙しいエレベータのルール
初稿 2023年7月11日
著者 douki
目的
できるだけ皆が、平等に次の階へ進めるようにする。
ルール
1 前提
エレベータが空であるにも拘らず、エレベータに乗れない人は、エレベータ待ちの列に並んではいけない。
最上階(最下階)には、上り(下り)エレベータを待つ人はいない。
上り(下り)エレベータは、始点である最下階(最上階)から終点である最上階(最下階)まで移動し、その際、各階に自動的に止まる。
終点に到達したエレベータは、乗客を降ろした後、始点まで一気に移動する。
煩雑さを避けるため、エレベータは、上り専用、下り専用に分かれる。
4つの列がある。ある階に到着したエレベータについて…
エレベータ内の列。その階にエレベータが到着したとき、すでにエレベータ内にいる人の列。(=A)
エレベータ前の列。その階で、エレベータを待つ人の列。(=B)
エレベータ内の列。その階で、新しくエレベータに乗った人の列。(=C)
エレベータ前の列。その階で、一時的にエレベータを降りた人の列。(=D)
2 エレベータが止まったときにすること
その階で降りたい人が降りる。
もしも、その階が終点ならば、全ての人が降りる。
3 エレベータが次の階へ移動する条件
次の2つの条件のどちらかが満たされること
「Bに人がいない」
「Aの中の誰かが降りることで、Bの中から新たにCに合流できる人がいない」
4 エレベータが次の階へ移動するときにすること
Cの最後尾にAの先頭が合流した列を、新しいAとする。
Bの最後尾にDの最後尾が合流した列を、新しいBとする。
5 「エレベータが次の階へ移動する条件」が満たされないとき
5.1 初期条件
Bの先頭の人(=b)。
5.2 「エレベータが次の階へ移動する条件」が満たされるまで繰り返すこと
もし「Aの最後尾から順に何人かをエレベータから降ろすことで、bがエレベータに乗れる」ならば…
bが乗れるようになるまで、Aの最後尾から順に降り、降りた順でDの最後尾に合流する。
bがCの最後尾に合流する。
そうでないならば…
bの真後ろの人を、新しいbとする。
(おわり)
この記事が気に入ったらサポートをしてみませんか?