统计《千字文》不同文字的个数

近来读千字文,感觉周兴嗣着乃大才,硬生生将一千个文字编成一片韵文,其中心力,委实繁多。
忽发奇想,想看看千字文到底是不是用一千个不同文字写成的,遂用golang写了个程序进行统计,发现全文不同的文字实际是992个。
统计结果如下。

统计时间: 2021-08-07 12:51:25

  • 千字文
"天地玄黄宇宙洪荒日月盈昃辰宿列张寒来暑往秋收冬藏闰余成岁律吕调阳云腾致雨露结为霜金生丽水玉出昆冈剑号巨阙珠称夜光果珍李柰菜重芥姜海咸河淡鳞潜羽翔龙师火帝鸟官人皇始制文字乃服衣裳推位让国有虞陶唐吊民伐罪周发殷汤坐朝问道垂拱平章爱育黎首臣伏戎羌遐迩一体率宾归王鸣凤在竹白驹食场化被草木赖及万方盖此身发四大五常恭惟鞠养岂敢毁伤女慕贞洁男效才良知过必改得能莫忘罔谈彼短靡恃己长信使可覆器欲难量墨悲丝染诗赞羔羊景行维贤克念作圣德建名立形端表正空谷传声虚堂习听祸因恶积福缘善庆尺璧非宝寸阴是竞资父事君曰严与敬孝当竭力忠则尽命临深履薄夙兴温凊似兰斯馨如松之盛川流不息渊澄取映容止若思言辞安定笃初诚美慎终宜令荣业所基籍甚无竟学优登仕摄职从政存以甘棠去而益咏乐殊贵贱礼别尊卑上和下睦夫唱妇随外受傅训入奉母仪诸姑伯叔犹子比儿孔怀兄弟同气连枝交友投分切磨箴规仁慈隐恻造次弗离节义廉退颠沛匪亏性静情逸心动神疲守真志满逐物意移坚持雅操好爵自縻都邑华夏东西二京背邙面洛浮渭据泾宫殿盘郁楼观飞惊图写禽兽画彩仙灵丙舍旁启甲帐对楹肆筵设席鼓瑟吹笙升阶纳陛弁转疑星右通广内左达承明既集坟典亦聚群英杜稿钟隶漆书壁经府罗将相路侠槐卿户封八县家给千兵高冠陪辇驱毂振缨世禄侈富车驾肥轻策功茂实勒碑刻铭磻溪伊尹佐时阿衡奄宅曲阜微旦孰营桓公匡合济弱扶倾绮回汉惠说感武丁俊义密勿多士实宁晋楚更霸赵魏困横假途灭虢践土会盟何遵约法韩弊烦刑起翦颇牧用军最精宣威沙漠驰誉丹青九州禹迹百郡秦并岳宗泰岱禅主云亭雁门紫塞鸡田赤城昆池碣石钜野洞庭旷远绵邈岩岫杳冥治本于农务兹稼穑俶载南亩我艺黍稷税熟贡新劝赏黜陟孟轲敦素史鱼秉直庶几中庸劳谦谨敕聆音察理鉴貌辨色贻厥嘉猷勉其祗植省躬讥诫宠增抗极殆辱近耻林皋幸即两疏见机解组谁逼索居闲处沉默寂寥求古寻论散虑逍遥欣奏累遣戚谢欢招渠荷的历园莽抽条枇杷晚翠梧桐蚤凋陈根委翳落叶飘摇游鹍独运凌摩绛霄耽读玩市寓目囊箱易輶攸畏属耳垣墙具膳餐饭适口充肠饱饫烹宰饥厌糟糠亲戚故旧老少异粮妾御绩纺侍巾帷房纨扇圆洁银烛炜煌昼眠夕寐蓝笋象床弦歌酒宴接杯举觞矫手顿足悦豫且康嫡后嗣续祭祀烝尝稽颡再拜悚惧恐惶笺牒简要顾答审详骸垢想浴执热愿凉驴骡犊特骇跃超骧诛斩贼盗捕获叛亡布射僚丸嵇琴阮啸恬笔伦纸钧巧任钓释纷利俗并皆佳妙毛施淑姿工颦妍笑年矢每催曦晖朗曜璇玑悬斡晦魄环照指薪修祜永绥吉劭矩步引领俯仰廊庙束带矜庄徘徊瞻眺孤陋寡闻愚蒙等诮谓语助者焉哉乎也"
文字总数=1000
不同文字的总数: 992

========

字 : 数

