From 3677ae08e538fcc927c6b24fb82b355af21a97fd Mon Sep 17 00:00:00 2001 From: mikelfried Date: Thu, 27 Dec 2018 18:00:39 +0200 Subject: [PATCH 1/4] avrage.py calculate and print the avrage of number list. --- Maths/avrage.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Maths/avrage.py diff --git a/Maths/avrage.py b/Maths/avrage.py new file mode 100644 index 000000000000..ee102ea687ce --- /dev/null +++ b/Maths/avrage.py @@ -0,0 +1,14 @@ +def avrage(nums): + sum = 0 + n = 0 + for x in nums: + sum += x + n += 1 + avg = sum / n + print(avg) + +def main(): + avrage([2, 4, 6, 8, 20, 50, 70]) + +if __name__ == '__main__': + main() From ae933ba2d38b1486bdde74e4fe3c280c6203ba27 Mon Sep 17 00:00:00 2001 From: Michael Fried Date: Sat, 29 Dec 2018 22:03:16 +0200 Subject: [PATCH 2/4] Update base64_cipher.py encoding and decoding base64 without any module. --- ciphers/base64_cipher.py | 65 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 6 deletions(-) diff --git a/ciphers/base64_cipher.py b/ciphers/base64_cipher.py index 975f24d6bb5d..fa3451c0cbae 100644 --- a/ciphers/base64_cipher.py +++ b/ciphers/base64_cipher.py @@ -1,11 +1,64 @@ -import base64 +def encodeBase64(text): + base64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" + + r = "" #the result + c = 3 - len(text) % 3 #the length of padding + p = "=" * c #the padding + s = text + "\0" * c #the text to encode + + i = 0 + while i < len(s): + if i > 0 and ((i / 3 * 4) % 76) == 0: + r = r + "\r\n" + + n = (ord(s[i]) << 16) + (ord(s[i+1]) << 8 ) + ord(s[i+2]) + + n1 = (n >> 18) & 63 + n2 = (n >> 12) & 63 + n3 = (n >> 6) & 63 + n4 = n & 63 + + r += base64chars[n1] + base64chars[n2] + base64chars[n3] + base64chars[n4] + i += 3 + + return r[0: len(r)-len(p)] + p + +def decodeBase64(text): + base64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" + s = "" + + for i in text: + if i in base64chars: + s += i + c = "" + else: + if i == '=': + c += '=' + + p = "" + if c == "=": + p = 'A' + else: + if c == "==": + p = "AA" + + r = "" + s = s + p + + i = 0 + while i < len(s): + n = (base64chars.index(s[i]) << 18) + (base64chars.index(s[i+1]) << 12) + (base64chars.index(s[i+2]) << 6) +base64chars.index(s[i+3]) + + r += chr((n >> 16) & 255) + chr((n >> 8) & 255) + chr(n & 255) + + i += 4 + + return r[0: len(r) - len(p)] def main(): - inp = input('->') - encoded = inp.encode('utf-8') #encoded the input (we need a bytes like object) - b64encoded = base64.b64encode(encoded) #b64encoded the encoded string - print(b64encoded) - print(base64.b64decode(b64encoded).decode('utf-8'))#decoded it + print(encodeBase64("WELCOME to base64 encoding")) + print(decodeBase64(encodeBase64("WELCOME to base64 encoding"))) + if __name__ == '__main__': main() From 1512fdddcc1dbe96e1a9991256780cbe0f51e2b4 Mon Sep 17 00:00:00 2001 From: Michael Fried Date: Sat, 29 Dec 2018 22:08:08 +0200 Subject: [PATCH 3/4] Update and rename avrage.py to average.py --- Maths/{avrage.py => average.py} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename Maths/{avrage.py => average.py} (73%) diff --git a/Maths/avrage.py b/Maths/average.py similarity index 73% rename from Maths/avrage.py rename to Maths/average.py index ee102ea687ce..dc70836b5e83 100644 --- a/Maths/avrage.py +++ b/Maths/average.py @@ -1,4 +1,4 @@ -def avrage(nums): +def average(nums): sum = 0 n = 0 for x in nums: @@ -8,7 +8,7 @@ def avrage(nums): print(avg) def main(): - avrage([2, 4, 6, 8, 20, 50, 70]) + average([2, 4, 6, 8, 20, 50, 70]) if __name__ == '__main__': main() From 9c39006bbf25459e5987fd064c1d77f4338083b6 Mon Sep 17 00:00:00 2001 From: Michael Fried Date: Sat, 19 Jan 2019 22:28:51 +0200 Subject: [PATCH 4/4] update find_lcm algorithm I made find_lcm more efficient form O(num1*num2) to O(min{num1,num2}). --- Maths/find_lcm.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Maths/find_lcm.py b/Maths/find_lcm.py index 58beb3e37649..126242699ab7 100644 --- a/Maths/find_lcm.py +++ b/Maths/find_lcm.py @@ -1,10 +1,11 @@ def find_lcm(num_1, num_2): max = num_1 if num_1 > num_2 else num_2 + lcm = max while (True): - if ((max % num_1 == 0) and (max % num_2 == 0)): + if ((lcm % num_1 == 0) and (lcm % num_2 == 0)): break - max += 1 - return max + lcm += max + return lcm def main():