找回密码
 立即注册
首页 业界区 安全 中文二字词词语接龙的最长最短路径

中文二字词词语接龙的最长最短路径

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

相关推荐

2025-10-27 20:08:40

举报

2025-11-20 03:33:24

举报

您需要登录后才可以回帖 登录 | 立即注册