Jump to content

Ludic numbers: Difference between revisions

m
→‎{{header|REXX}}: added/changed comments and whitespace.
m (→‎{{header|REXX}}: added/changed comments and whitespace.)
Line 3,319:
 
=={{header|REXX}}==
<lang rexx>/*REXX program displaysgens/shows (a range of) ludic numbers, or a count of when a range is used.*/
parse arg N count bot top triples . /*obtain optional arguments from the CL*/
if N=='' | N=="," then N=25 25 /*Not specified? Then use the default.*/
if count=='' | count=="," then count=1000 1000 /* " " " " " " */
if bot=='' | bot=="," then bot=2000 2000 /* " " " " " " */
if top=='' | top=="," then top=2005 2005 /* " " " " " " */
if triples=='' | triples=="," then triples=250-1 249 /* " " " " " " */
$#=ludic( max(N,0 count, bot, top, triples) ) /*generatethe enoughnumber of ludic numsnumbers (so far).*/
say$= 'Theludic( firstmax(N, 'count, bot, Ntop, triples) ") ludic numbers: " subword($,1,25) /*display 1st N /*generate enough ludic nums.*/
say 'The first ' N " ludic numbers: do" j=1 until wordsubword($, j1,25) > count; end /*processdisplay 1st up toN a specificludic #.nums*/
do j=1 until word($, j) > count /*search up to a specific #.*/
end /*j*/
say
say "There are " j - 1 ' ludic numbers that are ≤ ' count
say
say "The " bot '───►' top ' (inclusive) ludic numbers are: ' subword($, bot)
@= /*list of ludic triples found (so far).*/
#=0
@=; do j=1 for words($); _=word($,j) /*it is known that ludic _ exists. */
_= word($, j) /*it is known that ludic _ exists. */
if _>=triples then leave /*only process up to a specific number.*/
if wordpos(_+2, $)==0 | wordpos(_+6, $)==0 then iterate /*Not triple? Skip it.*/
#= # + 1; @=@ '◄'_ _+2 _+6"► " /*bump the triple counter,. and ··· */
end /*j*/ @= @ '◄'_ _+2 _+6"► " /* [↑] append the newly found triple ──► @ */
end /*j*/
say
if @=='' then say 'From 1──►'triples", no triples found."
Line 3,344 ⟶ 3,348:
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
ludic: procedure; parse arg m,,@; $= 1 2 /*$≡ludic numbers superset; @≡sequence*/
do j=3 by 2 to m*15; @= @ j; end /*construct an initial list of numbers.*/
end /*j*/
@=@' '; n=words(@) /*append a blank to the number sequence*/
@= @' '; do while n\==0; f n=word words(@,1); $=$ f /*examineappend thea firstblank wordto inthe @; add tonumber $sequence*/
do while n\==0; do d=1 by f= whileword(@, d<=n; n=n-1) /*useexamine 1stthe number,first word in elidethe all@ occurrenceslist.*/
$= $ f @=changestr(' 'word(@, d)" ", @, ' . ') /*crossoutadd the word to the $ list. a number in @ */
do d=1 by endf while /*d*/ <=n; n= n-1 /*use [↑]1st number, doneelide eliding the "1st" number.all occurrences*/
@=translate changestr(' 'word(@, , .d)" ", @, ' . ') /*changecross─out dotsa tonumber blanks;in count numbers.@ */
end end /*whiled*/ /* [↑] done eliding ludicthe numbers"1st" number. */
@= translate(@, , .) /*change dots to blanks; count numbers.*/
end /*while*/ /* [↑] done eliding ludic numbers. */
return subword($, 1, m) /*return a range of ludic numbers. */</lang>
Some older REXXes don't have a &nbsp; '''changestr''' &nbsp; BIF, &nbsp; so one is included here &nbsp; ──► &nbsp; [[CHANGESTR.REX]].
Cookies help us deliver our services. By using our services, you agree to our use of cookies.