Anonymous user
Ludic numbers: Difference between revisions
→{{header|REXX}}: optimized program, only invoke the ludic function once.
(→{{header|REXX}}: retroduce part of the program that was overlooked.) |
(→{{header|REXX}}: optimized program, only invoke the ludic function once.) |
||
Line 2,887:
if top=='' | top=="," then top=2005 /* " " " " " " */
if triples=='' | triples=="," then triples=250-1 /* " " " " " " */
$=ludic( max(N, count, bot, top, triples) ) /*generate enough ludic nums.*/
say 'The first ' N " ludic numbers: "
do j=1 until word($, j) > count;
say
say "There are "
say
say "The " bot '───►' top ' (inclusive) ludic numbers are: ' subword(
#=0
say▼
▲ do j=1 for words($); _=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*/ /* [↑] append the found triple ──► @ */
▲say
if @=='' then say 'From 1──►'triples", no triples found."
else say 'From 1──►'triples", " # ' triples found:' @
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
ludic: procedure; parse arg m,,@;
do j=3 by 2 to m*15; @=@ j;
do while n\==0; f=word(@,1); $=$ f /*examine the first word in @; add to $*/
do d=1 by f while d<=n; n=n-1 /*use 1st number, elide all occurrances*/
Line 2,917 ⟶ 2,914:
@=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 '''changestr''' BIF, so one is included here ──► [[CHANGESTR.REX]].
<br><br>
|