Przeglądaj źródła

Added utility function to check wether a number divides another number.

Taddeus Kroes 14 lat temu
rodzic
commit
a9858f37b6
2 zmienionych plików z 16 dodań i 1 usunięć
  1. 7 0
      src/rules/utils.py
  2. 9 1
      tests/test_rules_utils.py

+ 7 - 0
src/rules/utils.py

@@ -125,3 +125,10 @@ def substitute(f, x, replacement):
     children = map(lambda c: substitute(c, x, replacement), f)
 
     return N(f.op, *children)
+
+
+def divides(m, n):
+    """
+    Check if m | n (m divides n).
+    """
+    return not divmod(n, m)[1]

+ 9 - 1
tests/test_rules_utils.py

@@ -1,6 +1,7 @@
 from src.rules import utils
 from src.rules.utils import least_common_multiple, is_fraction, partition, \
-        find_variables, first_sorted_variable, find_variable, substitute
+        find_variables, first_sorted_variable, find_variable, substitute, \
+        divides
 from tests.rulestestcase import tree, RulesTestCase
 
 
@@ -57,3 +58,10 @@ class TestRulesUtils(RulesTestCase):
         self.assertEqual(substitute(tree('x2'), x, a), tree('a2'))
         self.assertEqual(substitute(tree('y + x + 1'), x, a),
                          tree('y + a + 1'))
+
+    def test_divides(self):
+        self.assertTrue(divides(3, 3))
+        self.assertTrue(divides(2, 4))
+        self.assertTrue(divides(7, 21))
+        self.assertFalse(divides(4, 2))
+        self.assertFalse(divides(2, 3))