human
Longest Arithmetic Progression | DP | Returns length of the longest AP subset in a given set.
Create a table and initialize all values as 2. The value of L [ i ] [ j ] stores LLAP with set [ i ] and set [ j ] as first two elements of AP . Only valid entries are the entries where j > i.
Initialize the result.
Fill entries in last column as 2. There will always be two elements in AP with last number of set as second element in AP.
Consider every element as second element of AP.
Search for i and k for j.
Before changing i , set L [ i ] [ j ] as 2.
Found i and k for j , LLAP with i and j as first two elements are equal to LLAP with j and k as first two elements plus 1. L [ j ] [ k ] must have been filled before as we run the loop from right side.
Update overall LLAP , if needed.
Change i and k to fill more L [ i ] [ j ] values for current j.
If the loop was stopped due to k becoming more than n - 1 , set the remaining entities in column j as 2.
Driver Code"
Solution in Python:

=====
Write me a code to longest Arithmetic Progression and the other steps required?
assistant
#Here is code to longest Arithmetic Progression and the other steps required.
 def lenghtOfLongestAP ( set , n ) :
	if ( n <= 2 ) :
		return n
	L = [ [ 0 for x in range ( n ) ] for y in range ( n ) ]
	llap = 2
	for i in range ( n ) :
		L [ i ] [ n - 1 ] = 2
	for j in range ( n - 2 , 0 , - 1 ) :
		i = j - 1
		k = j + 1
		while ( i >= 0 and k <= n - 1 ) :
			if ( set [ i ] + set [ k ] < 2 * set [ j ] ) :
				k += 1
			elif ( set [ i ] + set [ k ] > 2 * set [ j ] ) :
				L [ i ] [ j ] = 2
				i -= 1
			else :
				L [ i ] [ j ] = L [ j ] [ k ] + 1
				llap = max ( llap , L [ i ] [ j ] )
				i -= 1
				k += 1
				while ( i >= 0 ) :
					L [ i ] [ j ] = 2
					i -= 1
	return llap
if __name__ == " _ _ main _ _ " :
	set1 = [ 1 , 7 , 10 , 13 , 14 , 19 ]
	n1 = len ( set1 )
	print ( lenghtOfLongestAP ( set1 , n1 ) )
	set2 = [ 1 , 7 , 10 , 15 , 27 , 29 ]
	n2 = len ( set2 )
	print ( lenghtOfLongestAP ( set2 , n2 ) )
	set3 = [ 2 , 4 , 6 , 8 , 10 ]
	n3 = len ( set3 )
	print ( lenghtOfLongestAP ( set3 , n3 ) )