maRkの

キャンペーンだとか、Chess.appについてのなにか

ある年代の任意の干支の人は西暦何年生まれか

q.hatena.ne.jp

西暦さえ分かれば、とりあえず年齢計算はできるだろう、ということで作ってみた。
設問の解さえ導ければいいとおもってるので、コアの計算部分のみ

(function () {
  var junishi = [
    '申',
    '酉',
    '戌',
    '亥',
    '子',
    '丑',
    '寅',
    '卯',
    '辰',
    '巳',
    '午',
    '未'
  ];
  var mod, year, res, out = {};
  var start_year = 1970;    // 年代をいれる
  var eto = '亥';           // 干支の指定
  for (var i = 0; i < 10; i++) {
    year = start_year + i;
    mod = year % 12;
    var currentYear = year.toString() + '年';
    out[junishi[mod]] = currentYear;
  }
  res = out[eto] === undefined ? "次の年代のようです" : out[eto];
  alert(start_year + '年代の' + eto + '年は' + res);
})();

これをスクラッチパッドとかコンソールとかで実行する。

Excelで組んだほうが早いっぽいんだが。。計算するとなると、12で割った余りを干支に割り当てすればいいようで、指定した年代分だけオブジェクトにして取り出しすればいいんでないかとか思った。

年代によっては、余りと干支に割り当てした番号がマッチせずに、undef になるようなので、そういう場合は次の年代だということにしておいた。

動作の際に以下で確認した。

干支-年齢早見表

参考: 西暦から干支を求める--Excel・エクセル