Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2019-01-17

九星の取得のナゾ

| 14:16

 マイナビ連載40目は、迷路ゲームでした。

https://news.mynavi.jp/article/nadeshiko-40/

 ゲームですよ! やった~☆

 コレを発展させると、ド○クエが作れますよ♪

 して、タイムリーに正月中、Ⅲ、Ⅰ、Ⅱとやって、はⅤをやってるワタシです(爆)

 やっぱゲームは、こうゆうのでいいんだよね~。

 3Dでリアルタイムに戦うとかムリヽ(;´Д`)ノ



 しかしは、ゲームとはマッタク関係なく、年前にやってたカレンダーに、度は九星を表示したいとゆう話し。

 歴註に二黒とか九紫とか書いているアレですね。

 例によってウィキペディアさまに教えてもらうと、年の九星は簡単でした。

年家九星=11-西暦年%9
もし、年家九星≧10ならば、
  年家九星=年家九星-1

 コレで算出出来るようです。

 しかし、日は……?

 どうも、なかなかフクザツです。

https://ja.wikipedia.org/wiki/%E4%B9%9D%E6%98%9F#%E6%97%A5%E3%81%AE%E4%B9%9D%E6%98%9F

 ゆってることがよく分からん(´д`;

 しかも、この教えのとうりにやってみたところ、どうもカレンダーと合いません。まあ、所詮占いなので、流派によって若干異なるラシイんですが。

http://d.hatena.ne.jp/nobml/20121231

 ここのがとても分かりやすくてうまくいきました☆

 この記事はの後改訂されているのですが、改訂後の計算方法というのがウィキペディアさまのに書いてあるのと同様で、ウチのカレンダーとは合わないんです。(今年言うタブン11/23の切替日から合わなくなる)

 我が家のカレンダーが時代遅れなのか……?Σ(゜д゜;

 別なカレンダーも見てみたい……

#-----------------------------------------------------------------------
#  九星取得
# https://ja.wikipedia.org/wiki/%E4%B9%9D%E6%98%9F
# http://d.hatena.ne.jp/nobml/20121231
#-----------------------------------------------------------------------
●(日付を|日付の|日付で)日家九星取得
  九星=「一白水星,二黒土星,三碧木星,四緑木星,五黄土星,六白金星,七赤金星,八白土星,九紫火星」を「,」で区切る。
  データ=配列。 #修正ユリウス日,干支,切替日,開始九星
  日付U=日付の修正ユリウス日取得。
  日付を「/」で区切る。
  西暦年=それ[0]

  6
    C=回数-1。年=西暦年+(INT(C/2)-1)。
    データ[C]=配列。
    もし、C%2=0ならば、
      二至=「夏至」。データ[C][3]=8。
    違えば、
      二至=「冬至」。データ[C][3]=0。
    ここまで。
   # 日家九星を求めたい日を含む年、およびの前年・翌年の夏至と冬至の修正ユリウス日と干支(No)を求める。
    データ[C][0]=年の二至を二十四節気日付取得して、それ修正ユリウス日取得。
    データ[C][1]=(それ+50)%60。
   # 陽遁・陰遁の切替日の日付を求める。
    もし、データ[C][1]≦28ならば、
      データ[C][2]=データ[C][0]-データ[C][1]。
    違えばもし、データ[C][1]≧32ならば、
      データ[C][2]=データ[C][0]+(60-データ[C][1])。
    違えば、
      データ[C][2]=データ[C][0]+(30-データ[C][1])。
      もし、二至=「夏至」ならば、データ[C][3]=2。
      違えば、データ[C][3]=6。
      # 閏が連続した場合の調整
      もし、C>0ならば、
       もし、データ[C][2]-データ[C-1][2]=210でなければ、
        データ[C-1][2]=データ[C-1][2]-30。
        もし、二至=「夏至」ならば、データ[C-1][3]=0。
        違えば、データ[C-1][3]=8。
       ここまで。
      ここまで。
    ここまで。
  ここまで。
  # 見逃された閏の調整。
  4
    C=回数。
    もし、データ[C][2]-データ[C-1][2]=240ならば、
      データ[C][2]=データ[C][2]-30。
      もし、C%2=1ならば、データ[C][3]=6。
      違えば、データ[C][3]=2。
    ここまで。
  ここまで。

  # 求める日付の切替日。
  もし、日付U≧データ[3][2]ならば、
    切替日=データ[3][2]。開始九星=データ[3][3]。陰陽=1。
  違えばもし、日付U<データ[2][2]ならば、
    切替日=データ[1][2]。開始九星=データ[1][3]。陰陽=1。
  違えば、
    切替日=データ[2][2]。開始九星=データ[2][3]。陰陽=0。
  ここまで。

  # 求める。
  もし、陰陽=1ならば、
    九星[(日付U-切替日+開始九星)%9]で戻る。
  違えば、
    もし、開始九星-(日付U-切替日)%9<0ならば、九星[開始九星-(日付U-切替日)%9+9]で戻る
    違えば、九星[開始九星-(日付U-切替日)%9]で戻る。
  ここまで。
ここまで。
#-----------------------------------------------------------------------
●(日付を|日付の|日付で)日家九星取得_改
  九星=「一白水星,二黒土星,三碧木星,四緑木星,五黄土星,六白金星,七赤金星,八白土星,九紫火星」を「,」で区切る。
  データ=配列。 #修正ユリウス日,干支,切替日,開始九星
  日付U=日付の修正ユリウス日取得。
  日付を「/」で区切る。
  西暦年=それ[0]

  6
    C=回数-1。年=西暦年+(INT(C/2)-1)。
    もし、C%2=0ならば、二至=「夏至」
    違えば、二至=「冬至」
    データ[C]=配列。
   # 日家九星を求めたい日を含む年、およびの前年・翌年の夏至と冬至の修正ユリウス日と干支(No)を求める。
    データ[C][0]=年の二至を二十四節気日付取得して、それ修正ユリウス日取得。
    データ[C][1]=(それ+50)%60。
   # 陽遁・陰遁の切替日の日付を求める。
    もし、データ[C][1]≦28ならば、データ[C][2]=データ[C][0]-データ[C][1]。
    違えば、データ[C][2]=データ[C][0]+(60-データ[C][1])。
  ここまで。
  # 閏を置くかどうかを判断する。
  4
    C=回数。
    もし、データ[C][2]-データ[C-1][2]=240ならば、
      データ[C][2]=データ[C][2]-30。
      もし、C%2=1ならば、データ[C][3]=6。
      違えば、データ[C][3]=2。
    違えば、
      もし、C%2=1ならば、データ[C][3]=0。
      違えば、データ[C][3]=8。
    ここまで。
  ここまで。

  # 求める日付の切替日。
  もし、日付U≧データ[3][2]ならば、
    切替日=データ[3][2]。開始九星=データ[3][3]。陰陽=1。
  違えばもし、日付U<データ[2][2]ならば、
    切替日=データ[1][2]。開始九星=データ[1][3]。陰陽=1。
  違えば、
    切替日=データ[2][2]。開始九星=データ[2][3]。陰陽=0。
  ここまで。

  # 求める。
  もし、陰陽=1ならば、
    九星[(日付U-切替日+開始九星)%9]で戻る。
  違えば、
    もし、開始九星-(日付U-切替日)%9<0ならば、九星[開始九星-(日付U-切替日)%9+9]で戻る
    違えば、九星[開始九星-(日付U-切替日)%9]で戻る。
  ここまで。
ここまで。
#-----------------------------------------------------------------------
●(日付を|日付の|日付で)年家九星取得
  九星=「一白水星,二黒土星,三碧木星,四緑木星,五黄土星,六白金星,七赤金星,八白土星,九紫火星」を「,」で区切る。
  日付を「/」で区切る
  西暦年=それ[0]
  立春=西暦年の「立春」を二十四節気日付取得。
  もし、(日付をUNIXTIME変換)<(立春をUNIXTIME変換)ならば、西暦年=西暦年-1。
  数=11-西暦年%9-1。
  もし、数≧9ならば、数=数-9。
  九星[数]で戻る
ここまで。
#-----------------------------------------------------------------------
#和時計の時は月/日のみ返したが、年/月/日を返すよう変更している。
●(年のSを|Sで)二十四節気日付取得
  節気=["小寒","大寒","立春","雨水","啓蟄","春分","清明","穀雨","立夏","小満","芒種","夏至","小暑","大暑","立秋","処暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
  データ=[{"D":6.3811,"A":0.242778},{"D":21.1046,"A":0.242765},{"D":4.8693,"A":0.242713},{"D":19.7062,"A":0.242627},{"D":6.3968,"A":0.242512},{"D":21.4471,"A":0.242377},{"D":5.6280,"A":0.242231},{"D":20.9375,"A":0.242083},{"D":6.3771,"A":0.241945},{"D":21.9300,"A":0.241825},{"D":6.5733,"A":0.241731},{"D":22.2747,"A":0.241669},{"D":8.0091,"A":0.241642},{"D":23.7317,"A":0.241654},{"D":8.4102,"A":0.241703},{"D":24.0125,"A":0.241786},{"D":8.5186,"A":0.241898},{"D":23.8896,"A":0.242032},{"D":9.1414,"A":0.242179},{"D":24.2487,"A":0.242328},{"D":8.2396,"A":0.242469},{"D":23.1189,"A":0.242592},{"D":7.9152,"A":0.242689},{"D":22.6587,"A":0.242752}]。
  年を「/」で区切る。
  年=それ[0]
  数=節気からSを配列検索。
  もし、数<4ならばY=年-1。
  違えばY=年。
  月=((数/2)を切捨)+1。
  日=データ[数]["D"]とデータ[数]["A"]でYの節気計算。
  「{年}/{月}/{日}」で戻るここまで。

●(DとAでYの)節気計算
  INT(D+(A*(Y-1900))-INT((Y-1900)/4))
ここまで。
#-----------------------------------------------------------------------
●(日付を|日付の|日付で)修正ユリウス日取得
  日付を「/」で区切る
  y=それ[0]。m=それ[1]。d=それ[2]。
  もし、(m=1)または(m=2)ならば、
    y=y-1。m=m+12。
  ここまで。
  (INT(365.25*y))+INT(y/400)-INT(y/100)+INT(30.59*(m-2))+d-678912で戻るここまで。
#-----------------------------------------------------------------------

#以下はテスト
日付=「2019/12/31」
日付の年家九星取得して表示。
日付の日家九星取得して表示。
日付の日家九星取得_改して表示

https://nadesi.com/doc3/index.php?%E3%81%AA%E3%81%A7%E3%81%97%E3%81%933%E7%B0%A1%E6%98%93%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF

 簡易エディタでお試し出来ます。

 (改のついてるほうが参考にしたサイトの改訂版の計算方法という意味で、付いてない方が、うちにあるカレンダーと合う方です。)

ゲスト



トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20190117