Jump to content

Last list item: Difference between revisions

m
add REXX
(→‎{{header|C}}: Added second version as per Wren.)
m (add REXX)
Line 354:
243 378 [621]
</pre>
 
=={{header|REXX}}==
===With sorting===
<lang rexx>/* REXX */
List = '6 81 243 14 25 49 123 69 11'
Do Until words(list)=1
list=wordsort(list)
Say 'Sorted list:' list
Parse Var list a b c
Say 'Two smallest:' a '+' b '=' (a+b)
list=(a+b) c
End
Say 'Last item:' list
Exit
wordsort: Procedure
/**********************************************************************
* Sort the list of words supplied as argument. Return the sorted list
**********************************************************************/
Parse Arg wl
wa.=''
wa.0=0
Do While wl<>''
Parse Var wl w wl
Do i=1 To wa.0
If wa.i>w Then Leave
End
If i<=wa.0 Then Do
Do j=wa.0 To i By -1
ii=j+1
wa.ii=wa.j
End
End
wa.i=w
wa.0=wa.0+1
End
swl=''
Do i=1 To wa.0
swl=swl wa.i
End
Return strip(swl)</lang>
{{out}}
<Pre>Sorted list: 6 11 14 25 49 69 81 123 243
Two smallest: 6 + 11 = 17
Sorted list: 14 17 25 49 69 81 123 243
Two smallest: 14 + 17 = 31
Sorted list: 25 31 49 69 81 123 243
Two smallest: 25 + 31 = 56
Sorted list: 49 56 69 81 123 243
Two smallest: 49 + 56 = 105
Sorted list: 69 81 105 123 243
Two smallest: 69 + 81 = 150
Sorted list: 105 123 150 243
Two smallest: 105 + 123 = 228
Sorted list: 150 228 243
Two smallest: 150 + 228 = 378
Sorted list: 243 378
Two smallest: 243 + 378 = 621
Last item: 621</pre>
===Without sorting===
<lang rexx>/* REXX */
List = '6 81 243 14 25 49 123 69 11'
Do Until words(list)=1
Say 'List:' list
a=getmin()
b=getmin()
Say 'Two smallest:' a '+' b '=' (a+b)
list=list (a+b)
End
Say 'Last item:' list
Exit
 
getmin: Procedure Expose list
/* Return the smallest element of list and remove it from list */
min=1e9
Do i=1 To words(list)
If word(list,i)<min Then Do
m=word(list,i)
min=m
j=i
End
End
list=subword(list,1,j-1) subword(list,j+1)
Return m</lang>
{{out}}
<pre>List: 6 81 243 14 25 49 123 69 11
Two smallest: 6 + 11 = 17
List: 81 243 14 25 49 123 69 17
Two smallest: 14 + 17 = 31
List: 81 243 25 49 123 69 31
Two smallest: 25 + 31 = 56
List: 81 243 49 123 69 56
Two smallest: 49 + 56 = 105
List: 81 243 123 69 105
Two smallest: 69 + 81 = 150
List: 243 123 105 150
Two smallest: 105 + 123 = 228
List: 243 150 228
Two smallest: 150 + 228 = 378
List: 243 378
Two smallest: 243 + 378 = 621
Last item: 621</pre>
 
 
=={{header|Ring}}==
2,295

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.