From e622141a76ed7ebac154d264e9f6b25ef76a9870 Mon Sep 17 00:00:00 2001 From: MaximSmolskiy Date: Sat, 1 Apr 2023 22:26:45 +0300 Subject: [PATCH 1/6] Reduce the complexity of boolean_algebra/quine_mc_cluskey.py --- boolean_algebra/quine_mc_cluskey.py | 40 ++++++++++++----------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/boolean_algebra/quine_mc_cluskey.py b/boolean_algebra/quine_mc_cluskey.py index 6788dfb28ba1..50a37d68f5f5 100644 --- a/boolean_algebra/quine_mc_cluskey.py +++ b/boolean_algebra/quine_mc_cluskey.py @@ -92,30 +92,23 @@ def selection(chart: list[list[int]], prime_implicants: list[str]) -> list[str]: temp = [] select = [0] * len(chart) for i in range(len(chart[0])): - count = 0 - rem = -1 - for j in range(len(chart)): - if chart[j][i] == 1: - count += 1 - rem = j + count = sum(chart[j][i] == 1 for j in range(len(chart))) if count == 1: + rem = max(j for j in range(len(chart)) if chart[j][i] == 1, default=-1) select[rem] = 1 for i in range(len(select)): - if select[i] == 1: - for j in range(len(chart[0])): - if chart[i][j] == 1: - for k in range(len(chart)): - chart[k][j] = 0 - temp.append(prime_implicants[i]) + if select[i] != 1: + continue + for j in range(len(chart[0])): + if chart[i][j] != 1: + continue + for k in range(len(chart)): + chart[k][j] = 0 + temp.append(prime_implicants[i]) while True: - max_n = 0 - rem = -1 - count_n = 0 - for i in range(len(chart)): - count_n = chart[i].count(1) - if count_n > max_n: - max_n = count_n - rem = i + counts = [chart[i].count(1) for i in range(len(chart))] + max_n = max(counts) + rem = counts.index(max_n) if max_n == 0: return temp @@ -123,9 +116,10 @@ def selection(chart: list[list[int]], prime_implicants: list[str]) -> list[str]: temp.append(prime_implicants[rem]) for i in range(len(chart[0])): - if chart[rem][i] == 1: - for j in range(len(chart)): - chart[j][i] = 0 + if chart[rem][i] != 1: + continue + for j in range(len(chart)): + chart[j][i] = 0 def prime_implicant_chart( From e35fe774ea7df2303ac5a24aef85626cb1f2ff86 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Sat, 1 Apr 2023 19:27:12 +0000 Subject: [PATCH 2/6] updating DIRECTORY.md --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 34967082b359..b1adc23f6e61 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -717,6 +717,7 @@ * [Archimedes Principle](physics/archimedes_principle.py) * [Casimir Effect](physics/casimir_effect.py) * [Centripetal Force](physics/centripetal_force.py) + * [Grahams Law](physics/grahams_law.py) * [Horizontal Projectile Motion](physics/horizontal_projectile_motion.py) * [Hubble Parameter](physics/hubble_parameter.py) * [Ideal Gas Law](physics/ideal_gas_law.py) From e152bb1293dcc49760670e8aca4fc70627e22bae Mon Sep 17 00:00:00 2001 From: MaximSmolskiy Date: Sat, 1 Apr 2023 22:29:11 +0300 Subject: [PATCH 3/6] Fix --- boolean_algebra/quine_mc_cluskey.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boolean_algebra/quine_mc_cluskey.py b/boolean_algebra/quine_mc_cluskey.py index 50a37d68f5f5..3bcc6b1b2dfa 100644 --- a/boolean_algebra/quine_mc_cluskey.py +++ b/boolean_algebra/quine_mc_cluskey.py @@ -94,7 +94,7 @@ def selection(chart: list[list[int]], prime_implicants: list[str]) -> list[str]: for i in range(len(chart[0])): count = sum(chart[j][i] == 1 for j in range(len(chart))) if count == 1: - rem = max(j for j in range(len(chart)) if chart[j][i] == 1, default=-1) + rem = max(j for j in range(len(chart)) if chart[j][i] == 1) select[rem] = 1 for i in range(len(select)): if select[i] != 1: From 1338d858997ce2f745fe1710780f854cd0035511 Mon Sep 17 00:00:00 2001 From: MaximSmolskiy Date: Sat, 5 Aug 2023 15:08:02 +0300 Subject: [PATCH 4/6] Fix review issues --- boolean_algebra/quine_mc_cluskey.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/boolean_algebra/quine_mc_cluskey.py b/boolean_algebra/quine_mc_cluskey.py index 3bcc6b1b2dfa..1a7addf83445 100644 --- a/boolean_algebra/quine_mc_cluskey.py +++ b/boolean_algebra/quine_mc_cluskey.py @@ -75,8 +75,8 @@ def is_for_table(string1: str, string2: str, count: int) -> bool: list1 = list(string1) list2 = list(string2) count_n = 0 - for i in range(len(list1)): - if list1[i] != list2[i]: + for element1, element2 in zip(list1, list2): + if element1 != element2: count_n += 1 return count_n == count @@ -92,18 +92,18 @@ def selection(chart: list[list[int]], prime_implicants: list[str]) -> list[str]: temp = [] select = [0] * len(chart) for i in range(len(chart[0])): - count = sum(chart[j][i] == 1 for j in range(len(chart))) + count = sum(row[i] == 1 for row in chart) if count == 1: - rem = max(j for j in range(len(chart)) if chart[j][i] == 1) + rem = max(j for j, row in enumerate(chart) if row[i] == 1) select[rem] = 1 - for i in range(len(select)): - if select[i] != 1: + for i, item in enumerate(select): + if item != 1: continue for j in range(len(chart[0])): if chart[i][j] != 1: continue - for k in range(len(chart)): - chart[k][j] = 0 + for row in chart: + row[j] = 0 temp.append(prime_implicants[i]) while True: counts = [chart[i].count(1) for i in range(len(chart))] From 31764fa82a5dd64a653419d74f2601eaeaf2bf49 Mon Sep 17 00:00:00 2001 From: MaximSmolskiy Date: Sat, 5 Aug 2023 15:10:04 +0300 Subject: [PATCH 5/6] Fix --- boolean_algebra/quine_mc_cluskey.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boolean_algebra/quine_mc_cluskey.py b/boolean_algebra/quine_mc_cluskey.py index 1a7addf83445..58df5246bca7 100644 --- a/boolean_algebra/quine_mc_cluskey.py +++ b/boolean_algebra/quine_mc_cluskey.py @@ -75,8 +75,8 @@ def is_for_table(string1: str, string2: str, count: int) -> bool: list1 = list(string1) list2 = list(string2) count_n = 0 - for element1, element2 in zip(list1, list2): - if element1 != element2: + for item1, item2 in zip(list1, list2): + if item1 != item2: count_n += 1 return count_n == count From c4c0fafe51ae9ccdbce95914ec2248f324cf7694 Mon Sep 17 00:00:00 2001 From: MaximSmolskiy Date: Mon, 14 Aug 2023 17:12:24 +0300 Subject: [PATCH 6/6] Fix review issues --- boolean_algebra/quine_mc_cluskey.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/boolean_algebra/quine_mc_cluskey.py b/boolean_algebra/quine_mc_cluskey.py index 58df5246bca7..8e22e66726d4 100644 --- a/boolean_algebra/quine_mc_cluskey.py +++ b/boolean_algebra/quine_mc_cluskey.py @@ -74,10 +74,7 @@ def is_for_table(string1: str, string2: str, count: int) -> bool: """ list1 = list(string1) list2 = list(string2) - count_n = 0 - for item1, item2 in zip(list1, list2): - if item1 != item2: - count_n += 1 + count_n = sum(item1 != item2 for item1, item2 in zip(list1, list2)) return count_n == count @@ -115,11 +112,11 @@ def selection(chart: list[list[int]], prime_implicants: list[str]) -> list[str]: temp.append(prime_implicants[rem]) - for i in range(len(chart[0])): - if chart[rem][i] != 1: + for j in range(len(chart[0])): + if chart[rem][j] != 1: continue - for j in range(len(chart)): - chart[j][i] = 0 + for i in range(len(chart)): + chart[i][j] = 0 def prime_implicant_chart(