mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-24 05:21:09 +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):
|
def find_lcm(num_1, num_2):
|
||||||
max = num_1 if num_1 > num_2 else num_2
|
max = num_1 if num_1 > num_2 else num_2
|
||||||
|
lcm = max
|
||||||
while (True):
|
while (True):
|
||||||
if ((max % num_1 == 0) and (max % num_2 == 0)):
|
if ((lcm % num_1 == 0) and (lcm % num_2 == 0)):
|
||||||
break
|
break
|
||||||
max += 1
|
lcm += max
|
||||||
return max
|
return lcm
|
||||||
|
|
||||||
|
|
||||||
def main():
|
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():
|
def main():
|
||||||
inp = input('->')
|
print(encodeBase64("WELCOME to base64 encoding"))
|
||||||
encoded = inp.encode('utf-8') #encoded the input (we need a bytes like object)
|
print(decodeBase64(encodeBase64("WELCOME to base64 encoding")))
|
||||||
b64encoded = base64.b64encode(encoded) #b64encoded the encoded string
|
|
||||||
print(b64encoded)
|
|
||||||
print(base64.b64decode(b64encoded).decode('utf-8'))#decoded it
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user