忙しいエレベータのルール

初稿 2023年7月11日
著者 douki

目的

  • できるだけ皆が、平等に次の階へ進めるようにする。

ルール

1 前提

  • エレベータが空であるにも拘らず、エレベータに乗れない人は、エレベータ待ちの列に並んではいけない。

  • 最上階(最下階)には、上り(下り)エレベータを待つ人はいない。

  • 上り(下り)エレベータは、始点である最下階(最上階)から終点である最上階(最下階)まで移動し、その際、各階に自動的に止まる。

  • 終点に到達したエレベータは、乗客を降ろした後、始点まで一気に移動する。

  • 煩雑さを避けるため、エレベータは、上り専用、下り専用に分かれる。

  • 4つの列がある。ある階に到着したエレベータについて…

    1. エレベータ内の列。その階にエレベータが到着したとき、すでにエレベータ内にいる人の列。(=A)

    2. エレベータ前の列。その階で、エレベータを待つ人の列。(=B)

    3. エレベータ内の列。その階で、新しくエレベータに乗った人の列。(=C)

    4. エレベータ前の列。その階で、一時的にエレベータを降りた人の列。(=D)

2 エレベータが止まったときにすること

  1. その階で降りたい人が降りる。

  2. もしも、その階が終点ならば、全ての人が降りる。

3 エレベータが次の階へ移動する条件

次の2つの条件のどちらかが満たされること

  • 「Bに人がいない」

  • 「Aの中の誰かが降りることで、Bの中から新たにCに合流できる人がいない」

4 エレベータが次の階へ移動するときにすること

  1. Cの最後尾にAの先頭が合流した列を、新しいAとする。

  2. Bの最後尾にDの最後尾が合流した列を、新しいBとする。

5 「エレベータが次の階へ移動する条件」が満たされないとき

5.1 初期条件

  • Bの先頭の人(=b)。

5.2 「エレベータが次の階へ移動する条件」が満たされるまで繰り返すこと

  1. もし「Aの最後尾から順に何人かをエレベータから降ろすことで、bがエレベータに乗れる」ならば…

    1. bが乗れるようになるまで、Aの最後尾から順に降り、降りた順でDの最後尾に合流する。

    2. bがCの最後尾に合流する。

  2. そうでないならば…

    1. bの真後ろの人を、新しいbとする。

(おわり)


この記事が気に入ったらサポートをしてみませんか?