マンガ初心者の方に向けて、コマをどのような順序で読んでいけばよいのかをレクチャーしていく記事です。
こちらの問題を解いていきましょう!
図みたいな漫画のコマ割りを見て「読む順序として正しいものを答えなさい」って言われたら大体みんな正解すると思うんだけど、個人的には色々納得いかないんだよねえ。 pic.twitter.com/yU4rJ63HaE
— chokudai(高橋 直大)🐙🔥@AtCoder社長 (@chokudai) 2023年1月17日
仮定(暫定)
- 各コマは(縦軸・横軸に平行な、以降断りません)長方形であり、簡単のため隣接する 2 つのコマは境界を共有する(つまり隙間は空いていない)とします。
- また全てのコマの和集合も長方形であるとします。
さらに、四畳半型などいくつかのイレギュラーなコマ割りを除外していきたいのですが、ここですべて考えるのは難しいですから、議論が終わってから後出しで仮定を増やしていこうと思います。
コマ割りの定義
コマ全体の集合を葉とする構文木を順序木として作ることで、順序を定義しましょう。
構文木の全てのノードは、コマの集合であってその和集合が長方形を為すものであるとして、あるノード $x$ の子孫を再帰的に定義しましょう!
まずはこれを縦並びに可能な限り細かく分割し、その各成分を $A _ 1, \dots, A _ n$(ただし $1 \le n$)とおきます。*1
しかしこの通りに子を作るわけではありません。ひと手間です。$A _ i$ と $A _ {i + 1}$ がそれぞれ $2$ 要素以上に横並び分割可能であり、かつ $A _ i$ と $A _ {i + 1}$ それぞれの横並び分割の横座標がすべて一致するようなときに辺 $(A _ i, A _ {i + 1})$を張ってできるグラフを $G$ と置きます。
まずは $G$ の各連結成分 $y$ について、それが $x$ と異なるならばノードを付与し、$x$ の子と定義します。次に、$y$ を可能な限り横並び分割し、その各要素 $z$ について、それが $y$ と異なるならば $y$ の子とします。
以上の操作で $x$ の子が追加されなかった場合には、$x$ は葉であると定義します。
追加された仮定
上記の定義はあいまいさがないため、構文木の定義はかならず可能なのですが、各葉が 1 コマのみと対応していることは保証されていません。たとえば四畳半型のコマ割りの場合には、根は子を持ちませんが、根は $5$ つのコマを持ちます。
これが起きないという仮定(もう少し良い形に同値変形できたら教えていただきたいです。)を追加します。
まとめ
いかがでしたか?笑
これで、マンガ初心者の皆様も、安心ですね!
*1:なおコマの集合を縦並びに分割するというのは、その各成分の和集合が長方形であり、かつ横座標の範囲が等しいようなもんです。また $A _ 1, \dots, A _ n$ のように断りなく書いた場合には、縦座標について上から順にならんでいるとします。また横並び分割も同様に定義します。