Textonyms: Difference between revisions

→‎{{header|REXX}}: added/changed comments and whitespace, added commas to numbers being displayed, aligned numbers, changed wording for the output text(s),
(Add Factor)
(→‎{{header|REXX}}: added/changed comments and whitespace, added commas to numbers being displayed, aligned numbers, changed wording for the output text(s),)
Line 2,032:
parse arg iFID . /*obtain optional fileID from the C.L. */
if iFID=='' | iFID=="," then iFID='UNIXDICT.TXT' /*Not specified? Then use the default.*/
@.=0 0 /*the placeholder of digit combinations*/
!.=; $.= $.= /*sparse array of textonyms; words. */
alphabet= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' /*the supported alphabet to be used. */
digitKey= 22233344455566677778889999 /*translated alphabet to digit keys. */
digKey= 0; wordCount=0 #word= 0 /*number digit combinations; wordCount.word count*/
ills= 0 ; dups= 0; longest= 0; mostus=0 0 /*illegals; duplicated words; longest..*/
first=. ; last= .; long= 0; most=0 0 /*first, last, longest, most counts. */
#=0 call linein iFID, 1, 0 /*numberpoint ofto textonymsthe infirst filechar (soin far).dictionary*/
call#= 0 linein iFID, 1, 0 /*point to the first char in dictionary*/ /*number of textonyms in file ◄■■■■■(so optionalfar).*/
 
do while lines(iFID)\==0; x= linein(iFID) /*keep reading the file until exhausted*/
y= x; upper x=linein(iFID); y=x; upper x /*get a word; /*save a copy of X; uppercase it X. */
if \datatype(x, 'U') then do; ills=ills + 1; iterate; end /*Not legal? Skip.*/
if $.x==. then do; dups=dups + 1; iterate; end /*Duplicate? Skip.*/
$.x=. . /*indicate that it's a righteous word. */
wordCount#word=wordCount #word + 1 /*bump the word count (for the file). */
z= translate(x, digitKey, alphabet) /*build a translated digit key word. */
@.z= @.z + 1 /*flag that the digit key word exists. */
!.z= !.z y; _= words(!.z) /*build list of equivalent digit key(s)*/
 
if _>most then do; mostus=z; most=_; end /*remember the "mostus" digit keys. */
 
if @.z==2 then do; #= # + 1 /*bump the count of the textonyms. */
if first==. then first=z /*the first textonym found. */
last=z z /* " last " " */
_= length(!.z) /*the length (# chars) of the digit key*/
if _>longest then long=z z /*is this the longest textonym ? */
longest= max(_, longest) /*now, use this length as a target/goal*/
end /* [↑] discretionary (extra credit). */
 
if @.z==1 then digKey= digKey + 1 /*bump the count of digit key words. */
end /*while*/
@whichCan...dict= 'in the dictionary file'which can/*literal beused representedfor bysome digitdisplayed key mappingtext.'*/
L= length(commas(max(#word,ills,dups,digKey,#))) /*find length of max # being displayed.*/
@Ta = 'There are '
say 'The dictionary file being used is: ' iFID
say call tell #word, @Ta wordCount ' "words in the file' which can be represented by digit key @whichCan...mapping"
if ills\==>0 then saycall @Tatell ills , ' word's(ills) "that contain illegal characters"contained illegal characters."@dict
if dups\==>0 then saycall @Tatell dups, " 'duplicate word"'s(dups) 'in"detected" the dictionary detected.' @dict
say 'The textonyms require ' digKey " call tell digKey, 'combination"'s(digKey) '"required to represent them.'"
say @Ta # ' call tell #, 'digit combination's(#) " that can represent Textonyms."
say; if first\==. then say ' first digit key=' !.first
say
if first last\==. then say ' first last digit key=' !.firstlast
if lastlong\==.0 then say ' lastlongest digit key=' !.lastlong
if longmost\==0 then say ' longestnumerous digit key=' !.longmostus " ("most 'words)'
exit # /*stick a fork in it, we're all done. */
if most\==0 then say ' numerous digit key=' !.mostus ' ('most "words)"
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
commas: parse arg _; do jc=length(_)-3 to 1 by -3; _=insert(',', _, jc); end; return _
s: if arg(1)==1 then return ''; return "s" /*a simple pluralizer.*/</lang>
tell: arg ##; say 'There are ' right(commas(##), L)' ' arg(2).; return /*commatize #*/
s: if arg(1)==1 then return ''; return "s" /*a simple pluralizer.*/</lang>
 
{{out|output|text=&nbsp; when using the default input file:}}
<pre>
The dictionary file being used is: UNIXDICT.TXT
There are 2497824,978 words in the file which can be represented by digit key mapping.
There are 126 words containedthat contain illegal characters in the dictionary file.
TheThere textonymsare require 2290322,903 combinations required to represent them.
There are 1473 1,473 digit combinations that can represent Textonyms.
 
first digit key= aaa aba abc cab
Line 2,093 ⟶ 2,095:
numerous digit key= amy any bmw bow box boy cow cox coy (9 words)
</pre>
 
{{out|output|text=&nbsp; when using the input file: &nbsp; &nbsp; <tt> textonyms.txt </tt>}}
<pre>
The dictionary file being used is: textonymsTEXTONYMS.txtTXT
There are 1299012,990 words in the file which can be represented by digit key mapping.
There are 95 duplicate words detected in the dictionary detectedfile.
TheThere textonymsare require 1193211,932 combinations required to represent them.
There are 650 digit combinations that can represent Textonyms.
 
first digit key= AA AB AC BA BB BC CA CB