mirror of
https://bitbucket.org/Mattrixwv/pyclasses.git
synced 2025-12-06 18:33:58 -05:00
Added isPandigital function
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
#Python/pyClasses/StringAlgorithms.py
|
#Python/pyClasses/StringAlgorithms.py
|
||||||
#Matthew Ellison
|
#Matthew Ellison
|
||||||
# Created: 07-21-21
|
# Created: 07-21-21
|
||||||
#Modified: 07-21-21
|
#Modified: 10-11-21
|
||||||
#This file contains my library of string functions
|
#This file contains my library of string functions
|
||||||
"""
|
"""
|
||||||
Copyright (C) 2021 Matthew Ellison
|
Copyright (C) 2021 Matthew Ellison
|
||||||
@@ -59,3 +59,24 @@ def isPalindrome(str: str) -> bool:
|
|||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
#Returns true if the string passed to it is a pandigital
|
||||||
|
def isPandigitalFull(numStr: str, bottom: int, top: int) -> bool:
|
||||||
|
#Return false if top < bottom
|
||||||
|
if(top < bottom):
|
||||||
|
return False
|
||||||
|
|
||||||
|
#Return false if the wrong number of characters are in the string
|
||||||
|
if(len(numStr) != (top - bottom + 1)):
|
||||||
|
return False
|
||||||
|
|
||||||
|
#Make sure that all of the needed characters are in the string exactly one time
|
||||||
|
for cnt in range(bottom, top):
|
||||||
|
#Make sure there is exactly one of this number contained in the string
|
||||||
|
if(numStr.count(str(cnt)) != 1):
|
||||||
|
return False
|
||||||
|
|
||||||
|
#If the function has reached this part it has passed all of the falsifying tests
|
||||||
|
return True
|
||||||
|
def isPandigital(str: str) -> bool:
|
||||||
|
return isPandigitalFull(str, 1, 9)
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#Python/pyClasses/TestStringAlgorithms.py
|
#Python/pyClasses/TestStringAlgorithms.py
|
||||||
#Matthew Ellison
|
#Matthew Ellison
|
||||||
# Created: 07-21-21
|
# Created: 07-21-21
|
||||||
#Modified: 07-21-21
|
#Modified: 10-11-21
|
||||||
#Tests for my library of number algorithms
|
#Tests for my library of number algorithms
|
||||||
"""
|
"""
|
||||||
Copyright (C) 2021 Matthew Ellison
|
Copyright (C) 2021 Matthew Ellison
|
||||||
@@ -52,6 +52,43 @@ class TestStringAlgorithms(unittest.TestCase):
|
|||||||
answer = StringAlgorithms.isPalindrome(str)
|
answer = StringAlgorithms.isPalindrome(str)
|
||||||
self.assertEqual(correctAnswer, answer, "isPalindrome failed the third test")
|
self.assertEqual(correctAnswer, answer, "isPalindrome failed the third test")
|
||||||
|
|
||||||
|
def testIsPandigital(self):
|
||||||
|
#Test 1
|
||||||
|
str = "123456789"
|
||||||
|
correctAnswer = True
|
||||||
|
answer = StringAlgorithms.isPandigital(str)
|
||||||
|
self.assertEqual(correctAnswer, answer, "isPandigital failed the first test")
|
||||||
|
|
||||||
|
#Test 2
|
||||||
|
str = "123"
|
||||||
|
correctAnswer = True
|
||||||
|
answer = StringAlgorithms.isPandigitalFull(str, 1, 3)
|
||||||
|
self.assertEqual(correctAnswer, answer, "isPandigital failed the second test")
|
||||||
|
|
||||||
|
#Test 3
|
||||||
|
str = "123"
|
||||||
|
correctAnswer = False
|
||||||
|
answer = StringAlgorithms.isPandigital(str)
|
||||||
|
self.assertEqual(correctAnswer, answer, "isPandigital failed the third test")
|
||||||
|
|
||||||
|
#Test 4
|
||||||
|
str = "123"
|
||||||
|
correctAnswer = False
|
||||||
|
answer = StringAlgorithms.isPandigitalFull(str, 3, 1)
|
||||||
|
self.assertEqual(correctAnswer, answer, "isPandigital failed the fourth test")
|
||||||
|
|
||||||
|
#Test 5
|
||||||
|
str = "1"
|
||||||
|
correctAnswer = True
|
||||||
|
answer = StringAlgorithms.isPandigitalFull(str, 1, 1)
|
||||||
|
self.assertEqual(correctAnswer, answer, "isPandigital failed the fifth test")
|
||||||
|
|
||||||
|
#Test 6
|
||||||
|
str = "112"
|
||||||
|
correctAnswer = False
|
||||||
|
answer = StringAlgorithms.isPandigitalFull(str, 1, 3)
|
||||||
|
self.assertEqual(correctAnswer, answer, "isPandigital failed the sixth test")
|
||||||
|
|
||||||
|
|
||||||
#Run the unit test if the script is called
|
#Run the unit test if the script is called
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user