zakuro 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/lib/zakuro/calculation/cycle/abstract_remainder.rb +12 -0
  3. data/lib/zakuro/calculation/range/full_range.rb +1 -1
  4. data/lib/zakuro/version.rb +1 -1
  5. data/lib/zakuro/version/senmyou/const/number.rb +51 -0
  6. data/lib/zakuro/version/senmyou/const/remainder.rb +43 -0
  7. data/lib/zakuro/version/senmyou/cycle/remainder.rb +4 -6
  8. data/lib/zakuro/version/senmyou/monthly/lunar_phase.rb +35 -54
  9. data/lib/zakuro/version/senmyou/range/annual_range.rb +9 -65
  10. data/lib/zakuro/version/senmyou/stella/lunar/adjustment.rb +237 -0
  11. data/lib/zakuro/version/senmyou/stella/lunar/localization.rb +45 -0
  12. data/lib/zakuro/version/senmyou/stella/lunar/location.rb +108 -0
  13. data/lib/zakuro/version/senmyou/stella/lunar/value.rb +89 -0
  14. data/lib/zakuro/version/senmyou/stella/origin/average_november.rb +34 -0
  15. data/lib/zakuro/version/senmyou/stella/origin/lunar_age.rb +62 -0
  16. data/lib/zakuro/version/senmyou/stella/origin/winter_solstice.rb +55 -0
  17. data/lib/zakuro/version/senmyou/stella/solar/adjustment.rb +93 -0
  18. data/lib/zakuro/version/senmyou/stella/solar/average.rb +175 -0
  19. data/lib/zakuro/version/senmyou/stella/solar/interval.rb +103 -0
  20. data/lib/zakuro/version/senmyou/stella/solar/location.rb +164 -0
  21. data/lib/zakuro/version/senmyou/stella/solar/value.rb +138 -0
  22. metadata +20 -11
  23. data/lib/zakuro/version/senmyou/stella/lunar_orbit.rb +0 -332
  24. data/lib/zakuro/version/senmyou/stella/solar_average.rb +0 -169
  25. data/lib/zakuro/version/senmyou/stella/solar_location.rb +0 -213
  26. data/lib/zakuro/version/senmyou/stella/solar_orbit.rb +0 -213
  27. data/lib/zakuro/version/senmyou/stella/winter_solstice.rb +0 -106
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './lunar_age'
4
+ require_relative './winter_solstice'
5
+
6
+ # :nodoc:
7
+ module Zakuro
8
+ # :nodoc:
9
+ module Senmyou
10
+ # :nodoc:
11
+ module Origin
12
+ #
13
+ # AverageNovember 11月経
14
+ #
15
+ module AverageNovember
16
+ #
17
+ # 11月経朔(冬至が含まれる月の1日)を求める
18
+ #
19
+ # @param [Integer] western_year 西暦年
20
+ #
21
+ # @return [Remainder] 11月経朔
22
+ #
23
+ def self.get(western_year:)
24
+ # 冬至
25
+ winter_solstice = WinterSolstice.get(western_year: western_year)
26
+ # 天正閏余
27
+ lunar_age = LunarAge.get(western_year: western_year)
28
+
29
+ winter_solstice.sub(lunar_age)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../../output/logger'
4
+
5
+ require_relative '../../const/number'
6
+
7
+ # :nodoc:
8
+ module Zakuro
9
+ # :nodoc:
10
+ module Senmyou
11
+ # :nodoc:
12
+ module Origin
13
+ #
14
+ # LunarAge 天正閏余
15
+ #
16
+ module LunarAge
17
+ # @return [Integer] 朔望月
18
+ SYNODIC_MONTH = Const::Number::Cycle::SYNODIC_MONTH
19
+ # @return [Integer] 一年
20
+ YEAR = Const::Number::Cycle::YEAR
21
+ # @return [Integer] 積年
22
+ TOTAL_YEAR = Const::Number::Stack::TOTAL_YEAR
23
+ # @return [Integer] 暦の開始年
24
+ BEGIN_YEAR = Const::Number::Stack::BEGIN_YEAR
25
+
26
+ # @return [Output::Logger] ロガー
27
+ LOGGER = Output::Logger.new(location: 'lunar_age')
28
+
29
+ # :reek:TooManyStatements { max_statements: 7 }
30
+
31
+ #
32
+ # 対象年の天正閏余(冬至より前にある11月経朔との差 = 月齢)を算出する
33
+ # 太陽と月の運動による補正値を算出し、その補正結果を返す
34
+ #
35
+ # @param [Integer] western_year 西暦年
36
+ #
37
+ # @return [Remainder] 天正閏余
38
+ #
39
+ def self.get(western_year:)
40
+ # 積年の開始から対象年までの年数
41
+ total = TOTAL_YEAR + western_year - BEGIN_YEAR
42
+
43
+ # 12朔望月に対する1年の余り(単位:分)
44
+ remainder_minute = YEAR - (SYNODIC_MONTH * 12)
45
+
46
+ # 朔望月に含まれなかった余り(単位:年)
47
+ remainder_year = total % SYNODIC_MONTH
48
+
49
+ LOGGER.debug("[01]: #{remainder_year}")
50
+
51
+ # 天正閏余
52
+ lunar_age = remainder_minute * remainder_year % SYNODIC_MONTH
53
+
54
+ LOGGER.debug("[02]: #{lunar_age}")
55
+
56
+ # 大余・小余に変換する
57
+ Cycle::Remainder.new(total: lunar_age)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../../output/logger'
4
+
5
+ require_relative '../../const/number'
6
+
7
+ # :nodoc:
8
+ module Zakuro
9
+ # :nodoc:
10
+ module Senmyou
11
+ # :nodoc:
12
+ module Origin
13
+ #
14
+ # WinterSolstice 冬至
15
+ #
16
+ module WinterSolstice
17
+ # @return [Integer] 通余
18
+ REMAINDER_ALL_YEAR = Const::Number::Derivation::REMAINDER_ALL_YEAR
19
+ # @return [Integer] 60日
20
+ SIXTY_DAYS = Const::Number::Derivation::SIXTY_DAYS
21
+ # @return [Integer] 積年
22
+ TOTAL_YEAR = Const::Number::Stack::TOTAL_YEAR
23
+ # @return [Integer] 暦の開始年
24
+ BEGIN_YEAR = Const::Number::Stack::BEGIN_YEAR
25
+
26
+ # @return [Output::Logger] ロガー
27
+ LOGGER = Output::Logger.new(location: 'winter_solstice')
28
+
29
+ # :reek:TooManyStatements { max_statements: 6 }
30
+
31
+ #
32
+ # 対象年の前年の冬至を求める
33
+ #
34
+ # @param [Integer] western_year 西暦年
35
+ #
36
+ # @return [Remainder] 前年の冬至
37
+ #
38
+ def self.get(western_year:)
39
+ # 積年の開始から対象年までの年数
40
+ total = TOTAL_YEAR + western_year - BEGIN_YEAR
41
+ remainder_year = total % SIXTY_DAYS
42
+
43
+ LOGGER.debug("[01]:#{remainder_year}")
44
+
45
+ # 通余を使う
46
+ winter_solstice_minute = (remainder_year * REMAINDER_ALL_YEAR) % SIXTY_DAYS
47
+
48
+ LOGGER.debug("[02]:#{winter_solstice_minute}")
49
+
50
+ Cycle::Remainder.new(total: winter_solstice_minute)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../cycle/solar_term'
4
+
5
+ require_relative '../../const/number'
6
+
7
+ # :nodoc:
8
+ module Zakuro
9
+ # :nodoc:
10
+ module Senmyou
11
+ # :nodoc:
12
+ module Solar
13
+ #
14
+ # Adjustment 24気損益眺朒(ちょうじく)数
15
+ #
16
+ module Adjustment
17
+ #
18
+ # Item 24気損益眺朒(ちょうじく)数
19
+ #
20
+ class Item
21
+ # @return [Integer] 眺朒(ちょうじく)積
22
+ attr_reader :stack
23
+ # @return [Integer] 眺朒(ちょうじく)数
24
+ attr_reader :per_term
25
+ # @return [Integer] 毎日差
26
+ attr_reader :per_day
27
+
28
+ #
29
+ # 初期化
30
+ #
31
+ # @param [Integer] stack 眺朒(ちょうじく)積
32
+ # @param [Integer] per_term 眺朒(ちょうじく)数
33
+ # @param [Integer] per_day 毎日差
34
+ #
35
+ def initialize(stack:, per_term:, per_day:)
36
+ @stack = stack
37
+ @per_term = per_term
38
+ @per_day = per_day
39
+ end
40
+
41
+ #
42
+ # 文字化
43
+ #
44
+ # @return [String] 文字
45
+ #
46
+ def to_s
47
+ "stack:#{@stack}, per_term:#{@per_term}, per_day:#{@per_day}"
48
+ end
49
+ end
50
+
51
+ # @return [Array<Item>] 24気損益眺朒(ちょうじく)数
52
+ MAP = {
53
+ touji: Item.new(stack: 0.0, per_term: +33.4511, per_day: -0.3695), # 冬至(とうじ)
54
+ shoukan: Item.new(stack: +449.0, per_term: +28.0389, per_day: -0.3606), # 小寒(しょうかん)
55
+ daikan: Item.new(stack: +823.0, per_term: +22.6998, per_day: -0.3519), # 大寒(だいかん)
56
+ risshun: Item.new(stack: +1122.0, per_term: +17.8923, per_day: -0.4068), # 立春(りっしゅん)
57
+ usui: Item.new(stack: +1346.0, per_term: +11.7966, per_day: -0.3998), # 雨水(うすい)
58
+ keichitsu: Item.new(stack: +1481.0, per_term: +5.7986, per_day: -0.3998), # 啓蟄(けいちつ)
59
+ shunbun: Item.new(stack: +1526.0, per_term: -0.2433, per_day: -0.3779), # 春分(しゅんぶん)
60
+ seimei: Item.new(stack: +1481.0, per_term: -6.1254, per_day: -0.3634), # 清明(せいめい)
61
+ kokuu: Item.new(stack: +1346.0, per_term: -12.2048, per_day: -0.2987), # 穀雨(こくう)
62
+ rikka: Item.new(stack: +1122.0, per_term: -16.9060, per_day: -0.2919), # 立夏(りっか)
63
+ shouman: Item.new(stack: +823.0, per_term: -21.5362, per_day: -0.2854), # 小満(しょうまん)
64
+ boushu: Item.new(stack: +449.0, per_term: -26.0498, per_day: -0.2854), # 芒種(ぼうしゅ)
65
+ geshi: Item.new(stack: 0.0, per_term: -30.3119, per_day: +0.2854), # 夏至(げし)
66
+ shousho: Item.new(stack: -449.0, per_term: -25.8126, per_day: +0.2919), # 小暑(しょうしょ)
67
+ taisho: Item.new(stack: -823.0, per_term: -21.2454, per_day: +0.2987), # 大暑(たいしょ)
68
+ risshuu: Item.new(stack: -1122.0, per_term: -17.0296, per_day: +0.3634), # 立秋(りっしゅう)
69
+ shosho: Item.new(stack: -1346.0, per_term: -11.4744, per_day: +0.3779), # 処暑(しょしょ)
70
+ hakuro: Item.new(stack: -1481.0, per_term: -5.6429, per_day: +0.3779), # 白露(はくろ)
71
+ shuubun: Item.new(stack: -1526.0, per_term: +0.1432, per_day: +0.3998), # 秋分(しゅうぶん)
72
+ kanro: Item.new(stack: -1481.0, per_term: +6.1488, per_day: +0.4068), # 寒露(かんろ)
73
+ soukou: Item.new(stack: -1346.0, per_term: +12.6336, per_day: +0.3519), # 霜降(そうこう)
74
+ rittou: Item.new(stack: -1122.0, per_term: +17.8043, per_day: +0.3606), # 立冬(りっとう)
75
+ shousetsu: Item.new(stack: -823.0, per_term: +23.0590, per_day: +0.3695), # 小雪(しょうせつ)
76
+ taisetsu: Item.new(stack: -449.0, per_term: +28.4618, per_day: +0.3695) # 大雪(たいせつ)
77
+ }.freeze
78
+
79
+ #
80
+ # 24気損益眺朒(ちょうじく)数を特定する
81
+ #
82
+ # @param [Integer] index 連番(二十四節気)
83
+ #
84
+ # @return [Adjustment::Item] 24気損益眺朒(ちょうじく)数
85
+ #
86
+ def self.specify(index:)
87
+ key = Cycle::SolarTerm::ORDER[index]
88
+ Adjustment::MAP[key].clone
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,175 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../const/remainder'
4
+
5
+ require_relative '../origin/winter_solstice'
6
+
7
+ # :nodoc:
8
+ module Zakuro
9
+ # :nodoc:
10
+ module Senmyou
11
+ # :nodoc:
12
+ module Solar
13
+ #
14
+ # Average 常気(太陽軌道平均)
15
+ #
16
+ class Average
17
+ # @return [Remainder] 気策
18
+ SOLAR_TERM_AVERAGE = Const::Remainder::Solar::SOLAR_TERM_AVERAGE
19
+
20
+ #
21
+ # 初期化
22
+ #
23
+ # @param [Integer] western_year 西暦年
24
+ #
25
+ def initialize(western_year:)
26
+ @solar_term = Average.first_solar_term(western_year: western_year)
27
+ end
28
+
29
+ #
30
+ # 冬至から数えた1年データの月ごとに二十四節気を割り当てる
31
+ #
32
+ # @param [Array<Month>] annual_range 1年データ
33
+ #
34
+ # @return [Array<Month>] 1年データ
35
+ #
36
+ def set(annual_range:)
37
+ # 次月と比較しながら当月の二十四節気を決める
38
+ # NOTE: 最後の月は処理できない(=計算外の余分な月が最後に必要である)
39
+ annual_range.each_cons(2) do |(current_month, next_month)|
40
+ set_solar_term(
41
+ current_month: current_month,
42
+ next_month: next_month
43
+ )
44
+ end
45
+
46
+ annual_range
47
+ end
48
+
49
+ #
50
+ # 計算開始する二十四節気を求める
51
+ #
52
+ # @param [Integer] western_year 西暦年
53
+ #
54
+ # @return [SolarTerm] 二十四節気
55
+ #
56
+ def self.first_solar_term(western_year:)
57
+ # 天正冬至
58
+ winter_solstice = Origin::WinterSolstice.get(western_year: western_year)
59
+
60
+ # 二十四節気(冬至)
61
+ solar_term = Cycle::SolarTerm.new(index: 0, remainder: winter_solstice)
62
+
63
+ first_solar_term_index = Average.calc_fist_solar_term_index(western_year: western_year)
64
+
65
+ # 対象の二十四節気まで戻す
66
+ solar_term.prev_by_index(first_solar_term_index)
67
+
68
+ solar_term
69
+ end
70
+
71
+ # :reek:TooManyStatements { max_statements: 6 }
72
+
73
+ #
74
+ # 計算開始する二十四節気番号を求める
75
+ #
76
+ # * 前提として入定気は冬至の手前にある
77
+ # * 例えば、定気が大雪であれば入定気は大雪の範囲内にある
78
+ # * 入定気は、定気の開始位置に重複しない限り、常に定気より後にある
79
+ # * 基本的に定気の一つ前から起算すれば、当時から求めた11月(閏10/閏11月)に二十四節気を割り当てられる
80
+ #
81
+ # @param [Integer] western_year 西暦年
82
+ #
83
+ # @return [Integer] 二十四節気番号
84
+ #
85
+ def self.calc_fist_solar_term_index(western_year:)
86
+ # 天正閏余
87
+ lunar_age = Origin::LunarAge.get(western_year: western_year)
88
+
89
+ solar_location = Solar::Location.new(lunar_age: lunar_age)
90
+ solar_location.run
91
+
92
+ solar_term_index = solar_location.index
93
+
94
+ # 入定気の一つ後の二十四節気まで戻す(ただし11月経朔が二十四節気上にある場合は戻さない)
95
+ solar_term_index += 1 unless solar_location.remainder == Cycle::Remainder.new(total: 0)
96
+
97
+ solar_term_index
98
+ end
99
+
100
+ # :reek:TooManyStatements { max_statements: 7 }
101
+
102
+ #
103
+ # 月内(当月朔日から当月末日(来月朔日の前日)の間)に二十四節気があるか
104
+ # @note 大余60で一巡するため 以下2パターンがある
105
+ # * current_month <= next_month : (二十四節気) >= current_month && (二十四節気) < next_month
106
+ # * current_month > next_month : (二十四節気) >= current_month || (二十四節気) < next_month
107
+ #
108
+ # @param [Remainder] solar_term 二十四節気
109
+ # @param [Remainder] current_month 月初
110
+ # @param [Remainder] next_month 月末
111
+ #
112
+ # @return [True] 対象の二十四節気がある
113
+ # @return [False] 対象の二十四節気がない
114
+ #
115
+ def self.in_solar_term?(solar_term:, current_month:, next_month:)
116
+ # 大余で比較する
117
+ target_time = solar_term.day
118
+ current_month_time = current_month.day
119
+ next_month_time = next_month.day
120
+ current_month_over = (target_time >= current_month_time)
121
+ next_month_under = (target_time < next_month_time)
122
+
123
+ return current_month_over && next_month_under if current_month_time <= next_month_time
124
+
125
+ current_month_over || next_month_under
126
+ end
127
+
128
+ private
129
+
130
+ # :reek:TooManyStatements { max_statements: 8 }
131
+
132
+ #
133
+ # 二十四節気を設定する
134
+ #
135
+ # @param [Month] current_month 当月
136
+ # @param [Month] next_month 次月
137
+ #
138
+ def set_solar_term(current_month:, next_month:)
139
+ # 安全策として無限ループは回避する
140
+ # * 最大試行回数:4回(設定なし => 設定あり => 設定あり => 設定なし)
141
+ # * 閏月は1回しか設定しない
142
+ # * 最大2回設定する(中気・節気)
143
+ (0..3).each do |_index|
144
+ in_range = Average.in_solar_term?(
145
+ solar_term: @solar_term.remainder, current_month: current_month.remainder,
146
+ next_month: next_month.remainder
147
+ )
148
+
149
+ # 範囲外
150
+ unless in_range
151
+ # 1つ以上設定されていれば切り上げる(一つ飛ばしで二十四節気を設定することはない)
152
+ break unless current_month.empty_solar_term?
153
+
154
+ next_solar_term
155
+ next
156
+ end
157
+
158
+ current_month.add_term(term: @solar_term.clone)
159
+ next_solar_term
160
+
161
+ # 宣明暦は最大2つまで
162
+ break if current_month.solar_term_size == 2
163
+ end
164
+ end
165
+
166
+ #
167
+ # 次の二十四節気に移る
168
+ #
169
+ def next_solar_term
170
+ @solar_term.next_term!
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Zakuro
5
+ # :nodoc:
6
+ module Senmyou
7
+ # :nodoc:
8
+ module Solar
9
+ #
10
+ # Interval 入気定日加減数(二十四節気の間隔)
11
+ #
12
+ module Interval
13
+ # @return [Hash<Symbol, Cycle::Remainder>] 一覧
14
+ MAP = {
15
+ # 冬至(とうじ)・大雪(たいせつ)
16
+ touji: Cycle::Remainder.new(day: 14, minute: 4235, second: 5),
17
+ taisetsu: Cycle::Remainder.new(day: 14, minute: 4235, second: 5),
18
+ # 小寒(しょうかん)・小雪(しょうせつ)
19
+ shoukan: Cycle::Remainder.new(day: 14, minute: 5235, second: 5),
20
+ shousetsu: Cycle::Remainder.new(day: 14, minute: 5235, second: 5),
21
+ # 大寒(だいかん)・立冬(りっとう)
22
+ daikan: Cycle::Remainder.new(day: 14, minute: 6235, second: 5),
23
+ rittou: Cycle::Remainder.new(day: 14, minute: 6235, second: 5),
24
+ # 立春(りっしゅん)・霜降(そうこう)
25
+ risshun: Cycle::Remainder.new(day: 14, minute: 7235, second: 5),
26
+ soukou: Cycle::Remainder.new(day: 14, minute: 7235, second: 5),
27
+ # 雨水(うすい)・寒露(かんろ)
28
+ usui: Cycle::Remainder.new(day: 15, minute: 35, second: 5),
29
+ kanro: Cycle::Remainder.new(day: 15, minute: 35, second: 5),
30
+ # 啓蟄(けいちつ)・秋分(しゅうぶん)
31
+ keichitsu: Cycle::Remainder.new(day: 15, minute: 1235, second: 5),
32
+ shuubun: Cycle::Remainder.new(day: 15, minute: 1235, second: 5),
33
+ # 春分(しゅんぶん)・白露(はくろ)
34
+ shunbun: Cycle::Remainder.new(day: 15, minute: 2435, second: 5),
35
+ hakuro: Cycle::Remainder.new(day: 15, minute: 2435, second: 5),
36
+ # 清明(せいめい)・処暑(しょしょ)
37
+ seimei: Cycle::Remainder.new(day: 15, minute: 3635, second: 5),
38
+ shosho: Cycle::Remainder.new(day: 15, minute: 3635, second: 5),
39
+ # 穀雨(こくう)・立秋(りっしゅう)
40
+ kokuu: Cycle::Remainder.new(day: 15, minute: 4835, second: 5),
41
+ risshuu: Cycle::Remainder.new(day: 15, minute: 4835, second: 5),
42
+ # 立夏(りっか)・大暑(たいしょ)
43
+ rikka: Cycle::Remainder.new(day: 15, minute: 5835, second: 5),
44
+ taisho: Cycle::Remainder.new(day: 15, minute: 5835, second: 5),
45
+ # 小満(しょうまん)・小暑(しょうしょ)
46
+ shouman: Cycle::Remainder.new(day: 15, minute: 6835, second: 5),
47
+ shousho: Cycle::Remainder.new(day: 15, minute: 6835, second: 5),
48
+ # 芒種(ぼうしゅ)・夏至(げし)
49
+ boushu: Cycle::Remainder.new(day: 15, minute: 7835, second: 5),
50
+ geshi: Cycle::Remainder.new(day: 15, minute: 7835, second: 5)
51
+ }.freeze
52
+
53
+ # @return [Array<Remainder>] 索引
54
+ LIST = [
55
+ MAP[:touji], # 0
56
+ MAP[:shoukan], # 1
57
+ MAP[:daikan], # 2
58
+ MAP[:risshun], # 3
59
+ MAP[:usui], # 4
60
+ MAP[:keichitsu], # 5
61
+ MAP[:shunbun], # 6
62
+ MAP[:seimei], # 7
63
+ MAP[:kokuu], # 8
64
+ MAP[:rikka], # 9
65
+ MAP[:shouman], # 10
66
+ MAP[:boushu], # 11
67
+ MAP[:geshi], # 12
68
+ MAP[:shousho], # 13
69
+ MAP[:taisho], # 14
70
+ MAP[:risshuu], # 15
71
+ MAP[:shosho], # 16
72
+ MAP[:hakuro], # 17
73
+ MAP[:shuubun], # 18
74
+ MAP[:kanro], # 19
75
+ MAP[:soukou], # 20
76
+ MAP[:rittou], # 21
77
+ MAP[:shousetsu], # 22
78
+ MAP[:taisetsu] # 23
79
+ ].freeze
80
+
81
+ #
82
+ # 入気定日加減数を引き当てる
83
+ #
84
+ # @param [Integer] index 二十四節気番号
85
+ #
86
+ # @return [Cycle::Remainder] 入気定日加減数
87
+ #
88
+ def self.index_of(index)
89
+ LIST[index]
90
+ end
91
+
92
+ #
93
+ # 入気定日加減数の総数を返す
94
+ #
95
+ # @return [Integer] 入気定日加減数の総数
96
+ #
97
+ def self.size
98
+ LIST.size
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end