2011年1月4日火曜日

干支の求め方をプログラミングで求めてみた。

さて、ちょいと気がかりだったので干支の求め方を考えてみた。(今回はJavaで書きました)

  1. まず、十二支と十干の配列を用意します。

    //十二支名の配列
    String theTwelveHorarySignNames[] ={'子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥'};
    //十干名の配列
    String theCelestialStemNames[] ={'甲','乙','丙','丁','戊','己','庚','辛','壬','癸'};

    あと、求める年はint型のyearとしておきます。

  2. 次に年から十二支の番号と十干の番号を求めます。

    十二支は西暦に8を足して12で割った余りが番号となります。十干は西暦に6を足して10で割った余りが番号となります。

    //十二支番号
    int theTwelveHorarySignNumber =(year+8)%12;
    //十干番号
    int theCelestialStem = (year+6)%10;
  3. そしてその番号を元に十二支と十干を求めます。

    //十二支名
    String theTwelveHorarySignName = theTwelveHorarySignNames[theTwelveHorarySignNumber];
    //十干名
    String theCelestialStemName = theCelestialStemNames[theCelestialStemNumber]
  4. 干支は十干、十二支の順なので文字列を合わせます。

    //干支
    String theChineseAstrology = theTwelveHorarySignName+theCelestialStemName;

これで干支が求められた筈です……。

書いてから思ったけれど、何これ……手取り足取り過ぎて気持ち悪い。てか、誰に向けて書いているのか……気持ち悪いにも程がある……orz