Spaces:
Runtime error
Runtime error
cryptocalypse
commited on
Commit
路
4025f4d
1
Parent(s):
5a4eef8
libsbase gematria temurae ziruph
Browse files- lib/gematria.py +226 -0
lib/gematria.py
ADDED
@@ -0,0 +1,226 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
from prettytable import PrettyTable
|
3 |
+
from colorama import Fore, Style
|
4 |
+
from collections import defaultdict
|
5 |
+
|
6 |
+
# Funci贸n para calcular el valor de gematria de una letra hebrea antigua
|
7 |
+
def gematria(letra):
|
8 |
+
valores = {'讗': 1, '讘': 2, '讙': 3, '讚': 4, '讛': 5, '讜': 6, '讝': 7, '讞': 8, '讟': 9,
|
9 |
+
'讬': 10, '讻': 20, '诇': 30, '诪': 40, '谞': 50, '住': 60, '注': 70, '驻': 80,
|
10 |
+
'爪': 90, '拽': 100, '专': 200, '砖': 300, '转': 400, '讱': 20, '诐': 40, '谉': 50, '祝': 80, '抓': 90}
|
11 |
+
return valores.get(letra, 0)
|
12 |
+
|
13 |
+
# Funci贸n para generar todas las combinaciones posibles de dos letras en hebreo antiguo
|
14 |
+
def generar_combinaciones():
|
15 |
+
letras = ['讗', '讘', '讙', '讚', '讛', '讜', '讝', '讞', '讟', '讬', '讻', '诇', '诪', '谞', '住', '注', '驻', '爪', '拽', '专', '砖', '转',
|
16 |
+
'讱', '诐', '谉', '祝', '抓']
|
17 |
+
combinaciones = []
|
18 |
+
for letra1 in letras:
|
19 |
+
for letra2 in letras:
|
20 |
+
combinaciones.append(letra1 + letra2)
|
21 |
+
return combinaciones
|
22 |
+
|
23 |
+
# Funci贸n para calcular la suma de los valores de gematria y el producto de los valores de gematria de una combinaci贸n
|
24 |
+
def calcular_valores(combinacion):
|
25 |
+
valor1 = gematria(combinacion[0])
|
26 |
+
valor2 = gematria(combinacion[1])
|
27 |
+
suma = valor1 + valor2
|
28 |
+
producto = valor1 * valor2
|
29 |
+
ratio = valor1 / valor2 if valor2 != 0 else float('inf')
|
30 |
+
return suma, producto, ratio
|
31 |
+
|
32 |
+
# Funci贸n principal
|
33 |
+
def main():
|
34 |
+
combinaciones = generar_combinaciones()
|
35 |
+
table = PrettyTable()
|
36 |
+
table.field_names = ["#", Fore.BLUE + "Producto" + Style.RESET_ALL,
|
37 |
+
Fore.BLUE + "Suma" + Style.RESET_ALL,
|
38 |
+
Fore.BLUE + "Ratio" + Style.RESET_ALL,
|
39 |
+
Fore.BLUE + "Valor 2" + Style.RESET_ALL,
|
40 |
+
Fore.BLUE + "Valor 1" + Style.RESET_ALL,
|
41 |
+
Fore.BLUE + "Combinaci贸n" + Style.RESET_ALL]
|
42 |
+
|
43 |
+
# Diccionario de combinaciones agrupadas por ratio
|
44 |
+
combinaciones_por_ratio = defaultdict(set)
|
45 |
+
|
46 |
+
# Versos del G茅nesis Sefard铆 (ejemplo)
|
47 |
+
versos_genesis_sefardi = [
|
48 |
+
"讘专讗砖讬转 讘专讗 讗诇讛讬诐 讗转 讛砖诪讬诐 讜讗转 讛讗专抓",
|
49 |
+
"讜讛讗专抓 讛讬转讛 转讛讜 讜讘讛讜 讜讞砖讱 注诇志驻谞讬 转讛讜诐 讜专讜讞 讗诇讛讬诐 诪专讞驻转 注诇志驻谞讬 讛诪讬诐",
|
50 |
+
"讜讬讗诪专 讗诇讛讬诐 讬讛讬 讗讜专 讜讬讛讬志讗讜专",
|
51 |
+
"讜讬专讗 讗诇讛讬诐 讗转志讛讗讜专 讻讬志讟讜讘 讜讬讘讚诇 讗诇讛讬诐 讘讬谉 讛讗讜专 讜讘讬谉 讛讞砖讱",
|
52 |
+
"讜讬拽专讗 讗诇讛讬诐 诇讗讜专 讬讜诐 讜诇讞砖讱 拽专讗 诇讬诇讛 讜讬讛讬志注专讘 讜讬讛讬志讘拽专 讬讜诐 讗讞讚"
|
53 |
+
# Agrega m谩s versos seg煤n sea necesario...
|
54 |
+
]
|
55 |
+
|
56 |
+
# Funci贸n para obtener el primer par de letras de un verso
|
57 |
+
def obtener_primer_par_letras(verso):
|
58 |
+
for i in range(len(verso) - 1):
|
59 |
+
if verso[i].isalpha() and verso[i+1].isalpha():
|
60 |
+
return verso[i:i+2]
|
61 |
+
return None
|
62 |
+
|
63 |
+
# Diccionario para almacenar el primer par de letras y su ratio por verso
|
64 |
+
primer_par_por_verso = {}
|
65 |
+
for verso in versos_genesis_sefardi:
|
66 |
+
primer_par = obtener_primer_par_letras(verso)
|
67 |
+
if primer_par:
|
68 |
+
suma, producto, ratio = calcular_valores(primer_par)
|
69 |
+
primer_par_por_verso[verso] = (primer_par, ratio)
|
70 |
+
|
71 |
+
# Diccionario para agrupar los primeros pares de letras por ratio
|
72 |
+
primer_par_por_ratio = defaultdict(list)
|
73 |
+
for verso, (primer_par, ratio) in primer_par_por_verso.items():
|
74 |
+
primer_par_por_ratio[ratio].append((primer_par, verso))
|
75 |
+
|
76 |
+
# Crear la tabla de primeros pares de letras por ratio
|
77 |
+
table_primer_par = PrettyTable()
|
78 |
+
table_primer_par.field_names = [Fore.BLUE + "Primer Par" + Style.RESET_ALL, Fore.BLUE + "Ratio" + Style.RESET_ALL, Fore.BLUE + "Verso" + Style.RESET_ALL]
|
79 |
+
for ratio, pares_verso in sorted(primer_par_por_ratio.items(), key=lambda x: x[0], reverse=True):
|
80 |
+
for primer_par, verso in pares_verso:
|
81 |
+
table_primer_par.add_row([primer_par, f"{ratio:.2f}", verso])
|
82 |
+
|
83 |
+
print(table_primer_par)
|
84 |
+
|
85 |
+
# Procesar combinaciones y crear la tabla principal
|
86 |
+
for idx, combinacion in enumerate(combinaciones, start=1):
|
87 |
+
suma, producto, ratio = calcular_valores(combinacion)
|
88 |
+
combinacion_str = combinacion
|
89 |
+
# Resaltar en verde si la combinaci贸n est谩 en el conjunto de combinaciones del G茅nesis Sefard铆
|
90 |
+
if combinacion in set(''.join(obtener_primer_par_letras(verso)) for verso in versos_genesis_sefardi):
|
91 |
+
combinacion_str = Fore.GREEN + combinacion + Style.RESET_ALL
|
92 |
+
table.add_row([idx, producto, suma, f"{ratio:.2f}", gematria(combinacion[1]), gematria(combinacion[0]), combinacion_str])
|
93 |
+
combinaciones_por_ratio[ratio].add(combinacion)
|
94 |
+
|
95 |
+
# Mostrar la tabla de combinaciones
|
96 |
+
print("\nTabla de combinaciones:")
|
97 |
+
print(table)
|
98 |
+
|
99 |
+
# Mostrar la tabla de combinaciones agrupadas por ratio
|
100 |
+
print("\nTabla de combinaciones agrupadas por ratio:")
|
101 |
+
table_ratio = PrettyTable()
|
102 |
+
table_ratio.field_names = [Fore.BLUE + "Ratio" + Style.RESET_ALL, Fore.BLUE + "Combinaciones" + Style.RESET_ALL]
|
103 |
+
for ratio, combinaciones in sorted(combinaciones_por_ratio.items(), key=lambda x: x[0], reverse=True):
|
104 |
+
combinaciones_str = ", ".join(combinaciones)
|
105 |
+
table_ratio.add_row([f"{ratio:.2f}", combinaciones_str])
|
106 |
+
print(table_ratio)
|
107 |
+
|
108 |
+
# Calcular el n煤mero de combinaciones 煤nicas de primeros pares de letras
|
109 |
+
primeros_pares_unicos = set(primer_par for primer_par, _ in primer_par_por_verso.values())
|
110 |
+
num_primeros_pares_unicos = len(primeros_pares_unicos)
|
111 |
+
num_combinaciones_totales = len(combinaciones)
|
112 |
+
print(f"\nN煤mero de primeros pares de letras 煤nicos: {num_primeros_pares_unicos}")
|
113 |
+
print(f"N煤mero de combinaciones totales posibles: {num_combinaciones_totales}")
|
114 |
+
|
115 |
+
if __name__ == "__main__":
|
116 |
+
main()
|
117 |
+
from prettytable import PrettyTable
|
118 |
+
from colorama import Fore, Style
|
119 |
+
from collections import defaultdict
|
120 |
+
|
121 |
+
# Funci贸n para calcular el valor de gematria de una letra hebrea antigua
|
122 |
+
def gematria(letra):
|
123 |
+
valores = {'讗': 1, '讘': 2, '讙': 3, '讚': 4, '讛': 5, '讜': 6, '讝': 7, '讞': 8, '讟': 9,
|
124 |
+
'讬': 10, '讻': 20, '诇': 30, '诪': 40, '谞': 50, '住': 60, '注': 70, '驻': 80,
|
125 |
+
'爪': 90, '拽': 100, '专': 200, '砖': 300, '转': 400, '讱': 20, '诐': 40, '谉': 50, '祝': 80, '抓': 90}
|
126 |
+
return valores.get(letra, 0)
|
127 |
+
|
128 |
+
# Funci贸n para generar todas las combinaciones posibles de dos letras en hebreo antiguo
|
129 |
+
def generar_combinaciones():
|
130 |
+
letras = ['讗', '讘', '讙', '讚', '讛', '讜', '讝', '讞', '讟', '讬', '讻', '诇', '诪', '谞', '住', '注', '驻', '爪', '拽', '专', '砖', '转',
|
131 |
+
'讱', '诐', '谉', '祝', '抓']
|
132 |
+
combinaciones = []
|
133 |
+
for letra1 in letras:
|
134 |
+
for letra2 in letras:
|
135 |
+
combinaciones.append(letra1 + letra2)
|
136 |
+
return combinaciones
|
137 |
+
|
138 |
+
# Funci贸n para calcular la suma de los valores de gematria y el producto de los valores de gematria de una combinaci贸n
|
139 |
+
def calcular_valores(combinacion):
|
140 |
+
valor1 = gematria(combinacion[0])
|
141 |
+
valor2 = gematria(combinacion[1])
|
142 |
+
suma = valor1 + valor2
|
143 |
+
producto = valor1 * valor2
|
144 |
+
ratio = valor1 / valor2 if valor2 != 0 else float('inf')
|
145 |
+
return suma, producto, ratio
|
146 |
+
|
147 |
+
# Funci贸n principal
|
148 |
+
def main():
|
149 |
+
combinaciones = generar_combinaciones()
|
150 |
+
table = PrettyTable()
|
151 |
+
table.field_names = ["#", Fore.BLUE + "Producto" + Style.RESET_ALL,
|
152 |
+
Fore.BLUE + "Suma" + Style.RESET_ALL,
|
153 |
+
Fore.BLUE + "Ratio" + Style.RESET_ALL,
|
154 |
+
Fore.BLUE + "Valor 2" + Style.RESET_ALL,
|
155 |
+
Fore.BLUE + "Valor 1" + Style.RESET_ALL,
|
156 |
+
Fore.BLUE + "Combinaci贸n" + Style.RESET_ALL]
|
157 |
+
|
158 |
+
# Diccionario de combinaciones agrupadas por ratio
|
159 |
+
combinaciones_por_ratio = defaultdict(set)
|
160 |
+
|
161 |
+
# Versos del G茅nesis Sefard铆 (ejemplo)
|
162 |
+
versos_genesis_sefardi = [
|
163 |
+
"讘专讗砖讬转 讘专讗 讗诇讛讬诐 讗转 讛砖诪讬诐 讜讗转 讛讗专抓",
|
164 |
+
"讜讛讗专抓 讛讬转讛 转讛讜 讜讘讛讜 讜讞砖讱 注诇志驻谞讬 转讛讜诐 讜专讜讞 讗诇讛讬诐 诪专讞驻转 注诇志驻谞讬 讛诪讬诐",
|
165 |
+
"讜讬讗诪专 讗诇讛讬诐 讬讛讬 讗讜专 讜讬讛讬志讗讜专",
|
166 |
+
"讜讬专讗 讗诇讛讬诐 讗转志讛讗讜专 讻讬志讟讜讘 讜讬讘讚诇 讗诇讛讬诐 讘讬谉 讛讗讜专 讜讘讬谉 讛讞砖讱",
|
167 |
+
"讜讬拽专讗 讗诇讛讬诐 诇讗讜专 讬讜诐 讜诇讞砖讱 拽专讗 诇讬诇讛 讜讬讛讬志注专讘 讜讬讛讬志讘拽专 讬讜诐 讗讞讚"
|
168 |
+
# Agrega m谩s versos seg煤n sea necesario...
|
169 |
+
]
|
170 |
+
versos_genesis_sefardi = json.loads(open("genesis.json","r").read())["text"][0]
|
171 |
+
|
172 |
+
# Funci贸n para obtener el primer par de letras de un verso
|
173 |
+
def obtener_primer_par_letras(verso):
|
174 |
+
for i in range(len(verso) - 1):
|
175 |
+
if verso[i].isalpha() and verso[i+1].isalpha():
|
176 |
+
return verso[i:i+2]
|
177 |
+
return None
|
178 |
+
|
179 |
+
# Diccionario para almacenar el primer par de letras y su ratio por verso
|
180 |
+
primer_par_por_verso = {}
|
181 |
+
for verso in versos_genesis_sefardi:
|
182 |
+
primer_par = obtener_primer_par_letras(verso)
|
183 |
+
if primer_par:
|
184 |
+
suma, producto, ratio = calcular_valores(primer_par)
|
185 |
+
primer_par_por_verso[verso] = (primer_par, ratio)
|
186 |
+
|
187 |
+
# Diccionario para agrupar los primeros pares de letras por ratio
|
188 |
+
primer_par_por_ratio = defaultdict(list)
|
189 |
+
for verso, (primer_par, ratio) in primer_par_por_verso.items():
|
190 |
+
primer_par_por_ratio[ratio].append((primer_par, verso))
|
191 |
+
|
192 |
+
# Crear la tabla de primeros pares de letras por ratio
|
193 |
+
table_primer_par = PrettyTable()
|
194 |
+
table_primer_par.field_names = [Fore.BLUE + "Ratio" + Style.RESET_ALL, Fore.BLUE + "Primer Par" + Style.RESET_ALL, Fore.BLUE + "Verso" + Style.RESET_ALL]
|
195 |
+
for ratio, pares_verso in sorted(primer_par_por_ratio.items(), key=lambda x: x[0], reverse=True):
|
196 |
+
for primer_par, verso in pares_verso:
|
197 |
+
table_primer_par.add_row([f"{ratio:.2f}", primer_par, verso])
|
198 |
+
|
199 |
+
print(table_primer_par)
|
200 |
+
|
201 |
+
# Procesar combinaciones y crear la tabla principal
|
202 |
+
for idx, combinacion in enumerate(combinaciones, start=1):
|
203 |
+
suma, producto, ratio = calcular_valores(combinacion)
|
204 |
+
combinacion_str = combinacion
|
205 |
+
# Resaltar en verde si la combinaci贸n est谩 en el conjunto de combinaciones del G茅nesis Sefard铆
|
206 |
+
if combinacion in set(''.join(obtener_primer_par_letras(verso)) for verso in versos_genesis_sefardi):
|
207 |
+
combinacion_str = Fore.GREEN + combinacion + Style.RESET_ALL
|
208 |
+
table.add_row([idx, producto, suma, f"{ratio:.2f}", gematria(combinacion[1]), gematria(combinacion[0]), combinacion_str])
|
209 |
+
combinaciones_por_ratio[ratio].add(combinacion)
|
210 |
+
|
211 |
+
# Mostrar la tabla de combinaciones
|
212 |
+
print("\nTabla de combinaciones:")
|
213 |
+
print(table)
|
214 |
+
|
215 |
+
# Mostrar la tabla de combinaciones agrupadas por ratio
|
216 |
+
print("\nTabla de combinaciones agrupadas por ratio:")
|
217 |
+
table_ratio = PrettyTable()
|
218 |
+
table_ratio.field_names = [Fore.BLUE + "Ratio" + Style.RESET_ALL, Fore.BLUE + "Combinaciones" + Style.RESET_ALL]
|
219 |
+
for ratio, combinaciones in sorted(combinaciones_por_ratio.items(), key=lambda x: x[0], reverse=True):
|
220 |
+
combinaciones_str = ", ".join(combinaciones)
|
221 |
+
table_ratio.add_row([f"{ratio:.2f}", combinaciones_str])
|
222 |
+
print(table_ratio)
|
223 |
+
|
224 |
+
if __name__ == "__main__":
|
225 |
+
main()
|
226 |
+
|