Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
sjg21010 authored Apr 18, 2025
1 parent a0a4101 commit 79f6de1
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
9 changes: 8 additions & 1 deletion Test_Levenshtein_Edit_Distance.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
class TestEditDistance(unittest.TestCase):
def test_empty_strings(self):
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("", ""), 0)
self.assertEqual(Levenshtein_Edit_Distance.edit_distance(" ", " "), 0)

def test_identical_strings(self):
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("abcde", "abcde"), 0)
Expand All @@ -18,7 +19,6 @@ def test_different_lengths(self):
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("video", "nvidia"), 3)
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("uconn", "basketball"), 10)
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("national", "champions"), 6)


def test_same_lengths(self):
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("intention", "execution"), 5)
Expand All @@ -36,6 +36,13 @@ def test_different_cases(self):

def test_special_characters(self):
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("a|b^c}", "a&b#c."), 3)
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("hello@world", "hello#world"), 1)
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("test*#C$@", "test_(@$)"), 4)

def test_numeric_strings(self):
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("12345", "54321"), 4)
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("123abc", "abc123"), 6)
self.assertEqual(Levenshtein_Edit_Distance.edit_distance("456789", "456789"), 0)

if __name__ == '__main__':
unittest.main()
Expand Down
34 changes: 34 additions & 0 deletions Time_Levenshtein_Edit_Distance.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import random
import time
import sys
from Levenshtein_Edit_Distance import edit_distance
sys.setrecursionlimit(10**4)

# define a random string with any possible character from the alphabet
def random_string(length):
return ''.join(random.choices('abcdefghijklmnopqrstuvwxyz', k=length))

if __name__ == "__main__":
# sizes of the strings being tested
sizes = [1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000]

# number of trials per string size
trials = 10


print(f"{'Size of Input':<15}{'Average Time (seconds)':>20}")

for n in sizes:
times = []

for i in range(trials):
string1 = random_string(n)
string2 = random_string(n)
start_time = time.time()
edit_distance(string1, string2)
end_time = time.time()
times.append(end_time - start_time)

average_time = sum(times) / trials

print(f"{n:<15}{average_time:>20.6f}")

0 comments on commit 79f6de1

Please sign in to comment.