Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
47
Task/Textonyms/Nim/textonyms.nim
Normal file
47
Task/Textonyms/Nim/textonyms.nim
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import algorithm, sequtils, strformat, strutils, tables
|
||||
|
||||
const
|
||||
|
||||
WordList = "unixdict.txt"
|
||||
Url = "http://www.puzzlers.org/pub/wordlists/unixdict.txt"
|
||||
|
||||
Digits = "22233344455566677778889999"
|
||||
|
||||
proc processList(wordFile: string) =
|
||||
|
||||
var mapping: Table[string, seq[string]]
|
||||
var countValid = 0
|
||||
|
||||
for word in wordFile.lines:
|
||||
var valid = true
|
||||
var key: string
|
||||
for c in word.toLowerAscii:
|
||||
if c notin 'a'..'z':
|
||||
valid = false
|
||||
break
|
||||
key.add Digits[ord(c) - ord('a')]
|
||||
if valid:
|
||||
inc countValid
|
||||
mapping.mgetOrPut(key, @[]).add word
|
||||
|
||||
let textonyms = toSeq(mapping.pairs).filterIt(it[1].len > 1)
|
||||
echo &"There are {countValid} words in '{Url}' ",
|
||||
&"which can be represented by the digit key mapping."
|
||||
echo &"They require {mapping.len} digit combinations to represent them."
|
||||
echo &"{textonyms.len} digit combinations represent Textonyms.\n"
|
||||
|
||||
let longest = textonyms.sortedByIt(-it[0].len)
|
||||
let ambiguous = longest.sortedByIt(-it[1].len)
|
||||
echo "Top 8 in ambiguity:\n"
|
||||
echo "Count Textonym Words"
|
||||
echo "====== ======== ====="
|
||||
for a in ambiguous[0..7]:
|
||||
echo &"""{a[1].len:4} {a[0]:>8} {a[1].join(", ")}"""
|
||||
|
||||
echo "\nTop 6 in length:\n"
|
||||
echo "Length Textonym Words"
|
||||
echo "====== ============== ====="
|
||||
for l in longest[0..5]:
|
||||
echo &"""{l[0].len:4} {l[0]:>14} {l[1].join(", ")}"""
|
||||
|
||||
processList(WordList)
|
||||
Loading…
Add table
Add a link
Reference in a new issue