幻想郷の紀年法を算出する

平成最後の日です。 ということで、何かと暦を気にする時分なわけですが、ここに来て幻想郷紀年法に基づく対応表というページが404 Not Foundとなってしまっているようです。 そこで、自分なりに西暦から幻想郷の紀年法に変換する「仕組み」を作れないか、と考えました。 ここで「仕組み」と言ったのは、幻想郷の紀年法にもルールがあるため、プログラムで実装できるのではないか、と考えたためです。 改めてルールを書き出してみると、以下のようになります。
  • : 1885年を第零季とし(東方Wikiより)て、以降1年毎に1増加(インクリメント)。例えば、2019年は2019-1885=134のため、第百三十四季となる。
  • : 年は「▲と■と★の年」という形式で記述する。例えば、1885年は「日と春と土の年」、2019年は「星と秋と金の年」となる。なお、「▲」「■」「★」に当てはめられるのは下記を参照。
    • ▲に当たるグループ: 日、月、星(三精)
    • ■に当たるグループ: 春、夏、秋、冬(四季)
    • ★に当たるグループ: 土、火、水、木、金(五行)
      • 「▲」「■」「★」は最初の文字から1年毎に1つずつずれて、最後まで行ったら最初に戻る
        • 例: 「日と春と土の年」→「月と夏と火の年」→「星と秋と水の年」→「日と冬と木の年」→「月と春と金の年」→「星と夏と土の年」→…
        • このルールのため、60年で表記が一巡する
  • 特殊事項:
    • 1885年より前(1884年以下)は計算不可としてエラーにします
    • 「日と春と土の年」に該当する年(1885年以降、60年おき)は幽霊が大量発生する年として、特殊表示を行う(花映塚の2005年も該当)
これを実装したのが下記ページとなります。 元号の境界付近でもぞもぞと作ったので、メインカラーは紫にしました。胡散臭そう。 実装してみた感想ですが、そこそこシンプルなルールでありつつもエラー処理と特殊事項があるため、プログラムの練習には良い教材かもしれないと感じました。
1885年より前の年を変換しようとした際に表示されるエラー
1885年より前の年を変換しようとした際に表示されるエラー「明治十七年より前の上海アリス」
エラー処理も「ただのエラーです」だとちょっとアルコール分が足りないので、固い頭をひねってほんの少しだけ柔らかくしました。 あと、上記ルールで三精・四季・五行と並んでいるので、ここを普通の命名規則にすると勿体無いですよね、という謎の理論で変数名をちょこっと細工しました。
    const sangetsusei = ["日", "月", "星"]
    const eiki = ["春", "夏", "秋", "冬"]
    const patchouli = ["土", "火", "水", "木", "金"]
はい。サニー・ルナ・スターと、映姫様と、そしてパチュリーさんです。これでほんの少しだけ、幻想分を足しました。 折角の機会なので、少しでも幻想分の足しになれば良いなぁ、と思います。 以上を以て、私の平成最後のプログラミングは幻想郷の紀年法を算出するJavaScriptになりました。 余談ですが、私は2004年に東方を知ったので、今年で15年になります。平成の半分は東方と共に歩んだと言えると思うので、自分らしい「平成最後」なのではないか、と思います。

参考

この記事を書いた人