mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
Editing base64, Adding average file, Editing find_lcm (#673)
* avrage.py calculate and print the avrage of number list. * Update base64_cipher.py encoding and decoding base64 without any module. * Update and rename avrage.py to average.py * update find_lcm algorithm I made find_lcm more efficient form O(num1*num2) to O(min{num1,num2}).
This commit is contained in:
parent
ac28125060
commit
c92b02cfa3
14
Maths/average.py
Normal file
14
Maths/average.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
def average(nums):
|
||||
sum = 0
|
||||
n = 0
|
||||
for x in nums:
|
||||
sum += x
|
||||
n += 1
|
||||
avg = sum / n
|
||||
print(avg)
|
||||
|
||||
def main():
|
||||
average([2, 4, 6, 8, 20, 50, 70])
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -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():
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue
Block a user