Bin given limits: Difference between revisions

m
→‎{{header|REXX}}: simplified some code.
m (Correction to task description.)
m (→‎{{header|REXX}}: simplified some code.)
Line 553:
exit 0 /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
limsbins: parse arg limListnums; !.= #0; datum= words(limListnums); wbwc= 0 length(datum) /*max width binLimscount.*/
do j=1 for #; _= j - 1; @._= word(limList, j); wb= max(wb, length(@._) )
end /*j*/; return
/*──────────────────────────────────────────────────────────────────────────────────────*/
bins: parse arg nums; !.=0; datum= words(nums); wc= length(datum) /*max width count. */
do j=1 for datum; x= word(nums, j)
do k=0 for # /*find the bin that this number is in. */
if x < @.k then do; !.k= !.k + 1; iterate j; end /*bump thea bin counter.count*/
end /*k*/
!.k= !.k + 1 /*a number is larger> thanthe anyhighest bin limitspecified*/
end /*j*/; return
/*──────────────────────────────────────────────────────────────────────────────────────*/
lims: parse arg limList; #= words(limList); wb= 0 /*max width binLim*/
do j=1 for #; _= j - 1; @._= word(limList, j); wb= max(wb, length(@._) )
end /*j*/; return
/*──────────────────────────────────────────────────────────────────────────────────────*/
show: parse arg t; say center('t, 'arg(1)" ", 51 ); $= left('', 9) /*$: for indentation.*/
say center('' say center('', 51, "═") /*show title separator. */
jp= # - 1; ge= '≥'; le='<'; eq= ' count='
do j=0 for #; jm= j - 1; idxbin= right(@.j, wb); cnt= right(!.j, wc)
if j==0 then say $ left('', length(ge) +13+wb+2+length(..) )"<"le idxbin eq right(!.j, wc)
else say $ ge right(@.jm, wb) .. "<"le idxbin eq right(!.j, wc)
if j==jp then say $ ge right(@.jp, wb) left('', 3+length(..)+wb) eq right(!.#, wc)
end /*j*/; return</lang>
{{out|output|text=&nbsp; when using the internal default input:}}
<pre>