image

Q1: MoveFlagでフラグの移動先をMoveFlagにできるか Q2: MoveFlagにインクリメントトークンが置かれていて {2} 以上になっており、かつ移動元のコマンドにフラグが4つ置かれている状態の時、そのコマンドをもう一方のフラグの移動先として選ぶことができるか Q3: また、上記ができる場合、2つの移動元コマンドが4つのフラグで埋まっており、移動先をお互いが選ぶようなデッドロックのような状況の時は移動可能かどうか

  • MoveFlagの効果を詳細に書くと以下のようになります。
    • 1: このコマンド以外のコマンドを1枚選ぶ(X)。
    • 2: Xの上にあるフラグ1個を選ぶ(A)
    • 3: X以外のコマンドを1枚選ぶ(Y)。
    • 4: AをYの末尾へ移動する。
    • 5: 1〜4を{1}回繰り返す。
  • Q1: MoveFlagでフラグの移動先をMoveFlagにできるか
    • できます
  • Q2: MoveFlagにインクリメントトークンが置かれていて {2} 以上になっており、かつ移動元のコマンドにフラグが4つ置かれている状態の時、そのコマンドをもう一方のフラグの移動先として選ぶことができるか
    • 2回の移動は順次行われるので、最初Xに4枚フラグが乗っていたとしても、MoveFlagの1回目の実行でXのフラグが3枚に減ったのなら、2回目の実行でXを移動先にできます
  • Q3: 2つの移動元コマンドが4つのフラグで埋まっており、移動先をお互いが選ぶようなデッドロックのような状況の時は移動可能か
    • XとYがそれぞれ4枚のフラグを持っている場合、XとYのフラグを交換するような移動はできません。
    • 2回の移動は順次行われます。「1回目の実行」に注目しましょう
      • XとYがそれぞれ4枚のフラグを持っている場合、1回目の実行でXもYも既にフラグが4枚あるから移動先に選べません。