From 9fb0189a02c809cc0e4a795b3663f78c794f4e62 Mon Sep 17 00:00:00 2001 From: Arju Aman <33257286+arjuaman@users.noreply.github.com> Date: Mon, 24 Aug 2020 21:13:09 +0530 Subject: [PATCH 1/3] Added docstring and it now takes input from user --- Basic-Scripts/selection_sort.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Basic-Scripts/selection_sort.py b/Basic-Scripts/selection_sort.py index e1362d74..cd9372b6 100644 --- a/Basic-Scripts/selection_sort.py +++ b/Basic-Scripts/selection_sort.py @@ -1,4 +1,5 @@ def selecsort(lst): + ''' It takes a list as input from the user and returns it's sorted version. ''' for i in range(len(lst)): minpos=i for j in range(i,len(lst)): @@ -6,6 +7,13 @@ def selecsort(lst): minpos=j (lst[i],lst[minpos])=(lst[minpos],lst[i]) - for item in lst: - print(item) -selecsort([1,5,87,2,-56,89]) + return lst; + +n = int(input("Enter the number of elements to sort: ")) +input_list = [] +for element in range(0,n): + cin = int(input("Enter the element: ")) + input_list.append(cin) + +sorted_list = selecsort(input_list) +print(sorted_list) From 198a1e27c9cd0fefc89646f155f9c8071cb0ae3d Mon Sep 17 00:00:00 2001 From: Arju Aman <33257286+arjuaman@users.noreply.github.com> Date: Sun, 30 Aug 2020 22:50:31 +0530 Subject: [PATCH 2/3] Add files via upload --- Basic-Scripts/karatsuba-mul.py | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Basic-Scripts/karatsuba-mul.py diff --git a/Basic-Scripts/karatsuba-mul.py b/Basic-Scripts/karatsuba-mul.py new file mode 100644 index 00000000..a57d14b8 --- /dev/null +++ b/Basic-Scripts/karatsuba-mul.py @@ -0,0 +1,66 @@ +import numpy as np +import sys +print(sys.getrecursionlimit()) +sys.setrecursionlimit(9000) +#x=3141592653589793238462643383279502884197169399375105820974944592 +#y=2718281828459045235360287471352662497757247093699959574966967627 +#len=64 +#x=5678 +#y=1234 +#l=4 +#b=x%100 +#a=(x-b)/100 +#d=y%100 +#c=(y-d)/100 +#ans=(a*c)*(10**4)+(b*d)+(a*d+b*c)*100 +#print(ans) + + +#b=x%(10**(len/2)) +#print(b) +#a=(x-b)/(len/2) +#x=(10**(len/2))*a+b +#d=y%(10**(len/2)) +#print(d) +#c=(y-d)/(len/2) +#y=(10**(len/2))*c+d +#ans=(a*c)*(10**len)+(b*d)+(a*d+b*c)*(10**(len/2)) +#print(ans) +#for equal digits in x and y +def karatsuba(x,y): + #len1=len(x) + count=0 + m=int(x) + len1=0 + while(m>0): + count=count+1 + m=m//10 + len1=count + + n=int(y) + count1=0 + len2=0 + while(n>0): + count1=count1+1 + n=n//10 + len2=count1 + + if(len1<=1 or len2<=1): + return (int(x)*int(y)) + else: + b=int(x)%(10**(len1//2)) + a=(int(x)-b)//(10**(len1//2)) + #x=(10**(len/2))*a+b + d=int(y)%(10**(len1//2)) + c=(int(y)-d)//(10**(len1//2)) + #y=(10**(len/2))*c+d + #ans=(a*c)*(10**len)+(b*d)+(a*d+b*c)*(10**(len/2)) + f1=karatsuba(a,c) + f2=karatsuba(b,d) + f3=karatsuba(a+b,c+d) + return (f1*(10**len1)+f2+(f3-f1-f2)*(10**(len1/2))) + +var1=str(3141592653589793238462643383279502884197169399375105820974944592) +var2=str(2718281828459045235360287471352662497757247093699959574966967627) +print(karatsuba(var1,var2)) +#print(karatsuba(1200,1400)) From 9abbfd2924a9572db5725f996804e349ecd284b5 Mon Sep 17 00:00:00 2001 From: Arju Aman <33257286+arjuaman@users.noreply.github.com> Date: Sun, 30 Aug 2020 22:54:31 +0530 Subject: [PATCH 3/3] Added docstring and user input functionality --- Basic-Scripts/karatsuba-mul.py | 33 ++++++--------------------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/Basic-Scripts/karatsuba-mul.py b/Basic-Scripts/karatsuba-mul.py index a57d14b8..33dee802 100644 --- a/Basic-Scripts/karatsuba-mul.py +++ b/Basic-Scripts/karatsuba-mul.py @@ -2,33 +2,12 @@ import sys print(sys.getrecursionlimit()) sys.setrecursionlimit(9000) -#x=3141592653589793238462643383279502884197169399375105820974944592 -#y=2718281828459045235360287471352662497757247093699959574966967627 -#len=64 -#x=5678 -#y=1234 -#l=4 -#b=x%100 -#a=(x-b)/100 -#d=y%100 -#c=(y-d)/100 -#ans=(a*c)*(10**4)+(b*d)+(a*d+b*c)*100 -#print(ans) -#b=x%(10**(len/2)) -#print(b) -#a=(x-b)/(len/2) -#x=(10**(len/2))*a+b -#d=y%(10**(len/2)) -#print(d) -#c=(y-d)/(len/2) -#y=(10**(len/2))*c+d -#ans=(a*c)*(10**len)+(b*d)+(a*d+b*c)*(10**(len/2)) -#print(ans) -#for equal digits in x and y def karatsuba(x,y): - #len1=len(x) + ''' The function takes two numbers in string format. + The Karatsuba algorithm is a fast multiplication algorithm, using Divide and Conquer approach. + It reduces the multiplication of two n-digit numbers to at most single-digit multiplications in general. ''' count=0 m=int(x) len1=0 @@ -60,7 +39,7 @@ def karatsuba(x,y): f3=karatsuba(a+b,c+d) return (f1*(10**len1)+f2+(f3-f1-f2)*(10**(len1/2))) -var1=str(3141592653589793238462643383279502884197169399375105820974944592) -var2=str(2718281828459045235360287471352662497757247093699959574966967627) +var1 = input('Enter number 1') +var2 = input('Enter number 2') print(karatsuba(var1,var2)) -#print(karatsuba(1200,1400)) +