benjamin5607 commited on
Commit
5ef4f14
ยท
verified ยท
1 Parent(s): a50a9c0

Create calculations.py

Browse files
Files changed (1) hide show
  1. utils/calculations.py +77 -0
utils/calculations.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # utils/calculations.py
2
+
3
+ def get_ganji(year):
4
+ """
5
+ ์—ฐ๋„๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ฒœ๊ฐ„(Heavenly Stem)๊ณผ ์ง€์ง€(Earthly Branch), ์˜คํ–‰(Element)์„ ๊ณ„์‚ฐ
6
+ """
7
+ cheon = ["๊ฐ‘(Green)", "์„(Green)", "๋ณ‘(Red)", "์ •(Red)", "๋ฌด(Yellow)", "๊ธฐ(Yellow)", "๊ฒฝ(White)", "์‹ (White)", "์ž„(Black)", "๊ณ„(Black)"]
8
+ ji = ["์ž(์ฅ)", "์ถ•(์†Œ)", "์ธ(ํ˜ธ๋ž‘์ด)", "๋ฌ˜(ํ† ๋ผ)", "์ง„(์šฉ)", "์‚ฌ(๋ฑ€)", "์˜ค(๋ง)", "๋ฏธ(์–‘)", "์‹ (์›์ˆญ์ด)", "์œ (๋‹ญ)", "์ˆ (๊ฐœ)", "ํ•ด(๋ผ์ง€)"]
9
+
10
+ # ์˜คํ–‰ ๋งคํ•‘ (์ฒœ๊ฐ„ ๊ธฐ์ค€)
11
+ elements = {
12
+ "๊ฐ‘": "๋ชฉ(๋‚˜๋ฌด)", "์„": "๋ชฉ(๋‚˜๋ฌด)",
13
+ "๋ณ‘": "ํ™”(๋ถˆ)", "์ •": "ํ™”(๋ถˆ)",
14
+ "๋ฌด": "ํ† (ํ™)", "๊ธฐ": "ํ† (ํ™)",
15
+ "๊ฒฝ": "๊ธˆ(์‡ )", "์‹ ": "๊ธˆ(์‡ )",
16
+ "์ž„": "์ˆ˜(๋ฌผ)", "๊ณ„": "์ˆ˜(๋ฌผ)"
17
+ }
18
+
19
+ # 4๋…„์ƒ์ด ๊ฐ‘์ž๋…„ ๊ธฐ์ค€ (index 0)
20
+ year_idx = year - 4
21
+ stem_idx = year_idx % 10
22
+ branch_idx = year_idx % 12
23
+
24
+ stem_kor = cheon[stem_idx][0] # ๊ฐ‘, ์„..
25
+
26
+ return {
27
+ "year_ganji": f"{cheon[stem_idx].split('(')[0]}{ji[branch_idx].split('(')[0]}๋…„", # ๊ฐ‘์ž๋…„
28
+ "animal": ji[branch_idx], # ์ฅ, ์†Œ...
29
+ "color": cheon[stem_idx].split('(')[1].replace(')', ''), # Green, Red...
30
+ "element": elements[stem_kor], # ๋ชฉ, ํ™”...
31
+ "stem_desc": f"์ฒœ๊ฐ„์€ {cheon[stem_idx]}",
32
+ "branch_desc": f"์ง€์ง€๋Š” {ji[branch_idx]}"
33
+ }
34
+
35
+ def get_fengshui_info(birth_year, gender):
36
+ """
37
+ ๋ณธ๋ช…๊ถ(Life Gua) ๊ณ„์‚ฐ ๋ฐ ๊ธธํ‰ ๋ฐฉ์œ„ ์‚ฐ์ถœ (๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ณต์‹)
38
+ """
39
+ # 1. ์ˆซ์ž๋ฅผ ๋‹ค ๋”ํ•ด์„œ ํ•œ ์ž๋ฆฌ๋กœ ๋งŒ๋“ฆ (์˜ˆ: 1988 -> 1+9+8+8=26 -> 2+6=8)
40
+ # (์•ฝ์‹ ๊ณ„์‚ฐ๋ฒ• ์‚ฌ์šฉ)
41
+ digits_sum = sum(int(digit) for digit in str(birth_year))
42
+ while digits_sum > 9:
43
+ digits_sum = sum(int(digit) for digit in str(digits_sum))
44
+
45
+ # 2. ๋ณธ๋ช…๊ถ ์ƒ์ˆ˜(Gua Number) ๊ณ„์‚ฐ
46
+ if gender == "๋‚จ์„ฑ":
47
+ gua_num = 11 - digits_sum
48
+ else: # ์—ฌ์„ฑ
49
+ gua_num = digits_sum + 4
50
+
51
+ # ์˜ˆ์™ธ์ฒ˜๋ฆฌ (9๋ฅผ ๋„˜๊ฑฐ๋‚˜ ์Œ์ˆ˜ ์ฒ˜๋ฆฌ)
52
+ while gua_num > 9: gua_num -= 9
53
+ while gua_num < 1: gua_num += 9
54
+ if gua_num == 5: # 5ํ™ฉํ† ์„ฑ์€ ๋‚จ์ž๋Š” 2(๊ณค), ์—ฌ์ž๋Š” 8(๊ฐ„)์œผ๋กœ ์น˜ํ™˜
55
+ gua_num = 2 if gender == "๋‚จ์„ฑ" else 8
56
+
57
+ # 3. ๋™์‚ฌํƒ(East Group) vs ์„œ์‚ฌํƒ(West Group) ํŒ๋ณ„
58
+ # ๋™์‚ฌํƒ: 1, 3, 4, 9 / ์„œ์‚ฌํƒ: 2, 6, 7, 8
59
+ is_east_group = gua_num in [1, 3, 4, 9]
60
+ group_name = "๋™์‚ฌํƒ(East Group)" if is_east_group else "์„œ์‚ฌํƒ(West Group)"
61
+
62
+ # 4. ๊ธธํ‰ ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ
63
+ directions = {
64
+ "๋™์‚ฌํƒ": {"๊ธธ": ["๋ถ", "๋™", "๋‚จ", "๋‚จ๋™"], "ํ‰": ["๋ถ๋™", "๋‚จ์„œ", "์„œ", "๋ถ์„œ"]},
65
+ "์„œ์‚ฌํƒ": {"๊ธธ": ["๋ถ๋™", "๋‚จ์„œ", "์„œ", "๋ถ์„œ"], "ํ‰": ["๋ถ", "๋™", "๋‚จ", "๋‚จ๋™"]}
66
+ }
67
+
68
+ good_dirs = directions["๋™์‚ฌํƒ" if is_east_group else "์„œ์‚ฌํƒ"]["๊ธธ"]
69
+ bad_dirs = directions["๋™์‚ฌํƒ" if is_east_group else "์„œ์‚ฌํƒ"]["ํ‰"]
70
+
71
+ return {
72
+ "gua_number": gua_num,
73
+ "group": group_name,
74
+ "good_direction": ", ".join(good_dirs),
75
+ "bad_direction": ", ".join(bad_dirs),
76
+ "advice": f"๋‹น์‹ ์€ {group_name}์ด๋ฏ€๋กœ ๋จธ๋ฆฌ๋ฅผ {good_dirs[0]}์ชฝ์œผ๋กœ ๋‘๊ณ  ์ž์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ ˆ๋Œ€ {bad_dirs[0]}์ชฝ์„ ๋ณด์ง€ ๋งˆ์„ธ์š”."
77
+ }