Maximum difference between adjacent elements of list: Difference between revisions

From Rosetta Code
Content added Content deleted
No edit summary
Line 5: Line 5:
The list may have a negative value, a zero value, a real number.
The list may have a negative value, a zero value, a real number.
<br>
<br>
List = [2, -3 ,0, 1, 1, -2.3, 0, 5.5, 8, 6, 2, 9, 11, 8, 1]
List = [1,8,2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,10,3]
<br>

Output would be:
<br>
2,9 ==> 7
1,8 ==> 7
10,3 ==> 7
<br><br>
<br><br>


Line 12: Line 17:
<lang ring>
<lang ring>
see "working..." + nl
see "working..." + nl
strList = "[2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,8,1]"
strList = "[1,8,2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,10,3]"
see "Maximum difference between adjacent elements of list is:" + nl + nl
see "Maximum difference between adjacent elements of list is:" + nl + nl
see "Input list = " + strList + nl + nl
see "Input list = " + strList + nl + nl
see "Output:" + nl
see "Output:" + nl
sList = [2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,8,1]
sList = [1,8,2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,10,3]
sortList = []
sortList = []


Line 29: Line 34:
sortList = sort(sortlist,1)
sortList = sort(sortlist,1)
sortList = reverse(sortlist)
sortList = reverse(sortlist)
flag = 1


for n=1 to len(sortList)-1
for n=1 to len(sortList)-1
Line 41: Line 47:
ok
ok
if oldDiff1 = oldDiff2
if oldDiff1 = oldDiff2
if flag = 1
see "" + first1 + "," + second1 + " ==> " + oldDiff1 + nl
see "" + first2 + "," + second2 + " ==> " + oldDiff2 + nl
flag = 0
see "" + first1 + "," + second1 + " ==> " + oldDiff1 + nl
see "" + first2 + "," + second2 + " ==> " + oldDiff2 + nl
else
see "" + first2 + "," + second2 + " ==> " + oldDiff2 + nl
ok
else
else
exit
exit
Line 55: Line 66:
Maximum difference between adjacent elements of list is:
Maximum difference between adjacent elements of list is:


Input list = [2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,8,1]
Input list = [1,8,2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,10,3]


Output:
Output:
2,9 ==> 7
2,9 ==> 7
8,1 ==> 7
1,8 ==> 7
10,3 ==> 7
done...
done...
</pre>
</pre>

Revision as of 14:44, 18 July 2021

Maximum difference between adjacent elements of list is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Task
Find maximum difference between adjacent elements of list.


The list may have a negative value, a zero value, a real number.
List = [1,8,2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,10,3]
Output would be:
2,9 ==> 7 1,8 ==> 7 10,3 ==> 7

Ring

<lang ring> see "working..." + nl strList = "[1,8,2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,10,3]" see "Maximum difference between adjacent elements of list is:" + nl + nl see "Input list = " + strList + nl + nl see "Output:" + nl sList = [1,8,2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,10,3] sortList = []

for n = 1 to len(sList)-1

   diff = fabs(sList[n]-sList[n+1])
   oldDiff = diff
   first = sList[n]
   second = sList[n+1]
   add(sortList,[oldDiff,first,second])

next

sortList = sort(sortlist,1) sortList = reverse(sortlist) flag = 1

for n=1 to len(sortList)-1

   oldDiff1 = sortlist[n][1]
   oldDiff2 = sortlist[n+1][1] 
   first1 = sortlist[n][2]
   second1 = sortlist[n][3]
   first2 = sortlist[n+1][2]
   second2 = sortlist[n+1][3]
   if n = 1 and oldDiff1 != oldDiff2
      see "" + first1 + "," + second1 + " ==> " + oldDiff1 + nl 
   ok
   if oldDiff1 = oldDiff2
      if flag = 1
         flag = 0
         see "" + first1 + "," + second1 + " ==> " + oldDiff1 + nl   
         see "" + first2 + "," + second2 + " ==> " + oldDiff2 + nl
      else
         see "" + first2 + "," + second2 + " ==> " + oldDiff2 + nl
      ok
   else
      exit
   ok

next

see "done..." + nl </lang>

Output:
working...
Maximum difference between adjacent elements of list is:

Input list = [1,8,2,-3,0,1,1,-2.3,0,5.5,8,6,2,9,11,10,3]

Output:
2,9 ==> 7
1,8 ==> 7
10,3 ==> 7
done...

XPL0

<lang XPL0>real List, Dist, MaxDist; int I; [List:= [2., -3., 0., 1., 1., -2.3, 0., 5.5, 8., 6., 2., 9., 11., 8., 1.]; MaxDist:= 0.; for I:= 0 to 15-2 do

   [Dist:= abs(List(I) - List(I+1));
   if Dist > MaxDist then
       MaxDist:= Dist;
   ];

RlOut(0, MaxDist); ]</lang>

Output:
    7.00000