结论:长度13个词。有3种起始字,6种结束字,共18条路径。
具体规则:取 mapull/chinese-dictionary,去除含有非中文字符或非二字的词语为词典。不允许出现重复尾字,字形一样即可接龙。
方便起见,我们约定省去重复的字,如:苹果->果子->子弹->弹珠->珠母 写作 苹果弹珠母。
18条路径分别为:- 杔栌栱桷杙地头顶呱咭叮咣
- 杔栌栱桷杙地平吞咀嚅嗫呫
- 杔栌栱桷杙地丁庸岷邛崃嵦
- 杔栌栱桷杙地下石淙琤璪瑢
- 杔栌栱桷杙地上焌衎蝞蛴螬
- 杔栌栱桷杙地一吐鹘鸼鶝鶔
- 枅栌栱桷杙地头顶呱咭叮咣
- 枅栌栱桷杙地平吞咀嚅嗫呫
- 枅栌栱桷杙地丁庸岷邛崃嵦
- 枅栌栱桷杙地下石淙琤璪瑢
- 枅栌栱桷杙地上焌衎蝞蛴螬
- 枅栌栱桷杙地一吐鹘鸼鶝鶔
- 欂栌栱桷杙地头顶呱咭叮咣
- 欂栌栱桷杙地平吞咀嚅嗫呫
- 欂栌栱桷杙地丁庸岷邛崃嵦
- 欂栌栱桷杙地下石淙琤璪瑢
- 欂栌栱桷杙地上焌衎蝞蛴螬
- 欂栌栱桷杙地一吐鹘鸼鶝鶔
复制代码 词语解释:- 杔栌(tuō lú): 木名。
- 枅栌(jī lú): 柱上的方木。
- 欂栌(bó lú): 古代指斗拱(dǒuɡǒnɡ)。
- 栌栱(lú gǒng): 斗栱。
- 栱桷(gǒng jué): 栱和桷; 泛指微细之材。
- 桷杙(jué yì): 指木椽﹑木桩之类的木料。
- 杙地(yì dì): 钉木桩于地。
- 地头(dì tóu): 田地的两头; 当地;本地; 处所;地方; 方面; 书页下端的空白处。
- 头顶(tóu dǐng): 头的最上部; 指物体的最上方; 指头的上方﹑同人处于基本垂直位置的高空; 谓宗教徒向神行礼; 首要,摆在第一位的; 谓轮流值班。
- 顶呱(dǐng gū): 同“顶刮刮”
- 呱咭(gū jī): 同“呱唧”
- 咭叮(jī dīng): 象声词。金属碰击声。
- 叮咣(dīng guāng): 形容金属物体敲击振动声。
- 地平(dì píng): 同“地平天成”
- 平吞(píng tūn): 全吞;一口吞没。
- 吞咀(tūn jǔ): 吞食。
- 咀嚅(jǔ rú): 体味;钻研。
- 嚅嗫(rú niè): 说话吞吞吐吐的样子。
- 嗫呫(niè tiè): 附耳轻语。
- 地丁(dì dīng): 同“地客”
- 丁庸(dīng yōng): 用以充抵力役的赋税; 指以赋税充抵力役的制度。
- 庸岷(yōng mín): 四川(蜀)的别称。
- 岷邛(mín qióng): 古代泛指四川省成都地区。岷,指岷(汶)山郡;邛,指临邛。
- 邛崃(qióng lái): 亦作"邛莱"; 山名。邛崃山,在四川省荥经县西。
- 崃嵦(lái kǎi): 山貌。《广韵.平咍》"嵦,崃嵦。"一说山名。《字汇.山部》"嵦,崃嵦,山名。"
- 地下(dì xià): 地面以下;地层内部; 谓政党﹑团体等处于非法﹑秘密活动状态; 指阴间; 地面上。
- 下石(xià shí): 往井下丢石块。比喻乘人之危加以陷害。语出唐韩愈《柳子厚墓志铭》"落陷阱,不一引手救,反挤之,又下石焉者,皆是也。"
- 石淙(shí cóng): 石上水流。亦指石上流水声。唐韩愈有《石淙诗》十首。
- 淙琤(cóng chēng): 犹琮琤。玉相碰击声。亦以形容水流相激声。
- 琤璪(chēng zǎo): 象声词。
- 璪瑢(zǎo róng): 象声词。佩玉碰撞声; 佩玉缓行貌。
- 地上(dì shàng): 陆地上; 指人间,阳世。
- 上焌(shàng jùn): 与母辈通奸。
- 焌衎(jùn kàn): 进乐。
- 衎蝞(kàn mèi): 一种圆薄能飞的小虫。味辛辣而臭。《尔雅.释虫》"蜚,衎蝞。"郭璞注"蝞,即负盘,臭虫。"郝懿行义疏"此虫气如廉姜,故名飞廉;圆薄如盘,故名负盘。今俗人呼之殠般虫。其大如钱,轻薄如黄叶色,解飞,其气殠恶。"王国维《观堂集林.尔雅草木虫鱼鸟兽名释例下》"案芦萹﹑衎蝞乃苻娄﹑蒲卢之倒语,亦圆意也。芦萹根大而圆,蜚形亦椭圆如芦萹,故谓之衎蝞,后世谓之负盘,亦以此矣。"一说指臭虫。见清平步青《霞外攟屑.诗话.蜚衎即臭虫》。
- 蝞蛴(mèi qí): 蛴螬的别名。见明李时珍《本草纲目.虫三.蛴螬》。
- 蛴螬(qí cáo): 金龟子的幼虫﹐长寸许﹐居于土中﹐以植物根茎等为食﹐为主要地下害虫。
- 地一(dì yī): 神名。
- 一吐(yī tǔ): 比喻尽情说出。
- 吐鹘(tǔ gǔ): 金人的束带。用金玉或犀象骨角等制成。
- 鹘鸼(gǔ zhōu): 即鹘嘲。一说即斑鸠。
- 鸼鶝(zhōu fú): 蝙蝠。
- 鶝鶔(fú róu): 鸟名。
复制代码 代码(Node.js v22.18.0)- let fs = require('fs');
- // 1. 读取词库并提取两字词
- let words = JSON.parse(fs.readFileSync('word.json').toString('utf-8'));
- let w2 = words.map(e => e.word).filter(e => e.match(/^[一-龥]{2}$/g));
- // 2. 构建字符集和索引
- let chars = new Set();
- w2.forEach(e => {
- chars.add(e[0]);
- chars.add(e[1]);
- });
- let char = [...chars];
- let c2i = [];
- let n = char.length;
- char.forEach((e, i) => c2i[e] = i);
- // 3. 构建有向图
- let g = Array(char.length).fill().map(() => []);
- w2.forEach(e => g[c2i[e[0]]].push(c2i[e[1]]));
- // 4. 初始化搜索参数
- let c = [];
- let d = [];
- g.forEach(e => d.push([]));
- let ans = [];
- // 5. 搜索
- for(let i = 0;i < n;i++) {
- d[i][i]=0
- let now = [i]
- while(now.length) {
- let newnow = []
- now.forEach(u=>{
- g[u].forEach(v=>{
- if(d[i][v]==undefined||d[i][v]>d[i][u]+1) {
- d[i][v]=d[i][u]+1
- newnow.push(v)
- }
- })
- })
- now = newnow
- }
- console.log(i)
- }
- // c = [ 7521, 7548, 7833 ]
- dmax = d.map(e=>e.reduce((l,e)=>l=Math.max(l,e),0))
- dmax.reduce((l,e)=>l=Math.max(l,e),0) // 11
- dmax.forEach((e,i)=>{if(e==11) c.push(i)})
- c.map(e=>d[e].reduce((l,k,i)=>{if(k==11)l.push(i); return l},[])) // 全是 [5115, 5326, 6448, 8649, 9796, 10826];
- let magic = [5115, 5326, 6448, 8649, 9796, 10826]; // 目标点
- d = [];
- g.forEach(e => d.push([]));
- for(let i of c) {
- d[i][i] = 0;
- let now = [i];
- let last = [];
-
- // 广度优先搜索
- while(now.length) {
- let newnow = [];
- now.forEach(u => {
- g[u].forEach(v => {
- if(d[i][v] === undefined) {
- d[i][v] = d[i][u] + 1;
- last[v] = u;
- newnow.push(v);
- }
- });
- });
- now = newnow;
- }
- // 构建路径
- magic.map(e => {
- let path = [];
- let u = e;
- while(u != undefined) {
- path.push(u);
- u = last[u];
- }
- ans.push(path.reverse());
- });
- }
- // 6. 处理结果
- ans = ans.map(l => l.map(e => char[e]).join('')); // 转换索引为汉字
- answ = ans.map(s => s.split('').map((_, i) => {
- if(i != 11) return _ + s[i+1];
- }).slice(0, -1));
- // 7. 查询词义
- ansee = answ.map(l => l.map(e => words.filter(k => k.word == e)[0])).flat(3);
- es = [...new Set(ansee).keys()];
- // 8. 格式化输出
- ess = es.map(e =>
- `${e.word}(${e.pinyin}): ${e.explanation ? e.explanation : '同"' + e.similar.join('"')}'`
- ).join('\n');
- console.log(ess); // 输出词义解释
- console.log(ans.join('\n')); // 输出完整路径
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |