= {
gematria_map 'ا': 1, 'ي': 10, 'ق': 100, 'غ': 1000,
'ب': 2, 'ك': 20, 'ر': 200, 'بغ': 2000,
'ج': 3, 'ل': 30, 'ش': 300, 'جغ': 3000,
'د': 4, 'م': 40, 'ت': 400, 'دغ': 4000,
'ه': 5, 'ن': 50, 'ث': 500, 'هغ': 5000,
'و': 6, 'س': 60, 'خ': 600, 'وغ': 6000,
'ز': 7, 'ع': 70, 'ذ': 700, 'زغ': 7000,
'ح': 8, 'ف': 80, 'ض': 800, 'حغ': 8000,
'ط': 9, 'ص': 90, 'ظ': 900, 'طغ': 9000,
}
حساب الجُمَّل
المسألة
حِسَاب الجُمَّل وهو حساب استخدم في اللغات السامية؛ حيث نجده مستعملًا في بلاد الهند قديمًا، وعند اليهود؛ فالأبجدية العبرية تتطابق مع الأبجدية العربية حتى حرف التاء (أبجد، هوز، حطي، كلمن، سعفص، قرشت) أي تتكون من 22 حرفا وتزيد العربية: (ثخذ، ضظغ). واستخدمه المسلمون في تثبيت التاريخ. لكل حرف مدلول رقمي يبدأ بالرقم 1 وينتهي عند الرقم 1000.
حساب الجمَّل | |||||||
---|---|---|---|---|---|---|---|
ا | 1 | ي | 10 | ق | 100 | غ | 1000 |
ب | 2 | ك | 20 | ر | 200 | بغ | 2000 |
جـ | 3 | ل | 30 | ش | 300 | جغ | 3000 |
د | 4 | م | 40 | ت | 400 | دغ | 4000 |
هـ | 5 | ن | 50 | ث | 500 | هغ | 5000 |
و | 6 | س | 60 | خ | 600 | وغ | 6000 |
ز | 7 | ع | 70 | ذ | 700 | زغ | 7000 |
ح | 8 | ف | 80 | ض | 800 | حغ | 8000 |
ط | 9 | ص | 90 | ظ | 900 | طغ | 9000 |
اكتب تفاصيل الإجراء الذي يحسب الجمَّل لكلمة معينة.
def gematria(word: str) -> int:
pass
فإذا أرادوا كتابة الرقم (1240) كتبوا «غرم»، لأن الغين 1,000، والراء 200، والميم 40، فكانوا يراعون عند تركيب الجُمّل أن يكون الحرف المعبر عن العدد الأكبر في المقدمة، ثم يليه الأصغر منه وهكذا دواليك فنجد من الأمثلة على ذلك:
assert gematria('غرم') == 1240
assert gematria('رب') == 202
assert gematria('ريح') == 218
assert gematria('شعب') == 372
يقال أنه عندما توفي السلطان الظاهر برقوق أول سلاطين المماليك البرجية، قام بعض الظرفاء بصياغة عبارة تحدد تاريخ وفاته فقال: «وفاة برقوق في المشمش»، وعندما نحسب تاريخ وفاة برقوق وهي «في المشمش» يكون الناتج:
(80+10+1+30+40+300+40+300) = 801، وبالتالي فتكون العبارة: «وفاة برقوق 801» هجرية وذلك صحيح.
assert gematria('في المشمش') == 801 == 80+10+1+30+40+300+40+300
يقال أيضاً أن شاعراً يسمى الدّلنجاوي مات فرثاه صديق له فقال:
سألتُ الشّعرَ هل لكَ من صديقٍ | وقد سكنَ الدّلنجاويّ لحــده |
فصاحَ وخرّ مغشياً عليــــه | وأصبح راقداً في القبر عنــده |
فقلتُ لمن يقول الشعر أقْصِــر | لقد أرّختُ: مات الشعرُ بعـده |
ويتضح لنا أن تاريخ الوفاة يكون في معرفة حساب العبارة «مات الشعرُ بعدَهُ»، فيكون الحساب:
(40+1+400+1+30+300+70+200+2+70+4+5) = (1123)، وذلك يعني أن الشاعر الدلنجاوي توفي في عام 1123 للهجرة.
assert gematria('مات الشعر بعده') == 1123 == 40+1+400+1+30+300+70+200+2+70+4+5
الحل
حِسَاب الجُمَّل وهو حساب استخدم في اللغات السامية؛ حيث نجده مستعملًا في بلاد الهند قديمًا، وعند اليهود؛ فالأبجدية العبرية تتطابق مع الأبجدية العربية حتى حرف التاء (أبجد، هوز، حطي، كلمن، سعفص، قرشت) أي تتكون من 22 حرفا وتزيد العربية: (ثخذ، ضظغ). واستخدمه المسلمون في تثبيت التاريخ. لكل حرف مدلول رقمي يبدأ بالرقم 1 وينتهي عند الرقم 1000.
حساب الجمَّل | |||||||
---|---|---|---|---|---|---|---|
ا | 1 | ي | 10 | ق | 100 | غ | 1000 |
ب | 2 | ك | 20 | ر | 200 | بغ | 2000 |
جـ | 3 | ل | 30 | ش | 300 | جغ | 3000 |
د | 4 | م | 40 | ت | 400 | دغ | 4000 |
هـ | 5 | ن | 50 | ث | 500 | هغ | 5000 |
و | 6 | س | 60 | خ | 600 | وغ | 6000 |
ز | 7 | ع | 70 | ذ | 700 | زغ | 7000 |
ح | 8 | ف | 80 | ض | 800 | حغ | 8000 |
ط | 9 | ص | 90 | ظ | 900 | طغ | 9000 |
اكتب تفاصيل الإجراء الذي يحسب الجمَّل لكلمة معينة.
أولاً نعرّف قاموسًا يحول الحروف إلى أرقام:
ثم نعرّف الإجراء بأنه يأخذ نصًّا str
ويُنتج رقمًا int
:
def gematria(word: str) -> int:
= 0
total for i in range(0, len(word), 2):
= word[i:i+2]
pair if pair in gematria_map:
+= gematria_map[pair]
total else:
= pair
a, b if a in gematria_map:
+= gematria_map[a]
total if b in gematria_map:
+= gematria_map[b]
total return total
- يبدأ الحساب بمتغير
total
يساوي 0 - نأتي على الكلمة حرفين ثم ننتقل منهما إلى الحرفين التاليين (وذلك بتحديد حجم الخطوة: 2)
for i in range(0, len(word), 2)
- نقرأ الحرفين معًا:
pair = word[i:i+2]
من الموضعi
إلى الموضعi+2
؛ فهذه شريحة مكوَّنة من نص فيه حرفان - إذا كان هذ الزوج موجودًا في القاموس
gematria_map
، فإننا نضيف قيمته إلى المتغيرtotal
- فإن لم يكن موجودًا فإننا نعتبر كل حرفٍ على حدة:
a, b = pair
- فإن كان الأول موجودًا في القاموس فإننا نضيف قيمته إلى المتغير
total
- وإن كان الثاني موجودًا في القاموس فإننا نضيف قيمته إلى المتغير
total
- وأخيرًا نعيد المتغير
return total
فإذا أرادوا كتابة الرقم (1240) كتبوا «غرم»، لأن الغين 1,000، والراء 200، والميم 40، فكانوا يراعون عند تركيب الجُمّل أن يكون الحرف المعبر عن العدد الأكبر في المقدمة، ثم يليه الأصغر منه وهكذا دواليك فنجد من الأمثلة على ذلك:
assert gematria('غرم') == 1240
assert gematria('رب') == 202
assert gematria('ريح') == 218
assert gematria('شعب') == 372
يقال أنه عندما توفي السلطان الظاهر برقوق أول سلاطين المماليك البرجية، قام بعض الظرفاء بصياغة عبارة تحدد تاريخ وفاته فقال: «وفاة برقوق في المشمش»، وعندما نحسب تاريخ وفاة برقوق وهي «في المشمش» يكون الناتج:
(80+10+1+30+40+300+40+300) = 801، وبالتالي فتكون العبارة: «وفاة برقوق 801» هجرية وذلك صحيح.
assert gematria('في المشمش') == 801 == 80+10+1+30+40+300+40+300
يقال أيضاً أن شاعراً يسمى الدّلنجاوي مات فرثاه صديق له فقال:
سألتُ الشّعرَ هل لكَ من صديقٍ | وقد سكنَ الدّلنجاويّ لحــده |
فصاحَ وخرّ مغشياً عليــــه | وأصبح راقداً في القبر عنــده |
فقلتُ لمن يقول الشعر أقْصِــر | لقد أرّختُ: مات الشعرُ بعـده |
ويتضح لنا أن تاريخ الوفاة يكون في معرفة حساب العبارة «مات الشعرُ بعدَهُ»، فيكون الحساب:
(40+1+400+1+30+300+70+200+2+70+4+5) = (1123)، وذلك يعني أن الشاعر الدلنجاوي توفي في عام 1123 للهجرة.
assert gematria('مات الشعر بعده') == 1123 == 40+1+400+1+30+300+70+200+2+70+4+5