Noam_15

Gematria

Dec 24th, 2019
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.20 KB | None | 0 0
  1. # gematria_test.py
  2.  
  3. import unittest
  4. from unittest.case import expectedFailure
  5.  
  6. def main():
  7.     gematria = Gematria()
  8.     for number in range(1, 1000):
  9.         heb_value = gematria.number_to_hebrew(number)
  10.         print(heb_value)
  11.          
  12. class Gematria:
  13.     _heb_letters = [
  14.         ("א", 1),
  15.         ("ב", 2),
  16.         ("ג", 3),
  17.         ("ד", 4),
  18.         ("ה", 5),
  19.         ("ו", 6),
  20.         ("ז", 7),
  21.         ("ח", 8),
  22.         ("ט", 9),
  23.         ("י", 10),
  24.         ("כ", 20),
  25.         ("ל", 30),
  26.         ("מ", 40),
  27.         ("נ", 50),
  28.         ("ס", 60),
  29.         ("ע", 70),
  30.         ("פ", 80),
  31.         ("צ", 90),
  32.         ("ק", 100),
  33.         ("ר", 200),
  34.         ("ש", 300),
  35.         ("ת", 400)
  36.         ]
  37.  
  38.     def number_to_hebrew(self, number):
  39.         if number <= 0:
  40.             raise Exception("Number must be bigger than zero")
  41.         if number >= 1000:
  42.             raise Exception("Number bigger than 999 is not supported yet")
  43.  
  44.         remainder = number
  45.         heb_sum = ""
  46.         while remainder > 0:
  47.             for heb_letter, val in self._heb_letters[::-1]:
  48.                 if (val <= remainder):
  49.                     if remainder == 15:
  50.                         heb_sum += "טו"
  51.                         remainder = 0
  52.                     elif remainder == 16:
  53.                         heb_sum += "טז"
  54.                         remainder = 0
  55.                     else:
  56.                         heb_sum += heb_letter
  57.                         remainder -= val
  58.                     break
  59.         return heb_sum
  60.  
  61.  
  62. class Test_Gematria(unittest.TestCase):
  63.     gematria = Gematria()
  64.  
  65.     def test_simple_num(self):
  66.         self.assertEqual(self.gematria.number_to_hebrew(3), "ג")
  67.  
  68.     def test_15_num(self):
  69.         self.assertEqual(self.gematria.number_to_hebrew(15), "טו")
  70.  
  71.     def test_16_num(self):
  72.         self.assertEqual(self.gematria.number_to_hebrew(16), "טז")
  73.  
  74.     def test_random_tens_num_1(self):
  75.         self.assertEqual(self.gematria.number_to_hebrew(24), "כד")
  76.  
  77.     def test_random_tens_num_2(self):
  78.         self.assertEqual(self.gematria.number_to_hebrew(77), "עז")
  79.  
  80.     def test_random_hundreds_num_1(self):
  81.         self.assertEqual(self.gematria.number_to_hebrew(250), "רנ")
  82.  
  83.     def test_random_hundreds_num_2(self):
  84.         self.assertEqual(self.gematria.number_to_hebrew(499), "תצט")
  85.  
  86.     def test_bigger_than_800_num(self):
  87.         self.assertEqual(self.gematria.number_to_hebrew(822), "תתכב")
  88.  
  89.     def test_hundreds_num_that_ends_with_15(self):
  90.         self.assertEqual(self.gematria.number_to_hebrew(515), "תקטו")
  91.  
  92.     def test_hundreds_num_that_ends_with_16(self):
  93.         self.assertEqual(self.gematria.number_to_hebrew(516), "תקטז")
  94.  
  95.     def test_zero(self):
  96.         with self.assertRaises(Exception):
  97.             result = self.gematria.number_to_hebrew(0)
  98.  
  99.     def test_minus(self):
  100.         with self.assertRaises(Exception):
  101.             result = self.gematria.number_to_hebrew(-1)
  102.  
  103.     def test_too_big(self):
  104.         with self.assertRaises(Exception):
  105.             result = self.gematria.number_to_hebrew(1000)
  106.  
  107.  
  108. if __name__== "__main__":
  109.     main()
  110.     # unittest.main()
Advertisement
Add Comment
Please, Sign In to add comment