Problem E : Mirror Illusion †問題概要 †鏡がたくさんある部屋で、ある地点から一定の方向を向いているときに何が見えるかを求める。 解法 †シミュレートするだけ。工夫は一つのセルを 4 × 4 に分割したことくらいかな。 問題文中の "No extra lines nor spaces are allowed" にだけ注意。 (三廻部; Mar 16, 2004) 問題文の解釈について †あるページでは No extra lines nor spaces are allowed. という文は「余計な行あるいは空白を出力してはならない.したがって最後の行では改行記号を出力してはならない.」と解釈するようなことが記されているが,本当にそのように解釈すべきかどうかは疑問である.ちなみに三廻部のコードはこの解釈にもとづく. 太字のような解釈になるのは「最後に出力した改行記号により,出力の末尾に新たな行が発生する」ことを根拠としていると思われるが,この根拠自体に問題がある.たとえばラインエディタ(行指向のエディタ)のひとつである vi エディタは,最後の行の末尾に改行記号がなければ警告メッセージを表示する.実際のところ,行指向のエディタでは一般にそれぞれの行の末尾には改行記号が存在することを前提としている.この事実を知っていれば「最後の改行記号はすべからく出力しなければならない」と考えるだろう. さらに言えば,通常の場面において「最後の行で改行記号を出力しない」ことが利益になる場合が生じるとは考えにくい.どちらかといえば不利益になることのほうが多いだろう.したがって,特別な場合を除けば,そのような出力の指示を与える問題を作ること自体がナンセンスであるといえる. 上記の考察から,やはり最後の行であっても改行記号は出力すべきであると解釈するほうが自然だと考える. 補足 この解釈が本当に正しいかどうかは不明である.しかし「最後の行では改行記号を出力してはならない」という解釈が要求されていたとするならば,それは出題方法として不適切といえるだろう.少なくとも問題文の指示はまったく不十分である.[泉,5 Dec 2004] 議論・その他 †
ファイルを添付する †mirror.txt 2034件 [詳細] mikurube_e.c 1736件 [詳細] mirror.out.txt 1966件 [詳細] |