From a31cdcee05829241f5add0bbb339039a3e0ebac4 Mon Sep 17 00:00:00 2001 From: feilong Date: Tue, 9 Nov 2021 04:17:08 +0800 Subject: [PATCH] fix exercise_id gen bug --- .../solution.json" | 6 + data/tree.json | 617 +++++++++++++----- src/tree.py | 22 +- 3 files changed, 469 insertions(+), 176 deletions(-) create mode 100644 "data/2.\347\256\227\346\263\225\344\270\255\351\230\266/5.leetcode-\346\216\222\345\272\217\347\256\227\346\263\225/911.\346\216\222\345\272\217\346\225\260\347\273\204/solution.json" diff --git "a/data/2.\347\256\227\346\263\225\344\270\255\351\230\266/5.leetcode-\346\216\222\345\272\217\347\256\227\346\263\225/911.\346\216\222\345\272\217\346\225\260\347\273\204/solution.json" "b/data/2.\347\256\227\346\263\225\344\270\255\351\230\266/5.leetcode-\346\216\222\345\272\217\347\256\227\346\263\225/911.\346\216\222\345\272\217\346\225\260\347\273\204/solution.json" new file mode 100644 index 000000000..0eff966dc --- /dev/null +++ "b/data/2.\347\256\227\346\263\225\344\270\255\351\230\266/5.leetcode-\346\216\222\345\272\217\347\256\227\346\263\225/911.\346\216\222\345\272\217\346\225\260\347\273\204/solution.json" @@ -0,0 +1,6 @@ +{ + "type": "code_options", + "author": "CSDN.net", + "source": "solution.md", + "exercise_id": "b6c1d63886f5439e8f7be9e1aa956ba6" +} \ No newline at end of file diff --git a/data/tree.json b/data/tree.json index 8b46a14cb..496f723a3 100644 --- a/data/tree.json +++ b/data/tree.json @@ -21,7 +21,8 @@ "分数" ], "children": [] - } + }, + "origin_num": 3 }, { "等差素数列": { @@ -31,7 +32,8 @@ "等差素数列" ], "children": [] - } + }, + "origin_num": 4 }, { "乘积尾零": { @@ -41,7 +43,8 @@ "乘积尾零" ], "children": [] - } + }, + "origin_num": 24 }, { "成绩分析": { @@ -51,7 +54,8 @@ "成绩分析" ], "children": [] - } + }, + "origin_num": 40 }, { "乘积最大": { @@ -61,7 +65,8 @@ "乘积最大" ], "children": [] - } + }, + "origin_num": 41 }, { "猜年龄": { @@ -71,7 +76,8 @@ "猜年龄" ], "children": [] - } + }, + "origin_num": 67 }, { "递增三元组": { @@ -81,7 +87,8 @@ "递增三元组" ], "children": [] - } + }, + "origin_num": 69 }, { "第几个幸运数": { @@ -91,7 +98,8 @@ "第几个幸运数" ], "children": [] - } + }, + "origin_num": 77 }, { "次数差": { @@ -101,7 +109,8 @@ "次数差" ], "children": [] - } + }, + "origin_num": 88 }, { "猜字母": { @@ -111,7 +120,8 @@ "猜字母" ], "children": [] - } + }, + "origin_num": 99 }, { "第39级台阶": { @@ -121,7 +131,8 @@ "第39级台阶" ], "children": [] - } + }, + "origin_num": 100 }, { "9数算式": { @@ -131,7 +142,8 @@ "9数算式" ], "children": [] - } + }, + "origin_num": 104 }, { "错误票据": { @@ -141,7 +153,8 @@ "错误票据" ], "children": [] - } + }, + "origin_num": 106 }, { "大数乘法": { @@ -151,7 +164,8 @@ "大数乘法" ], "children": [] - } + }, + "origin_num": 112 }, { "大衍数列": { @@ -161,7 +175,8 @@ "大衍数列" ], "children": [] - } + }, + "origin_num": 114 }, { "成绩统计": { @@ -171,7 +186,8 @@ "成绩统计" ], "children": [] - } + }, + "origin_num": 120 }, { "比酒量": { @@ -181,7 +197,8 @@ "比酒量" ], "children": [] - } + }, + "origin_num": 126 }, { "第几天": { @@ -191,7 +208,8 @@ "第几天" ], "children": [] - } + }, + "origin_num": 134 }, { "斐波那契": { @@ -201,7 +219,8 @@ "斐波那契" ], "children": [] - } + }, + "origin_num": 135 }, { "方阵转置": { @@ -211,7 +230,8 @@ "方阵转置" ], "children": [] - } + }, + "origin_num": 149 }, { "倍数问题": { @@ -221,7 +241,8 @@ "倍数问题" ], "children": [] - } + }, + "origin_num": 158 } ] } @@ -239,7 +260,8 @@ "单词分析" ], "children": [] - } + }, + "origin_num": 92 }, { "分类计数": { @@ -249,7 +271,8 @@ "分类计数" ], "children": [] - } + }, + "origin_num": 97 }, { "翻硬币": { @@ -259,7 +282,8 @@ "翻硬币" ], "children": [] - } + }, + "origin_num": 98 } ] } @@ -277,7 +301,8 @@ "抽签" ], "children": [] - } + }, + "origin_num": 35 }, { "打印图形": { @@ -287,7 +312,8 @@ "打印图形" ], "children": [] - } + }, + "origin_num": 58 }, { "带分数": { @@ -297,7 +323,8 @@ "带分数" ], "children": [] - } + }, + "origin_num": 143 }, { "等差数列": { @@ -307,7 +334,8 @@ "等差数列" ], "children": [] - } + }, + "origin_num": 163 } ] } @@ -325,7 +353,8 @@ "堆的计数" ], "children": [] - } + }, + "origin_num": 124 } ] } @@ -350,7 +379,8 @@ "方程整数解" ], "children": [] - } + }, + "origin_num": 14 }, { "放棋子": { @@ -360,7 +390,8 @@ "放棋子" ], "children": [] - } + }, + "origin_num": 23 }, { "分巧克力": { @@ -370,7 +401,8 @@ "分巧克力" ], "children": [] - } + }, + "origin_num": 28 }, { "等腰三角形": { @@ -380,7 +412,8 @@ "等腰三角形" ], "children": [] - } + }, + "origin_num": 53 }, { "分糖果": { @@ -390,7 +423,8 @@ "分糖果" ], "children": [] - } + }, + "origin_num": 54 }, { "方格填数": { @@ -400,7 +434,8 @@ "方格填数" ], "children": [] - } + }, + "origin_num": 63 }, { "夺冠概率": { @@ -410,7 +445,8 @@ "夺冠概率" ], "children": [] - } + }, + "origin_num": 137 }, { "7段码": { @@ -420,7 +456,8 @@ "7段码" ], "children": [] - } + }, + "origin_num": 162 }, { "颠倒的价牌": { @@ -430,7 +467,8 @@ "颠倒的价牌" ], "children": [] - } + }, + "origin_num": 175 }, { "承压计算": { @@ -440,7 +478,8 @@ "承压计算" ], "children": [] - } + }, + "origin_num": 187 } ] } @@ -458,7 +497,8 @@ "搭积木" ], "children": [] - } + }, + "origin_num": 6 }, { "分配口罩": { @@ -468,7 +508,8 @@ "分配口罩" ], "children": [] - } + }, + "origin_num": 51 }, { "方格分割": { @@ -478,7 +519,8 @@ "方格分割" ], "children": [] - } + }, + "origin_num": 65 }, { "超级胶水": { @@ -488,7 +530,8 @@ "超级胶水" ], "children": [] - } + }, + "origin_num": 121 }, { "凑算式": { @@ -498,7 +541,8 @@ "凑算式" ], "children": [] - } + }, + "origin_num": 156 }, { "大臣的旅费": { @@ -508,7 +552,8 @@ "大臣的旅费" ], "children": [] - } + }, + "origin_num": 188 } ] } @@ -533,7 +578,8 @@ "测试次数" ], "children": [] - } + }, + "origin_num": 91 }, { "地宫取宝": { @@ -543,7 +589,8 @@ "地宫取宝" ], "children": [] - } + }, + "origin_num": 117 } ] } @@ -590,7 +637,8 @@ "两数之和" ], "children": [] - } + }, + "origin_num": 0 }, { "寻找两个正序数组的中位数": { @@ -600,7 +648,8 @@ "寻找两个正序数组的中位数" ], "children": [] - } + }, + "origin_num": 3 }, { "三数之和": { @@ -610,7 +659,8 @@ "三数之和" ], "children": [] - } + }, + "origin_num": 14 }, { "四数之和": { @@ -620,7 +670,8 @@ "四数之和" ], "children": [] - } + }, + "origin_num": 17 }, { "搜索旋转排序数组": { @@ -630,7 +681,8 @@ "搜索旋转排序数组" ], "children": [] - } + }, + "origin_num": 32 }, { "在排序数组中查找元素的第一个和最后一个位置": { @@ -640,7 +692,8 @@ "在排序数组中查找元素的第一个和最后一个位置" ], "children": [] - } + }, + "origin_num": 33 }, { "搜索插入位置": { @@ -650,7 +703,8 @@ "搜索插入位置" ], "children": [] - } + }, + "origin_num": 34 }, { "旋转图像": { @@ -660,7 +714,8 @@ "旋转图像" ], "children": [] - } + }, + "origin_num": 47 }, { "螺旋矩阵": { @@ -670,7 +725,8 @@ "螺旋矩阵" ], "children": [] - } + }, + "origin_num": 53 }, { "合并区间": { @@ -680,7 +736,8 @@ "合并区间" ], "children": [] - } + }, + "origin_num": 55 }, { "插入区间": { @@ -690,7 +747,8 @@ "插入区间" ], "children": [] - } + }, + "origin_num": 56 }, { "螺旋矩阵 II": { @@ -700,7 +758,8 @@ "螺旋矩阵 II" ], "children": [] - } + }, + "origin_num": 58 }, { "矩阵置零": { @@ -710,7 +769,8 @@ "矩阵置零" ], "children": [] - } + }, + "origin_num": 72 }, { "搜索二维矩阵": { @@ -720,7 +780,8 @@ "搜索二维矩阵" ], "children": [] - } + }, + "origin_num": 73 }, { "子集": { @@ -730,7 +791,8 @@ "子集" ], "children": [] - } + }, + "origin_num": 77 }, { "删除有序数组中的重复项 II": { @@ -740,7 +802,8 @@ "删除有序数组中的重复项 II" ], "children": [] - } + }, + "origin_num": 79 }, { "搜索旋转排序数组 II": { @@ -750,7 +813,8 @@ "搜索旋转排序数组 II" ], "children": [] - } + }, + "origin_num": 80 } ] } @@ -768,7 +832,8 @@ "两数相加" ], "children": [] - } + }, + "origin_num": 1 }, { "删除链表的倒数第 N 个结点": { @@ -778,7 +843,8 @@ "删除链表的倒数第 N 个结点" ], "children": [] - } + }, + "origin_num": 18 }, { "合并两个有序链表": { @@ -788,7 +854,8 @@ "合并两个有序链表" ], "children": [] - } + }, + "origin_num": 20 }, { "合并K个升序链表": { @@ -798,7 +865,8 @@ "合并K个升序链表" ], "children": [] - } + }, + "origin_num": 22 }, { "两两交换链表中的节点": { @@ -808,7 +876,8 @@ "两两交换链表中的节点" ], "children": [] - } + }, + "origin_num": 23 }, { "K 个一组翻转链表": { @@ -818,7 +887,8 @@ "K 个一组翻转链表" ], "children": [] - } + }, + "origin_num": 24 }, { "删除排序链表中的重复元素 II": { @@ -828,7 +898,8 @@ "删除排序链表中的重复元素 II" ], "children": [] - } + }, + "origin_num": 81 }, { "删除排序链表中的重复元素": { @@ -838,7 +909,8 @@ "删除排序链表中的重复元素" ], "children": [] - } + }, + "origin_num": 82 }, { "分隔链表": { @@ -848,7 +920,8 @@ "分隔链表" ], "children": [] - } + }, + "origin_num": 85 }, { "反转链表 II": { @@ -858,7 +931,8 @@ "反转链表 II" ], "children": [] - } + }, + "origin_num": 91 } ] } @@ -876,7 +950,8 @@ "无重复字符的最长子串" ], "children": [] - } + }, + "origin_num": 2 }, { "Z 字形变换": { @@ -886,7 +961,8 @@ "Z 字形变换" ], "children": [] - } + }, + "origin_num": 5 }, { "字符串转换整数 (atoi)": { @@ -896,7 +972,8 @@ "字符串转换整数 (atoi)" ], "children": [] - } + }, + "origin_num": 7 }, { "最长公共前缀": { @@ -906,7 +983,8 @@ "最长公共前缀" ], "children": [] - } + }, + "origin_num": 13 }, { "实现 strStr()": { @@ -916,7 +994,8 @@ "实现 strStr()" ], "children": [] - } + }, + "origin_num": 27 }, { "外观数列": { @@ -926,7 +1005,8 @@ "外观数列" ], "children": [] - } + }, + "origin_num": 37 }, { "字符串相乘": { @@ -936,7 +1016,8 @@ "字符串相乘" ], "children": [] - } + }, + "origin_num": 42 }, { "最后一个单词的长度": { @@ -946,7 +1027,8 @@ "最后一个单词的长度" ], "children": [] - } + }, + "origin_num": 57 }, { "有效数字": { @@ -956,7 +1038,8 @@ "有效数字" ], "children": [] - } + }, + "origin_num": 64 }, { "复原 IP 地址": { @@ -966,7 +1049,8 @@ "复原 IP 地址" ], "children": [] - } + }, + "origin_num": 92 }, { "交错字符串": { @@ -976,7 +1060,8 @@ "交错字符串" ], "children": [] - } + }, + "origin_num": 96 } ] } @@ -994,7 +1079,8 @@ "有效的括号" ], "children": [] - } + }, + "origin_num": 19 }, { "最长有效括号": { @@ -1004,7 +1090,8 @@ "最长有效括号" ], "children": [] - } + }, + "origin_num": 31 }, { "接雨水": { @@ -1014,7 +1101,8 @@ "接雨水" ], "children": [] - } + }, + "origin_num": 41 }, { "简化路径": { @@ -1024,7 +1112,8 @@ "简化路径" ], "children": [] - } + }, + "origin_num": 70 }, { "柱状图中最大的矩形": { @@ -1034,7 +1123,8 @@ "柱状图中最大的矩形" ], "children": [] - } + }, + "origin_num": 83 }, { "逆波兰表达式求值": { @@ -1044,7 +1134,19 @@ "逆波兰表达式求值" ], "children": [] - } + }, + "origin_num": 149 + }, + { + "最小栈": { + "node_id": "algorithm-e390d7a141d94907930a50469baa0cfa", + "keywords": [ + "leetcode", + "最小栈" + ], + "children": [] + }, + "origin_num": 154 }, { "天际线问题": { @@ -1054,7 +1156,30 @@ "天际线问题" ], "children": [] - } + }, + "origin_num": 217 + }, + { + "基本计算器": { + "node_id": "algorithm-56c34a1192d0451cb982e456a82c5c6d", + "keywords": [ + "leetcode", + "基本计算器" + ], + "children": [] + }, + "origin_num": 223 + }, + { + "基本计算器 II": { + "node_id": "algorithm-c75a176a776a4b2d87cf2be7102b49b7", + "keywords": [ + "leetcode", + "基本计算器 II" + ], + "children": [] + }, + "origin_num": 226 } ] } @@ -1064,6 +1189,17 @@ "node_id": "algorithm-23e9e4c3b7a147299c16ebd6d25dd23b", "keywords": [], "children": [ + { + "最大间距": { + "node_id": "algorithm-e7fb5d6455fe490dbffe4b5cac8a5b95", + "keywords": [ + "leetcode", + "最大间距" + ], + "children": [] + }, + "origin_num": 163 + }, { "H 指数": { "node_id": "algorithm-9e8294b8930c462fb54eba9c47a8ecfd", @@ -1072,7 +1208,19 @@ "H 指数" ], "children": [] - } + }, + "origin_num": 273 + }, + { + "计算右侧小于当前元素的个数": { + "node_id": "algorithm-4b5f859d4b83448e81381353bc1eba4c", + "keywords": [ + "leetcode", + "计算右侧小于当前元素的个数" + ], + "children": [] + }, + "origin_num": 314 }, { "摆动排序 II": { @@ -1082,7 +1230,19 @@ "摆动排序 II" ], "children": [] - } + }, + "origin_num": 323 + }, + { + "区间和的个数": { + "node_id": "algorithm-56f49e9431934f4ab2e3b09586675d3c", + "keywords": [ + "leetcode", + "区间和的个数" + ], + "children": [] + }, + "origin_num": 326 }, { "前 K 个高频元素": { @@ -1092,7 +1252,8 @@ "前 K 个高频元素" ], "children": [] - } + }, + "origin_num": 346 }, { "俄罗斯套娃信封问题": { @@ -1102,7 +1263,8 @@ "俄罗斯套娃信封问题" ], "children": [] - } + }, + "origin_num": 353 }, { "有序矩阵中第 K 小的元素": { @@ -1112,7 +1274,30 @@ "有序矩阵中第 K 小的元素" ], "children": [] - } + }, + "origin_num": 377 + }, + { + "翻转对": { + "node_id": "algorithm-3a4e0f87183b4a27b08de2624304ca54", + "keywords": [ + "leetcode", + "翻转对" + ], + "children": [] + }, + "origin_num": 492 + }, + { + "排序数组": { + "node_id": "algorithm-1b8fb429d0f242cb991e78bb19cfda1f", + "keywords": [ + "leetcode", + "排序数组" + ], + "children": [] + }, + "origin_num": 911 } ] } @@ -1130,7 +1315,8 @@ "盛最多水的容器" ], "children": [] - } + }, + "origin_num": 10 }, { "最接近的三数之和": { @@ -1140,7 +1326,8 @@ "最接近的三数之和" ], "children": [] - } + }, + "origin_num": 15 }, { "删除有序数组中的重复项": { @@ -1150,7 +1337,8 @@ "删除有序数组中的重复项" ], "children": [] - } + }, + "origin_num": 25 }, { "移除元素": { @@ -1160,7 +1348,8 @@ "移除元素" ], "children": [] - } + }, + "origin_num": 26 }, { "下一个排列": { @@ -1170,7 +1359,8 @@ "下一个排列" ], "children": [] - } + }, + "origin_num": 30 }, { "旋转链表": { @@ -1180,7 +1370,8 @@ "旋转链表" ], "children": [] - } + }, + "origin_num": 60 }, { "颜色分类": { @@ -1190,7 +1381,8 @@ "颜色分类" ], "children": [] - } + }, + "origin_num": 74 }, { "合并两个有序数组": { @@ -1200,7 +1392,30 @@ "合并两个有序数组" ], "children": [] - } + }, + "origin_num": 87 + }, + { + "环形链表": { + "node_id": "algorithm-b36465af5596480baf353689bbb76872", + "keywords": [ + "leetcode", + "环形链表" + ], + "children": [] + }, + "origin_num": 140 + }, + { + "环形链表 II": { + "node_id": "algorithm-dc2fe764852f445ea4f7393548a21e83", + "keywords": [ + "leetcode", + "环形链表 II" + ], + "children": [] + }, + "origin_num": 141 } ] } @@ -1226,7 +1441,8 @@ "二叉树的中序遍历" ], "children": [] - } + }, + "origin_num": 93 }, { "不同的二叉搜索树 II": { @@ -1236,7 +1452,8 @@ "不同的二叉搜索树 II" ], "children": [] - } + }, + "origin_num": 94 }, { "不同的二叉搜索树": { @@ -1246,7 +1463,8 @@ "不同的二叉搜索树" ], "children": [] - } + }, + "origin_num": 95 }, { "验证二叉搜索树": { @@ -1256,7 +1474,8 @@ "验证二叉搜索树" ], "children": [] - } + }, + "origin_num": 97 }, { "恢复二叉搜索树": { @@ -1266,7 +1485,8 @@ "恢复二叉搜索树" ], "children": [] - } + }, + "origin_num": 98 }, { "相同的树": { @@ -1276,7 +1496,8 @@ "相同的树" ], "children": [] - } + }, + "origin_num": 99 }, { "二叉树中的最大路径和": { @@ -1286,7 +1507,8 @@ "二叉树中的最大路径和" ], "children": [] - } + }, + "origin_num": 123 } ] } @@ -1304,7 +1526,8 @@ "串联所有单词的子串" ], "children": [] - } + }, + "origin_num": 29 }, { "有效的数独": { @@ -1314,7 +1537,8 @@ "有效的数独" ], "children": [] - } + }, + "origin_num": 35 }, { "缺失的第一个正数": { @@ -1324,7 +1548,8 @@ "缺失的第一个正数" ], "children": [] - } + }, + "origin_num": 40 }, { "字母异位词分组": { @@ -1334,7 +1559,8 @@ "字母异位词分组" ], "children": [] - } + }, + "origin_num": 48 }, { "最小覆盖子串": { @@ -1344,7 +1570,8 @@ "最小覆盖子串" ], "children": [] - } + }, + "origin_num": 75 }, { "同构字符串": { @@ -1354,7 +1581,8 @@ "同构字符串" ], "children": [] - } + }, + "origin_num": 204 } ] } @@ -1372,7 +1600,8 @@ "组合" ], "children": [] - } + }, + "origin_num": 76 }, { "单词搜索": { @@ -1382,7 +1611,8 @@ "单词搜索" ], "children": [] - } + }, + "origin_num": 78 }, { "克隆图": { @@ -1392,7 +1622,8 @@ "克隆图" ], "children": [] - } + }, + "origin_num": 132 }, { "课程表": { @@ -1402,7 +1633,8 @@ "课程表" ], "children": [] - } + }, + "origin_num": 206 }, { "课程表 II": { @@ -1412,7 +1644,8 @@ "课程表 II" ], "children": [] - } + }, + "origin_num": 209 }, { "矩阵中的最长递增路径": { @@ -1422,7 +1655,8 @@ "矩阵中的最长递增路径" ], "children": [] - } + }, + "origin_num": 328 }, { "重新安排行程": { @@ -1432,7 +1666,8 @@ "重新安排行程" ], "children": [] - } + }, + "origin_num": 331 } ] } @@ -1450,7 +1685,8 @@ "整数反转" ], "children": [] - } + }, + "origin_num": 6 }, { "回文数": { @@ -1460,7 +1696,8 @@ "回文数" ], "children": [] - } + }, + "origin_num": 8 }, { "整数转罗马数字": { @@ -1470,7 +1707,8 @@ "整数转罗马数字" ], "children": [] - } + }, + "origin_num": 11 }, { "罗马数字转整数": { @@ -1480,7 +1718,8 @@ "罗马数字转整数" ], "children": [] - } + }, + "origin_num": 12 }, { "两数相除": { @@ -1490,7 +1729,8 @@ "两数相除" ], "children": [] - } + }, + "origin_num": 28 }, { "Pow(x, n)": { @@ -1500,7 +1740,8 @@ "Pow(x, n)" ], "children": [] - } + }, + "origin_num": 49 }, { "排列序列": { @@ -1510,7 +1751,8 @@ "排列序列" ], "children": [] - } + }, + "origin_num": 59 }, { "加一": { @@ -1520,7 +1762,8 @@ "加一" ], "children": [] - } + }, + "origin_num": 65 }, { "二进制求和": { @@ -1530,7 +1773,8 @@ "二进制求和" ], "children": [] - } + }, + "origin_num": 66 }, { "x 的平方根": { @@ -1540,7 +1784,8 @@ "x 的平方根" ], "children": [] - } + }, + "origin_num": 68 } ] } @@ -1558,7 +1803,8 @@ "LRU 缓存机制" ], "children": [] - } + }, + "origin_num": 145 }, { "设计推特": { @@ -1568,7 +1814,8 @@ "设计推特" ], "children": [] - } + }, + "origin_num": 354 }, { "O(1) 时间插入、删除和获取随机元素": { @@ -1578,7 +1825,8 @@ "O(1) 时间插入、删除和获取随机元素" ], "children": [] - } + }, + "origin_num": 379 }, { "O(1) 时间插入、删除和获取随机元素 - 允许重复": { @@ -1588,7 +1836,8 @@ "O(1) 时间插入、删除和获取随机元素 - 允许重复" ], "children": [] - } + }, + "origin_num": 380 }, { "LFU 缓存": { @@ -1598,7 +1847,8 @@ "LFU 缓存" ], "children": [] - } + }, + "origin_num": 459 } ] } @@ -1616,7 +1866,8 @@ "最长回文子串" ], "children": [] - } + }, + "origin_num": 4 }, { "正则表达式匹配": { @@ -1626,7 +1877,8 @@ "正则表达式匹配" ], "children": [] - } + }, + "origin_num": 9 }, { "括号生成": { @@ -1636,7 +1888,8 @@ "括号生成" ], "children": [] - } + }, + "origin_num": 21 }, { "通配符匹配": { @@ -1646,7 +1899,8 @@ "通配符匹配" ], "children": [] - } + }, + "origin_num": 43 }, { "最大子序和": { @@ -1656,7 +1910,8 @@ "最大子序和" ], "children": [] - } + }, + "origin_num": 52 }, { "不同路径": { @@ -1666,7 +1921,8 @@ "不同路径" ], "children": [] - } + }, + "origin_num": 61 }, { "不同路径 II": { @@ -1676,7 +1932,8 @@ "不同路径 II" ], "children": [] - } + }, + "origin_num": 62 }, { "最小路径和": { @@ -1686,7 +1943,8 @@ "最小路径和" ], "children": [] - } + }, + "origin_num": 63 }, { "爬楼梯": { @@ -1696,7 +1954,8 @@ "爬楼梯" ], "children": [] - } + }, + "origin_num": 69 }, { "编辑距离": { @@ -1706,7 +1965,8 @@ "编辑距离" ], "children": [] - } + }, + "origin_num": 71 }, { "最大矩形": { @@ -1716,7 +1976,8 @@ "最大矩形" ], "children": [] - } + }, + "origin_num": 84 }, { "扰乱字符串": { @@ -1726,7 +1987,8 @@ "扰乱字符串" ], "children": [] - } + }, + "origin_num": 86 }, { "解码方法": { @@ -1736,7 +1998,8 @@ "解码方法" ], "children": [] - } + }, + "origin_num": 90 } ] } @@ -1754,7 +2017,8 @@ "电话号码的字母组合" ], "children": [] - } + }, + "origin_num": 16 }, { "解数独": { @@ -1764,7 +2028,8 @@ "解数独" ], "children": [] - } + }, + "origin_num": 36 }, { "组合总和": { @@ -1774,7 +2039,8 @@ "组合总和" ], "children": [] - } + }, + "origin_num": 38 }, { "组合总和 II": { @@ -1784,7 +2050,8 @@ "组合总和 II" ], "children": [] - } + }, + "origin_num": 39 }, { "全排列": { @@ -1794,7 +2061,8 @@ "全排列" ], "children": [] - } + }, + "origin_num": 45 }, { "全排列 II": { @@ -1804,7 +2072,8 @@ "全排列 II" ], "children": [] - } + }, + "origin_num": 46 }, { "N 皇后": { @@ -1814,7 +2083,8 @@ "N 皇后" ], "children": [] - } + }, + "origin_num": 50 }, { "N皇后 II": { @@ -1824,7 +2094,8 @@ "N皇后 II" ], "children": [] - } + }, + "origin_num": 51 }, { "格雷编码": { @@ -1834,7 +2105,8 @@ "格雷编码" ], "children": [] - } + }, + "origin_num": 88 }, { "子集 II": { @@ -1844,7 +2116,8 @@ "子集 II" ], "children": [] - } + }, + "origin_num": 89 } ] } @@ -1862,7 +2135,8 @@ "跳跃游戏 II" ], "children": [] - } + }, + "origin_num": 44 }, { "跳跃游戏": { @@ -1872,7 +2146,8 @@ "跳跃游戏" ], "children": [] - } + }, + "origin_num": 54 }, { "文本左右对齐": { @@ -1882,7 +2157,8 @@ "文本左右对齐" ], "children": [] - } + }, + "origin_num": 67 }, { "买卖股票的最佳时机 II": { @@ -1892,7 +2168,8 @@ "买卖股票的最佳时机 II" ], "children": [] - } + }, + "origin_num": 121 }, { "加油站": { @@ -1902,7 +2179,8 @@ "加油站" ], "children": [] - } + }, + "origin_num": 133 }, { "分发糖果": { @@ -1912,7 +2190,8 @@ "分发糖果" ], "children": [] - } + }, + "origin_num": 134 } ] } diff --git a/src/tree.py b/src/tree.py index 9e6a5cf92..e51eeb6a0 100644 --- a/src/tree.py +++ b/src/tree.py @@ -14,6 +14,7 @@ formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) + def load_json(p): with open(p, 'r') as f: return json.loads(f.read()) @@ -50,6 +51,8 @@ def parse_no_name(d): no = int(m.group(1)) dir_name = m.group(2) except: + logger.error('parser no name failed') + logger.error(d) sys.exit(0) return no, dir_name @@ -99,13 +102,17 @@ class TreeWalker: for index, chapter in enumerate(level_node["children"]): chapter_title = list(chapter.keys())[0] chapter_node = list(chapter.values())[0] - chapter_path = os.path.join(level_path, f"{index+1}.{chapter_title}") + chapter_path = os.path.join( + level_path, f"{index+1}.{chapter_title}") self.load_sections(chapter_path, chapter_node) for index, section_node in enumerate(chapter_node["children"]): section_title = list(section_node.keys())[0] - full_path = os.path.join(chapter_path, f"{index}.{section_title}") + full_path = os.path.join( + chapter_path, f"{section_node['origin_num']}.{section_title}") if os.path.isdir(full_path): self.ensure_exercises(full_path) + else: + pass tree_path = os.path.join(self.root, "tree.json") dump_json(tree_path, self.tree, exist_ok=True, override=True) @@ -158,6 +165,8 @@ class TreeWalker: sections.append((num, section)) sections.sort(key=lambda item: item[0]) + for item in sections: + item[1]['origin_num'] = item[0] chapter_node["children"] = [item[1] for item in sections] return chapter_node @@ -217,8 +226,8 @@ class TreeWalker: config = { "node_id": self.gen_node_id(), "keywords": [], - "children":[], - "export":[] + "children": [], + "export": [] } dump_json(config_path, config, exist_ok=True, override=True) else: @@ -241,7 +250,7 @@ class TreeWalker: def extract_node_env(self, path): try: _, dir = os.path.split(path) - self.logger.info(path) + # self.logger.info(path) number, title = dir.split(".", 1) return int(number), title except Exception as error: @@ -281,5 +290,4 @@ class TreeWalker: exercise = load_json(full_name) if "exercise_id" not in exercise: exercise["exercise_id"] = uuid.uuid4().hex - dump_json(full_name, exercise) - + dump_json(full_name, exercise, True, True) -- GitLab