云 : 2
戚 : 2
并 : 2
实 : 2
义 : 2
洁 : 2
发 : 2
昆 : 2
天 : 1
月 : 1
盈 : 1
昃 : 1
辰 : 1
宿 : 1
列 : 1
张 : 1
寒 : 1
来 : 1
暑 : 1
往 : 1
秋 : 1
收 : 1
冬 : 1
藏 : 1
闰 : 1
余 : 1
成 : 1
岁 : 1
律 : 1
吕 : 1
调 : 1
阳 : 1
日 : 1
腾 : 1
致 : 1
雨 : 1
露 : 1
结 : 1
为 : 1
霜 : 1
金 : 1
生 : 1
丽 : 1
水 : 1
玉 : 1
出 : 1
荒 : 1
冈 : 1
剑 : 1
号 : 1
巨 : 1
阙 : 1
珠 : 1
称 : 1
夜 : 1
光 : 1
果 : 1
珍 : 1
李 : 1
柰 : 1
菜 : 1
重 : 1
芥 : 1
姜 : 1
海 : 1
咸 : 1
河 : 1
淡 : 1
鳞 : 1
潜 : 1
羽 : 1
翔 : 1
龙 : 1
师 : 1
火 : 1
帝 : 1
鸟 : 1
官 : 1
人 : 1
皇 : 1
始 : 1
制 : 1
文 : 1
字 : 1
乃 : 1
服 : 1
衣 : 1
裳 : 1
推 : 1
位 : 1
让 : 1
国 : 1
有 : 1
虞 : 1
陶 : 1
唐 : 1
吊 : 1
民 : 1
伐 : 1
罪 : 1
周 : 1
洪 : 1
殷 : 1
汤 : 1
坐 : 1
朝 : 1
问 : 1
道 : 1
垂 : 1
拱 : 1
平 : 1
章 : 1
爱 : 1
育 : 1
黎 : 1
首 : 1
臣 : 1
伏 : 1
戎 : 1
羌 : 1
遐 : 1
迩 : 1
一 : 1
体 : 1
率 : 1
宾 : 1
归 : 1
王 : 1
鸣 : 1
凤 : 1
在 : 1
竹 : 1
白 : 1
驹 : 1
食 : 1
场 : 1
化 : 1
被 : 1
草 : 1
木 : 1
赖 : 1
及 : 1
万 : 1
方 : 1
盖 : 1
此 : 1
身 : 1
四 : 1
大 : 1
五 : 1
常 : 1
恭 : 1
惟 : 1
鞠 : 1
养 : 1
岂 : 1
敢 : 1
毁 : 1
伤 : 1
女 : 1
慕 : 1
贞 : 1
宙 : 1
男 : 1
效 : 1
才 : 1
良 : 1
知 : 1
过 : 1
必 : 1
改 : 1
得 : 1
能 : 1
莫 : 1
忘 : 1
罔 : 1
谈 : 1
彼 : 1
短 : 1
靡 : 1
恃 : 1
己 : 1
长 : 1
信 : 1
使 : 1
可 : 1
覆 : 1
器 : 1
欲 : 1
难 : 1
量 : 1
墨 : 1
悲 : 1
丝 : 1
染 : 1
诗 : 1
赞 : 1
羔 : 1
羊 : 1
景 : 1
行 : 1
维 : 1
贤 : 1
克 : 1
念 : 1
作 : 1
圣 : 1
德 : 1
建 : 1
名 : 1
立 : 1
形 : 1
端 : 1
表 : 1
正 : 1
空 : 1
谷 : 1
传 : 1
声 : 1
虚 : 1
堂 : 1
习 : 1
听 : 1
祸 : 1
因 : 1
恶 : 1
积 : 1
福 : 1
缘 : 1
善 : 1
庆 : 1
尺 : 1
璧 : 1
非 : 1
宝 : 1
寸 : 1
阴 : 1
是 : 1
竞 : 1
资 : 1
父 : 1
事 : 1
君 : 1
曰 : 1
严 : 1
与 : 1
敬 : 1
孝 : 1
当 : 1
竭 : 1
力 : 1
忠 : 1
则 : 1
尽 : 1
命 : 1
临 : 1
深 : 1
履 : 1
薄 : 1
夙 : 1
兴 : 1
温 : 1
凊 : 1
似 : 1
兰 : 1
斯 : 1
馨 : 1
如 : 1
松 : 1
之 : 1
盛 : 1
川 : 1
流 : 1
不 : 1
息 : 1
渊 : 1
澄 : 1
取 : 1
映 : 1
容 : 1
止 : 1
若 : 1
思 : 1
言 : 1
辞 : 1
安 : 1
定 : 1
笃 : 1
初 : 1
诚 : 1
美 : 1
慎 : 1
终 : 1
宜 : 1
令 : 1
荣 : 1
业 : 1
所 : 1
基 : 1
籍 : 1
甚 : 1
无 : 1
竟 : 1
学 : 1
优 : 1
登 : 1
仕 : 1
摄 : 1
职 : 1
从 : 1
政 : 1
存 : 1
以 : 1
甘 : 1
棠 : 1
去 : 1
而 : 1
益 : 1
咏 : 1
乐 : 1
殊 : 1
贵 : 1
贱 : 1
礼 : 1
别 : 1
尊 : 1
卑 : 1
上 : 1
和 : 1
下 : 1
睦 : 1
夫 : 1
唱 : 1
妇 : 1
随 : 1
外 : 1
受 : 1
傅 : 1
训 : 1
入 : 1
奉 : 1
母 : 1
仪 : 1
诸 : 1
姑 : 1
伯 : 1
叔 : 1
犹 : 1
子 : 1
比 : 1
儿 : 1
孔 : 1
怀 : 1
兄 : 1
弟 : 1
同 : 1
气 : 1
连 : 1
枝 : 1
交 : 1
友 : 1
投 : 1
分 : 1
切 : 1
磨 : 1
箴 : 1
规 : 1
仁 : 1
慈 : 1
隐 : 1
恻 : 1
造 : 1
次 : 1
弗 : 1
离 : 1
节 : 1
宇 : 1
廉 : 1
退 : 1
颠 : 1
沛 : 1
匪 : 1
亏 : 1
性 : 1
静 : 1
情 : 1
逸 : 1
心 : 1
动 : 1
神 : 1
疲 : 1
守 : 1
真 : 1
志 : 1
满 : 1
逐 : 1
物 : 1
意 : 1
移 : 1
坚 : 1
持 : 1
雅 : 1
操 : 1
好 : 1
爵 : 1
自 : 1
縻 : 1
都 : 1
邑 : 1
华 : 1
夏 : 1
东 : 1
西 : 1
二 : 1
京 : 1
背 : 1
邙 : 1
面 : 1
洛 : 1
浮 : 1
渭 : 1
据 : 1
泾 : 1
宫 : 1
殿 : 1
盘 : 1
郁 : 1
楼 : 1
观 : 1
飞 : 1
惊 : 1
图 : 1
写 : 1
禽 : 1
兽 : 1
画 : 1
彩 : 1
仙 : 1
灵 : 1
丙 : 1
舍 : 1
旁 : 1
启 : 1
甲 : 1
帐 : 1
对 : 1
楹 : 1
肆 : 1
筵 : 1
设 : 1
席 : 1
鼓 : 1
瑟 : 1
吹 : 1
笙 : 1
升 : 1
阶 : 1
纳 : 1
陛 : 1
弁 : 1
转 : 1
疑 : 1
星 : 1
右 : 1
通 : 1
广 : 1
内 : 1
左 : 1
达 : 1
承 : 1
明 : 1
既 : 1
集 : 1
坟 : 1
典 : 1
亦 : 1
聚 : 1
群 : 1
英 : 1
杜 : 1
稿 : 1
钟 : 1
隶 : 1
漆 : 1
书 : 1
壁 : 1
经 : 1
府 : 1
罗 : 1
将 : 1
相 : 1
路 : 1
侠 : 1
槐 : 1
卿 : 1
户 : 1
封 : 1
八 : 1
县 : 1
家 : 1
给 : 1
千 : 1
兵 : 1
高 : 1
冠 : 1
陪 : 1
辇 : 1
驱 : 1
毂 : 1
振 : 1
缨 : 1
世 : 1
禄 : 1
侈 : 1
富 : 1
车 : 1
驾 : 1
肥 : 1
轻 : 1
策 : 1
功 : 1
茂 : 1
黄 : 1
勒 : 1
碑 : 1
刻 : 1
铭 : 1
磻 : 1
溪 : 1
伊 : 1
尹 : 1
佐 : 1
时 : 1
阿 : 1
衡 : 1
奄 : 1
宅 : 1
曲 : 1
阜 : 1
微 : 1
旦 : 1
孰 : 1
营 : 1
桓 : 1
公 : 1
匡 : 1
合 : 1
济 : 1
弱 : 1
扶 : 1
倾 : 1
绮 : 1
回 : 1
汉 : 1
惠 : 1
说 : 1
感 : 1
武 : 1
丁 : 1
俊 : 1
密 : 1
勿 : 1
多 : 1
士 : 1
宁 : 1
晋 : 1
楚 : 1
更 : 1
霸 : 1
赵 : 1
魏 : 1
困 : 1
横 : 1
假 : 1
途 : 1
灭 : 1
虢 : 1
践 : 1
土 : 1
会 : 1
盟 : 1
何 : 1
遵 : 1
约 : 1
法 : 1
韩 : 1
弊 : 1
烦 : 1
刑 : 1
起 : 1
翦 : 1
颇 : 1
牧 : 1
用 : 1
军 : 1
最 : 1
精 : 1
宣 : 1
威 : 1
沙 : 1
漠 : 1
驰 : 1
誉 : 1
丹 : 1
青 : 1
九 : 1
州 : 1
禹 : 1
迹 : 1
百 : 1
郡 : 1
秦 : 1
玄 : 1
岳 : 1
宗 : 1
泰 : 1
岱 : 1
禅 : 1
主 : 1
亭 : 1
雁 : 1
门 : 1
紫 : 1
塞 : 1
鸡 : 1
田 : 1
赤 : 1
城 : 1
池 : 1
碣 : 1
石 : 1
钜 : 1
野 : 1
洞 : 1
庭 : 1
旷 : 1
远 : 1
绵 : 1
邈 : 1
岩 : 1
岫 : 1
杳 : 1
冥 : 1
治 : 1
本 : 1
于 : 1
农 : 1
务 : 1
兹 : 1
稼 : 1
穑 : 1
俶 : 1
载 : 1
南 : 1
亩 : 1
我 : 1
艺 : 1
黍 : 1
稷 : 1
税 : 1
熟 : 1
贡 : 1
新 : 1
劝 : 1
赏 : 1
黜 : 1
陟 : 1
孟 : 1
轲 : 1
敦 : 1
素 : 1
史 : 1
鱼 : 1
秉 : 1
直 : 1
庶 : 1
几 : 1
中 : 1
庸 : 1
劳 : 1
谦 : 1
谨 : 1
敕 : 1
聆 : 1
音 : 1
察 : 1
理 : 1
鉴 : 1
貌 : 1
辨 : 1
色 : 1
贻 : 1
厥 : 1
嘉 : 1
猷 : 1
勉 : 1
其 : 1
祗 : 1
植 : 1
省 : 1
躬 : 1
讥 : 1
诫 : 1
宠 : 1
增 : 1
抗 : 1
极 : 1
殆 : 1
辱 : 1
近 : 1
耻 : 1
林 : 1
皋 : 1
幸 : 1
即 : 1
两 : 1
疏 : 1
见 : 1
机 : 1
解 : 1
组 : 1
谁 : 1
逼 : 1
索 : 1
居 : 1
闲 : 1
处 : 1
沉 : 1
默 : 1
寂 : 1
寥 : 1
求 : 1
古 : 1
寻 : 1
论 : 1
散 : 1
虑 : 1
逍 : 1
遥 : 1
欣 : 1
奏 : 1
累 : 1
遣 : 1
也 : 1
谢 : 1
欢 : 1
招 : 1
渠 : 1
荷 : 1
的 : 1
历 : 1
园 : 1
莽 : 1
抽 : 1
条 : 1
枇 : 1
杷 : 1
晚 : 1
翠 : 1
梧 : 1
桐 : 1
蚤 : 1
凋 : 1
陈 : 1
根 : 1
委 : 1
翳 : 1
落 : 1
叶 : 1
飘 : 1
摇 : 1
游 : 1
鹍 : 1
独 : 1
运 : 1
凌 : 1
摩 : 1
绛 : 1
霄 : 1
耽 : 1
读 : 1
玩 : 1
市 : 1
寓 : 1
目 : 1
囊 : 1
箱 : 1
易 : 1
輶 : 1
攸 : 1
畏 : 1
属 : 1
耳 : 1
垣 : 1
墙 : 1
具 : 1
膳 : 1
餐 : 1
饭 : 1
适 : 1
口 : 1
充 : 1
肠 : 1
饱 : 1
饫 : 1
烹 : 1
宰 : 1
饥 : 1
厌 : 1
糟 : 1
糠 : 1
亲 : 1
故 : 1
旧 : 1
老 : 1
少 : 1
异 : 1
粮 : 1
妾 : 1
御 : 1
绩 : 1
纺 : 1
侍 : 1
巾 : 1
帷 : 1
房 : 1
纨 : 1
扇 : 1
圆 : 1
银 : 1
烛 : 1
炜 : 1
煌 : 1
昼 : 1
眠 : 1
夕 : 1
寐 : 1
蓝 : 1
笋 : 1
象 : 1
床 : 1
弦 : 1
歌 : 1
酒 : 1
宴 : 1
接 : 1
杯 : 1
举 : 1
觞 : 1
矫 : 1
手 : 1
顿 : 1
足 : 1
悦 : 1
豫 : 1
且 : 1
康 : 1
嫡 : 1
后 : 1
嗣 : 1
续 : 1
祭 : 1
祀 : 1
烝 : 1
尝 : 1
稽 : 1
颡 : 1
地 : 1
拜 : 1
悚 : 1
惧 : 1
恐 : 1
惶 : 1
笺 : 1
牒 : 1
简 : 1
要 : 1
顾 : 1
答 : 1
审 : 1
详 : 1
骸 : 1
垢 : 1
想 : 1
浴 : 1
执 : 1
热 : 1
愿 : 1
凉 : 1
驴 : 1
骡 : 1
犊 : 1
特 : 1
骇 : 1
跃 : 1
超 : 1
骧 : 1
诛 : 1
斩 : 1
贼 : 1
盗 : 1
捕 : 1
获 : 1
叛 : 1
亡 : 1
布 : 1
射 : 1
僚 : 1
丸 : 1
嵇 : 1
琴 : 1
阮 : 1
啸 : 1
恬 : 1
笔 : 1
伦 : 1
纸 : 1
钧 : 1
巧 : 1
任 : 1
钓 : 1
释 : 1
纷 : 1
利 : 1
俗 : 1
皆 : 1
佳 : 1
妙 : 1
毛 : 1
施 : 1
淑 : 1
姿 : 1
工 : 1
颦 : 1
妍 : 1
笑 : 1
年 : 1
矢 : 1
每 : 1
催 : 1
曦 : 1
晖 : 1
朗 : 1
曜 : 1
璇 : 1
玑 : 1
悬 : 1
斡 : 1
晦 : 1
魄 : 1
环 : 1
照 : 1
指 : 1
薪 : 1
修 : 1
祜 : 1
永 : 1
绥 : 1
吉 : 1
劭 : 1
矩 : 1
步 : 1
引 : 1
领 : 1
俯 : 1
仰 : 1
廊 : 1
庙 : 1
束 : 1
带 : 1
矜 : 1
庄 : 1
徘 : 1
徊 : 1
瞻 : 1
眺 : 1
孤 : 1
陋 : 1
寡 : 1
闻 : 1
愚 : 1
蒙 : 1
等 : 1
诮 : 1
谓 : 1
语 : 1
助 : 1
者 : 1
焉 : 1
哉 : 1
乎 : 1
再 : 1

