├── README.md ├── Week 2 ├── week2i.py └── week2ii.py ├── Week 3 ├── week3i.py └── week3ii.py ├── Week 4 ├── week4i.py └── week4ii.py ├── Week 5 ├── week5i.py └── week5ii.py └── Week 8 └── week8.py /README.md: -------------------------------------------------------------------------------- 1 | # Programming, Data Structures and Algorithms using Python - NPTEL 2 | 3 | This repository contains the solutions of the course Programming, Data Structures and Algorithms using Python[2019 Jan-Mar] course in NPTEL 4 | Here's the link for the course: https://onlinecourses.nptel.ac.in/noc19_cs08 5 | -------------------------------------------------------------------------------- /Week 2/week2i.py: -------------------------------------------------------------------------------- 1 | #link for question 2 | #https://onlinecourses.nptel.ac.in/noc19_cs08/progassignment?name=98 3 | 4 | def intreverse(n): 5 | #alternative version 6 | #r=0; 7 | #while(n!=0): 8 | # (r,n)=(r*10+n%10,n//10); 9 | return int(str(n)[-1::-1]); 10 | 11 | def matched(s): 12 | stack=[]; 13 | for i in s: 14 | if(i=='('): 15 | stack.append('('); 16 | elif(i==')'): 17 | try: 18 | stack.pop(); 19 | except IndexError: 20 | return False; 21 | if(stack==[]): 22 | return True; 23 | return False; 24 | 25 | def sumprimes(l): 26 | sum=0; 27 | for i in l: 28 | if(isprime(i)): 29 | sum=sum+i; 30 | return sum; 31 | 32 | def isprime(n): 33 | if(n<=1): 34 | return False; 35 | for i in range(2,int(n**0.5)+1): 36 | if(n%i==0): 37 | return False; 38 | return True; 39 | -------------------------------------------------------------------------------- /Week 2/week2ii.py: -------------------------------------------------------------------------------- 1 | #link for question 2 | #https://onlinecourses.nptel.ac.in/noc19_cs08/progassignment?name=99 3 | 4 | def isprime(n): 5 | if(n<=1): 6 | return False; 7 | for i in range(2,int(n**0.5)+1): 8 | if(n%i==0): 9 | return False; 10 | return True; 11 | 12 | def prime_generator(n): 13 | for i in range(2,n): 14 | if(isprime(i)): 15 | yield i; 16 | 17 | def primepartition(n): 18 | #alternative version 19 | #if(n<=3): 20 | # return False; 21 | #for i in range(1,n): 22 | # if(isprime(i) and isprime(n-i)): 23 | # return True; 24 | #return False; 25 | prime=prime_generator(n); 26 | while(True): 27 | try: 28 | i=next(prime); 29 | except Exception: 30 | return False; 31 | if(isprime(n-i)): 32 | return True; 33 | return False; 34 | 35 | def nestingdepth(s): 36 | stack=[]; 37 | maxi=0; 38 | depth=0; 39 | for i in s: 40 | if(i=='('): 41 | stack.append('('); 42 | depth+=1; 43 | elif(i==')'): 44 | try: 45 | stack.pop(); 46 | depth-=1; 47 | except IndexError: 48 | return -1; 49 | if(maxil[j] and flow=='inc'): 20 | inc=inc+1; 21 | elif(l[i]=2 and dec>=2): 30 | return True; 31 | return False; 32 | 33 | def transpose(m): 34 | #alternative version 35 | #import numpy as np 36 | #ar=np.array(m); 37 | #return [list(i) for i in ar.transpose()]; 38 | s=[]; 39 | n=len(m[0]); 40 | for i in range(n): 41 | s.append([j[i] for j in m]); 42 | #k=[]; 43 | #for j in m: 44 | # k.append(j[0]); 45 | #s.append(k); 46 | return s; 47 | -------------------------------------------------------------------------------- /Week 3/week3ii.py: -------------------------------------------------------------------------------- 1 | #link for question 2 | #https://onlinecourses.nptel.ac.in/noc19_cs08/progassignment?name=102 3 | 4 | def progression(l): 5 | i,j=0,1; 6 | n=len(l); 7 | if(n<=1): 8 | return True; 9 | d=l[0]-l[1]; 10 | while(jmaxi[1]): 15 | maxi=(player,score); 16 | return maxi; 17 | 18 | def addpoly(p1,p2): 19 | result=[]; 20 | i1,i2=0,0; 21 | l1,l2=len(p1),len(p2); 22 | while(i1p2[i2][1]): 24 | result.append(p1[i1]); 25 | i1+=1; 26 | elif(p1[i1][1]= 0 and high < length and string[low] == string[high]: 14 | if high - low + 1 > maxLength: 15 | start = low 16 | maxLength = high - low + 1 17 | low -= 1 18 | high += 1 19 | low = i - 1 20 | high = i + 1 21 | while low >= 0 and high < length and string[low] == string[high]: 22 | if high - low + 1 > maxLength: 23 | start = low 24 | maxLength = high - low + 1 25 | low -= 1 26 | high += 1 27 | return maxLength,string[start:start + maxLength] 28 | n=int(input()); 29 | s=input(); 30 | l=longestPalSubstr(s) 31 | print(l[0],l[1],sep='\n'); 32 | --------------------------------------------------------------------------------