Spaces:
Sleeping
Sleeping
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 |
+
|