附 · golang 源码

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"sort"
	"time"
)

type Entry struct {
	Word  rune
	Count int
}

type List []*Entry

func (list List) Swap(i, j int) {
	list[i], list[j] = list[j], list[i]
}

func (list List) Len() int {
	return len(list)
}

func (list List) Less(i, j int) bool {
	return list[i].Count > list[j].Count
}

func main() {
	fileNmae := "a_thousand_word.txt"
	data, err := ioutil.ReadFile(fileNmae)
	if err != nil {
		log.Fatal("read %s failed, err: %s", fileNmae, err.Error())
	}
	content := string(data)
	timeStr := time.Now().Format("2006-01-02 15:04:05")
	fmt.Printf("统计时间: %s
", timeStr)
	fmt.Printf("千字文=%q
", content)
	words := []rune(content)
	fmt.Printf("文字总数=%d
", len(words))
	dict := make(map[rune]*Entry, len(words))
	list := make(List, 0, len(words))
	for _, word := range words {
		if entry, ok := dict[word]; ok {
			entry.Count += 1
		} else {
			entry := &Entry{
				Word:  word,
				Count: 1,
			}
			dict[word] = entry
			list = append(list, entry)
		}
	}
	sort.Sort(list)
	fmt.Println("不同文字的总数:", len(list))
	fmt.Println("
========
字 : 数
")
	for _, entry := range list {
		fmt.Println(string(entry.Word), ":", entry.Count)
	}
}