all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
47
Task/Sort-an-integer-array/REXX/sort-an-integer-array-1.rexx
Normal file
47
Task/Sort-an-integer-array/REXX/sort-an-integer-array-1.rexx
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
/*REXX program to sort (E-sort) an array (which contains integers). */
|
||||
numeric digits 30 /*handle larger numbers.*/
|
||||
a.1= 1
|
||||
a.2= 0
|
||||
a.3= -1
|
||||
a.4= 0
|
||||
a.5= 5
|
||||
a.6= 0
|
||||
a.7= -61
|
||||
a.8= 0
|
||||
a.9= 1385
|
||||
a.10= 0
|
||||
a.11= -50521
|
||||
a.12= 0
|
||||
a.13= 2702765
|
||||
a.14= 0
|
||||
a.15= -199360981
|
||||
a.16= 0
|
||||
a.17= 19391512145
|
||||
a.18= 0
|
||||
a.19= -2404879675441
|
||||
a.20= 0
|
||||
a.21= 370371188237525
|
||||
|
||||
size=21 /*have a list of 21 Euler numbers*/
|
||||
call tell 'un-sorted'
|
||||
call esort size
|
||||
call tell ' sorted'
|
||||
exit /*stick a fork in it, we're done.*/
|
||||
/*──────────────────────────────────ESORT subroutine────────────────────*/
|
||||
esort: procedure expose a.; parse arg N; h=N
|
||||
do while h>1; h=h%2
|
||||
do i=1 for N-h; j=i; k=h+i
|
||||
do while a.k<a.j
|
||||
parse value a.j a.k with a.k a.j /*swap two elements.*/
|
||||
if h>=j then leave; j=j-h; k=k-h
|
||||
end /*while a.k<a.j*/
|
||||
end /*i*/
|
||||
end /*while h>1*/
|
||||
return
|
||||
/*──────────────────────────────────TELL subroutine─────────────────────*/
|
||||
tell: say center(arg(1),50,'─')
|
||||
do j=1 for size
|
||||
say arg(1) 'array element' right(j,length(size))'='right(a.j,20)
|
||||
end /*j*/
|
||||
say
|
||||
return
|
||||
30
Task/Sort-an-integer-array/REXX/sort-an-integer-array-2.rexx
Normal file
30
Task/Sort-an-integer-array/REXX/sort-an-integer-array-2.rexx
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/*REXX program sorts (using E-sort) a list of some interesting integers.*/
|
||||
|
||||
/*quotes aren't needed if all elements in a list are non-negative.*/
|
||||
bell= 1 1 2 5 15 52 203 877 4140 21147 115975 /*some Bell numbers.*/
|
||||
bern= '1 -1 1 0 -1 0 1 0 -1 0 5 0 -691 0 7 0 -3617' /*some Bernoulli num*/
|
||||
perrin=3 0 2 3 2 5 5 7 10 12 17 22 29 39 51 68 90 /*some Perrin nums. */
|
||||
list=bell bern perrin /*throw 'em───>a pot*/
|
||||
say 'original =' list /*an annoucement... */
|
||||
size=words(list) /*nice to have SIZE.*/
|
||||
do j=1 for size /*build an array, 1 */
|
||||
a.j=word(list,j) /*element at a time.*/
|
||||
end /*j*/
|
||||
call esort size /*sort the stuff. */
|
||||
bList=a.1 /*start with 1st. */
|
||||
do k=2 to size /*build a list. */
|
||||
bList=bList a.k
|
||||
end /*k*/
|
||||
say ' sorted =' bList /*show & tell time. */
|
||||
exit /*stick a fork in it, we're done.*/
|
||||
/*──────────────────────────────────ESORT subroutine────────────────────*/
|
||||
esort: procedure expose a.; parse arg N; h=N
|
||||
do while h>1; h=h%2
|
||||
do i=1 for N-h; j=i; k=h+i
|
||||
do while a.k<a.j
|
||||
parse value a.j a.k with a.k a.j /*swap two elements.*/
|
||||
if h>=j then leave; j=j-h; k=k-h
|
||||
end /*while a.k<a.j*/
|
||||
end /*i*/
|
||||
end /*while h>1*/
|
||||
return
|
||||
Loading…
Add table
Add a link
Reference in a new issue