そういえば書いてなかったので書いておく。恋愛相性診断の計算方法はこうなっている。
恋愛相性診断
http://kabbala.id774.net/kabbala/
1. 誕生日による相性診断
生年月日を数秘術の計算方法に従い加算後 9 で割り、除算の剰余から誕生数を求める。
例えば 1991 年 12 月 25 日生まれなら
年 1 + 9 + 9 + 1 = 20 → 剰余 2
月 1 + 2 = 3
日 2 + 5 = 7
誕生数 2 + 3 + 7 = 12 → 剰余 3 となるわけである。
ただしこの際 11 の倍数が登場した場合は特別な数とみなし加算をそこで停止する。
コードにすると以下の通りである。
return i if i.modulo(11) == 0
r = i.modulo(9)
r = 9 if r == 0
r
end
def kabbala_calc(string)
unless string.blank?
if string.length == 8
a = string.split("")
year = a[0] + a[1] + a[2] + a[3]
month = a[4] + a[5]
day = a[6] + a[7]
result = nonary(year.to_i) + nonary(month.to_i) + nonary(day.to_i)
nonary(result)
end
end
end
こうして求められたのが誕生数である。次に男女の誕生数を加算し 9 で割り、除算の剰余を見る。 1 のとき最も相性が良く、 2 のとき最も相性が良くない。コードにすると以下の通りである。
unless m_kabbala.nil? or f_kabbala.nil?
valuation = (m_kabbala + f_kabbala).modulo(9)
case valuation
when 1
return 'S'
when 2
return 'C'
when 3,8
return 'A'
else
return 'B'
end
end
end
こうして誕生数どうしのランクを S A B C の 4 段階で区別している。
2. 名前による相性診断
まずは名前を数値に変換する。これは平仮名のあいうえおのどの段に位置するかで決定する。あ → 1 、い → 2 という具合である。おそらくコードを見たほうが早い。
array = Array.new
string.split("").each {|s|
case s
when "あ","か","さ","た","な","は","ま","や","ら","わ","が","ざ","だ","ば","ぱ","ゃ","ゎ" then
array << 1
when "い","き","し","ち","に","ひ","み","り","ぎ","じ","ぢ","び","ぴ","ゐ" then
array << 2
when "う","く","す","つ","ぬ","ふ","む","ゆ","る","ぐ","ず","づ","ぶ","ぷ","ゅ" then
array << 3
when "え","け","せ","て","ね","へ","め","れ","げ","ぜ","で","べ","ぺ","ゑ" then
array << 4
when "お","こ","そ","と","の","ほ","も","よ","ろ","を","ご","ぞ","ど","ぼ","ぽ","ょ","" then
array << 5
when "ん"
array << 0
end
}
array
end
こうして配列に格納された数を隣接する数ごとに 2 桁の数値になるまで加算するのである。たとえば「すずきいちろう」さんと「やまだはなこ」さんなら 332 2253 111 115 だから以下のようになる。
6 5 4 4 7 8 4 2 2 2 2 6
1 9 8 1 5 2 6 4 4 4 8
0 7 9 6 7 8 0 8 8 2
7 6 5 3 5 8 8 6 0
3 1 8 8 3 6 4 6
4 9 6 1 9 0 0
3 5 7 0 9 0
8 2 7 9 9
0 9 6 8
9 5 4
4 9
この場合は恋愛確率が 49 点となる。
3. 総合評価
総合評価は上記のふたつを考慮して大雑把に分けたものである。 S または A で 90 点以上なら最高である。これもコードを見たほうが早い。
case rank
when 'A','S'
if ratio >= 90
return '最高'
elsif ratio >= 70
return 'とても良い'
else
return 'わりと良い'
end
when 'B'
if ratio >= 90
return 'かなり良い'
else
return 'まあまあ'
end
when 'C'
if ratio >= 90
return 'わりと良い'
else
return 'ちょっときびしい'
end
end
end
完全なランダムなら確率的にみて多くの人が「まあまあ」になるはずなのだが、交際している人の成績を実際に集計してみると「最高」や「良い」のほうに明らかに傾倒しているのが数値的に証明できる。これは占いを統計学的に実証する上で非常に興味深いデータと言えるだろう。
そんなわけでみなさんもぜひお試しください。