12:00pmとは昼なのか夜なのか。
CheckiOでは自分の書いたプログラムを公開できる。
まあ、初心者の未熟なコードなど普通関心ないと思うが、それでも僕のコードにI like this soluthionとコメントをくれた奇特な方がこれまでに二人いた。
なぜかそれは同じタスクだった。何が彼らの関心を惹いたのだろう?
「24時制を12時制表記に切り替えよ」
例)15:45 → 3:45 pm
単純そうに思えるミッションだが、欧米の12時制の表記には一手間かかる。日本では午前0時、午後0時と表現するところを、それぞれ午前12時、午後12時と表現する。
これのどこが一手間かと言えば、動作を考えてみると実感する。
24時制 → 12時制への切り替え
・0時台の場合 → 12時 +am
・1時~11時台の場合 → そのまま +am
・12時台の場合 → そのまま +pm
・13時~23時台の場合 → 12を差し引き +pm
4つの時間帯で表現を変えてやらねばならない。これは面倒くさい。
これが日本式であれば、午前中なら単にamを付加、12時以降は12を差し引いて pmを付加、と条件分岐がひとつあれば完了する。当たり前だが実にスッキリしている。
彼らにとって”12”に数字としての概念はなく、時計盤の原点を表すシンボリックなピクトグラムであり、0時という表現では代用できないのだろう。知らんけど。僕も会話では「れいじ」と発することはなかなかない。
だけど、午前11時の次に午後12時が来るというのは少なくとも国語と算数的には間違っているし、時計表示としては違和感ありまくりだ。
最近は洋物のデジタル時計やスマホが浸透し、この表示を見かけることが増えたが、昔はデジタルと言えばCASIOなど日本製の独擅場だったせいか、日本だけが独自ルールであると気づいたのはわりと最近だった。
僕は当初この4つのケースで分岐するようなプログラムを書いた。
だが、前述したとおり日本式への変換はシンプルだ。よって、まず日本式に書き換えた後で、0時となる場合のみそれを12に置き換える、というアルゴリズムで書き換えてみたら、かなりスッキリした。
興味深いことに、他人のコードをランダムに見てみるとこの4つのケースで分岐している例がかなりを占めていた。
恐らく”0時”とは、外国人にとってValueErrorを起こす枠から外れた表現であり、無意識の抵抗があるから、この発想が突飛に感じられたのではないか。
零時という響きがむしろ日本的な風情を感じる時もある。
この記事が気に入ったらサポートをしてみませんか?