September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
63
Task/Textonyms/Phix/textonyms.phix
Normal file
63
Task/Textonyms/Phix/textonyms.phix
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
sequence digit = repeat(-1,255)
|
||||
digit['a'..'c'] = '2'
|
||||
digit['d'..'f'] = '3'
|
||||
digit['g'..'i'] = '4'
|
||||
digit['j'..'l'] = '5'
|
||||
digit['m'..'o'] = '6'
|
||||
digit['p'..'s'] = '7'
|
||||
digit['t'..'v'] = '8'
|
||||
digit['w'..'z'] = '9'
|
||||
|
||||
function digits(string word)
|
||||
for i=1 to length(word) do
|
||||
integer ch = word[i]
|
||||
if ch<'a' or ch>'z' then return "" end if
|
||||
word[i] = digit[ch]
|
||||
end for
|
||||
return word
|
||||
end function
|
||||
|
||||
sequence words = {}, last=""
|
||||
object word, keycode
|
||||
integer keycode_count = 0, textonyms = 0,
|
||||
this_count = 0, max_count = 0, max_idx
|
||||
|
||||
integer fn = open("demo\\unixdict.txt","r")
|
||||
while 1 do
|
||||
word = trim(gets(fn))
|
||||
if atom(word) then exit end if
|
||||
keycode = digits(word)
|
||||
if length(keycode) then
|
||||
words = append(words, {keycode, word})
|
||||
end if
|
||||
end while
|
||||
close(fn)
|
||||
printf(1,"There are %d words in unixdict.txt which can be represented by the digit key mapping.\n",{length(words)})
|
||||
|
||||
words = sort(words)
|
||||
for i=1 to length(words) do
|
||||
{keycode,word} = words[i]
|
||||
if keycode=last then
|
||||
textonyms += this_count=1
|
||||
this_count += 1
|
||||
if this_count>max_count then
|
||||
max_count = this_count
|
||||
max_idx = i
|
||||
end if
|
||||
else
|
||||
keycode_count += 1
|
||||
last = keycode
|
||||
this_count = 1
|
||||
end if
|
||||
end for
|
||||
|
||||
printf(1,"They require %d digit combinations to represent them.\n",{keycode_count})
|
||||
printf(1,"%d digit combinations represent Textonyms.\n",{textonyms})
|
||||
|
||||
sequence dups = {}
|
||||
for i=max_idx-max_count+1 to max_idx do
|
||||
dups = append(dups,words[i][2])
|
||||
end for
|
||||
|
||||
printf(1,"The maximum number of textonyms for a particular digit key mapping is %d:\n",{max_count})
|
||||
printf(1," %s encodes %s\n",{words[max_idx][1],join(dups,"/")})
|
||||
Loading…
Add table
Add a link
Reference in a new issue