Skip to content

Commit 01b142e

Browse files
yanglbmethinkasany
authored andcommitted
feat: generate sub category summary
1 parent b129642 commit 01b142e

File tree

3 files changed

+172
-2
lines changed

3 files changed

+172
-2
lines changed

solution/javascript_summary.md

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
- [2618.检查是否是类的对象实例](/javascript_solution/2600-2699/2618.Check%20if%20Object%20Instance%20of%20Class/README.md)
2+
- [2619.数组原型对象的最后一个元素](/javascript_solution/2600-2699/2619.Array%20Prototype%20Last/README.md)
3+
- [2620.计数器](/javascript_solution/2600-2699/2620.Counter/README.md)
4+
- [2621.睡眠函数](/javascript_solution/2600-2699/2621.Sleep/README.md)
5+
- [2622.有时间限制的缓存](/javascript_solution/2600-2699/2622.Cache%20With%20Time%20Limit/README.md)
6+
- [2623.记忆函数](/javascript_solution/2600-2699/2623.Memoize/README.md)
7+
- [2624.蜗牛排序](/javascript_solution/2600-2699/2624.Snail%20Traversal/README.md)
8+
- [2625.扁平化嵌套数组](/javascript_solution/2600-2699/2625.Flatten%20Deeply%20Nested%20Array/README.md)
9+
- [2626.数组归约运算](/javascript_solution/2600-2699/2626.Array%20Reduce%20Transformation/README.md)
10+
- [2627.函数防抖](/javascript_solution/2600-2699/2627.Debounce/README.md)
11+
- [2628.完全相等的 JSON 字符串](/javascript_solution/2600-2699/2628.JSON%20Deep%20Equal/README.md)
12+
- [2629.复合函数](/javascript_solution/2600-2699/2629.Function%20Composition/README.md)
13+
- [2630.记忆函数 II](/javascript_solution/2600-2699/2630.Memoize%20II/README.md)
14+
- [2631.分组](/javascript_solution/2600-2699/2631.Group%20By/README.md)
15+
- [2632.柯里化](/javascript_solution/2600-2699/2632.Curry/README.md)
16+
- [2633.将对象转换为 JSON 字符串](/javascript_solution/2600-2699/2633.Convert%20Object%20to%20JSON%20String/README.md)
17+
- [2634.过滤数组中的元素](/javascript_solution/2600-2699/2634.Filter%20Elements%20from%20Array/README.md)
18+
- [2635.转换数组中的每个元素](/javascript_solution/2600-2699/2635.Apply%20Transform%20Over%20Each%20Element%20in%20Array/README.md)
19+
- [2636.Promise 对象池](/javascript_solution/2600-2699/2636.Promise%20Pool/README.md)
20+
- [2637.有时间限制的 Promise 对象](/javascript_solution/2600-2699/2637.Promise%20Time%20Limit/README.md)
21+
- [2648.生成斐波那契数列](/javascript_solution/2600-2699/2648.Generate%20Fibonacci%20Sequence/README.md)
22+
- [2649.嵌套数组生成器](/javascript_solution/2600-2699/2649.Nested%20Array%20Generator/README.md)
23+
- [2650.设计可取消函数](/javascript_solution/2600-2699/2650.Design%20Cancellable%20Function/README.md)
24+
- [2665.计数器 II](/javascript_solution/2600-2699/2665.Counter%20II/README.md)
25+
- [2666.只允许一次函数调用](/javascript_solution/2600-2699/2666.Allow%20One%20Function%20Call/README.md)
26+
- [2667.创建 Hello World 函数](/javascript_solution/2600-2699/2667.Create%20Hello%20World%20Function/README.md)
27+
- [2675.将对象数组转换为矩阵](/javascript_solution/2600-2699/2675.Array%20of%20Objects%20to%20Matrix/README.md)
28+
- [2676.节流](/javascript_solution/2600-2699/2676.Throttle/README.md)
29+
- [2677.分块数组](/javascript_solution/2600-2699/2677.Chunk%20Array/README.md)
30+
- [2690.无穷方法对象](/javascript_solution/2600-2699/2690.Infinite%20Method%20Object/README.md)
31+
- [2691.不可变辅助工具](/javascript_solution/2600-2699/2691.Immutability%20Helper/README.md)
32+
- [2692.使对象不可变](/javascript_solution/2600-2699/2692.Make%20Object%20Immutable/README.md)
33+
- [2693.使用自定义上下文调用函数](/javascript_solution/2600-2699/2693.Call%20Function%20with%20Custom%20Context/README.md)
34+
- [2694.事件发射器](/javascript_solution/2600-2699/2694.Event%20Emitter/README.md)
35+
- [2695.包装数组](/javascript_solution/2600-2699/2695.Array%20Wrapper/README.md)
36+
- [2700.两个对象之间的差异](/javascript_solution/2700-2799/2700.Differences%20Between%20Two%20Objects/README.md)
37+
- [2703.返回传递的参数的长度](/javascript_solution/2700-2799/2703.Return%20Length%20of%20Arguments%20Passed/README.md)
38+
- [2704.相等还是不相等](/javascript_solution/2700-2799/2704.To%20Be%20Or%20Not%20To%20Be/README.md)
39+
- [2705.精简对象](/javascript_solution/2700-2799/2705.Compact%20Object/README.md)
40+
- [2715.执行可取消的延迟函数](/javascript_solution/2700-2799/2715.Timeout%20Cancellation/README.md)
41+
- [2721.并行执行异步函数](/javascript_solution/2700-2799/2721.Execute%20Asynchronous%20Functions%20in%20Parallel/README.md)
42+
- [2722.根据 ID 合并两个数组](/javascript_solution/2700-2799/2722.Join%20Two%20Arrays%20by%20ID/README.md)
43+
- [2723.添加两个 Promise 对象](/javascript_solution/2700-2799/2723.Add%20Two%20Promises/README.md)
44+
- [2724.排序方式](/javascript_solution/2700-2799/2724.Sort%20By/README.md)
45+
- [2725.间隔取消](/javascript_solution/2700-2799/2725.Interval%20Cancellation/README.md)
46+
- [2726.使用方法链的计算器](/javascript_solution/2700-2799/2726.Calculator%20with%20Method%20Chaining/README.md)
47+
- [2727.判断对象是否为空](/javascript_solution/2700-2799/2727.Is%20Object%20Empty/README.md)
48+
- [2754.将函数绑定到上下文](/javascript_solution/2700-2799/2754.Bind%20Function%20to%20Context/README.md)
49+
- [2755.深度合并两个对象](/javascript_solution/2700-2799/2755.Deep%20Merge%20of%20Two%20Objects/README.md)
50+
- [2756.批处理查询](/javascript_solution/2700-2799/2756.Query%20Batching/README.md)
51+
- [2757.生成循环数组的值](/javascript_solution/2700-2799/2757.Generate%20Circular%20Array%20Values/README.md)
52+
- [2758.下一天](/javascript_solution/2700-2799/2758.Next%20Day/README.md)
53+
- [2759.将 JSON 字符串转换为对象](/javascript_solution/2700-2799/2759.Convert%20JSON%20String%20to%20Object/README.md)
54+
- [2774.数组的上界](/javascript_solution/2700-2799/2774.Array%20Upper%20Bound/README.md)
55+
- [2775.将 undefined 转为 null](/javascript_solution/2700-2799/2775.Undefined%20to%20Null/README.md)
56+
- [2776.转换回调函数为 Promise 函数](/javascript_solution/2700-2799/2776.Convert%20Callback%20Based%20Function%20to%20Promise%20Based%20Function/README.md)
57+
- [2777.日期范围生成器](/javascript_solution/2700-2799/2777.Date%20Range%20Generator/README.md)
58+
- [2794.从两个数组中创建对象](/javascript_solution/2700-2799/2794.Create%20Object%20from%20Two%20Arrays/README.md)
59+
- [2795.并行执行 Promise 以获取独有的结果](/javascript_solution/2700-2799/2795.Parallel%20Execution%20of%20Promises%20for%20Individual%20Results%20Retrieval/README.md)
60+
- [2796.重复字符串](/javascript_solution/2700-2799/2796.Repeat%20String/README.md)
61+
- [2797.带有占位符的部分函数](/javascript_solution/2700-2799/2797.Partial%20Function%20with%20Placeholders/README.md)
62+
- [2803.阶乘生成器](/javascript_solution/2800-2899/2803.Factorial%20Generator/README.md)
63+
- [2804.数组原型的 forEach 方法](/javascript_solution/2800-2899/2804.Array%20Prototype%20ForEach/README.md)
64+
- [2805.自定义间隔](/javascript_solution/2800-2899/2805.Custom%20Interval/README.md)
65+
- [2821.延迟每个 Promise 对象的解析](/javascript_solution/2800-2899/2821.Delay%20the%20Resolution%20of%20Each%20Promise/README.md)
66+
- [2822.对象反转](/javascript_solution/2800-2899/2822.Inversion%20of%20Object/README.md)
67+
- [2823.深度对象筛选](/javascript_solution/2800-2899/2823.Deep%20Object%20Filter/README.md)

solution/javascript_summary_en.md

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
- [2618.Check if Object Instance of Class](/javascript_solution/2600-2699/2618.Check%20if%20Object%20Instance%20of%20Class/README_EN.md)
2+
- [2619.Array Prototype Last](/javascript_solution/2600-2699/2619.Array%20Prototype%20Last/README_EN.md)
3+
- [2620.Counter](/javascript_solution/2600-2699/2620.Counter/README_EN.md)
4+
- [2621.Sleep](/javascript_solution/2600-2699/2621.Sleep/README_EN.md)
5+
- [2622.Cache With Time Limit](/javascript_solution/2600-2699/2622.Cache%20With%20Time%20Limit/README_EN.md)
6+
- [2623.Memoize](/javascript_solution/2600-2699/2623.Memoize/README_EN.md)
7+
- [2624.Snail Traversal](/javascript_solution/2600-2699/2624.Snail%20Traversal/README_EN.md)
8+
- [2625.Flatten Deeply Nested Array](/javascript_solution/2600-2699/2625.Flatten%20Deeply%20Nested%20Array/README_EN.md)
9+
- [2626.Array Reduce Transformation](/javascript_solution/2600-2699/2626.Array%20Reduce%20Transformation/README_EN.md)
10+
- [2627.Debounce](/javascript_solution/2600-2699/2627.Debounce/README_EN.md)
11+
- [2628.JSON Deep Equal](/javascript_solution/2600-2699/2628.JSON%20Deep%20Equal/README_EN.md)
12+
- [2629.Function Composition](/javascript_solution/2600-2699/2629.Function%20Composition/README_EN.md)
13+
- [2630.Memoize II](/javascript_solution/2600-2699/2630.Memoize%20II/README_EN.md)
14+
- [2631.Group By](/javascript_solution/2600-2699/2631.Group%20By/README_EN.md)
15+
- [2632.Curry](/javascript_solution/2600-2699/2632.Curry/README_EN.md)
16+
- [2633.Convert Object to JSON String](/javascript_solution/2600-2699/2633.Convert%20Object%20to%20JSON%20String/README_EN.md)
17+
- [2634.Filter Elements from Array](/javascript_solution/2600-2699/2634.Filter%20Elements%20from%20Array/README_EN.md)
18+
- [2635.Apply Transform Over Each Element in Array](/javascript_solution/2600-2699/2635.Apply%20Transform%20Over%20Each%20Element%20in%20Array/README_EN.md)
19+
- [2636.Promise Pool](/javascript_solution/2600-2699/2636.Promise%20Pool/README_EN.md)
20+
- [2637.Promise Time Limit](/javascript_solution/2600-2699/2637.Promise%20Time%20Limit/README_EN.md)
21+
- [2648.Generate Fibonacci Sequence](/javascript_solution/2600-2699/2648.Generate%20Fibonacci%20Sequence/README_EN.md)
22+
- [2649.Nested Array Generator](/javascript_solution/2600-2699/2649.Nested%20Array%20Generator/README_EN.md)
23+
- [2650.Design Cancellable Function](/javascript_solution/2600-2699/2650.Design%20Cancellable%20Function/README_EN.md)
24+
- [2665.Counter II](/javascript_solution/2600-2699/2665.Counter%20II/README_EN.md)
25+
- [2666.Allow One Function Call](/javascript_solution/2600-2699/2666.Allow%20One%20Function%20Call/README_EN.md)
26+
- [2667.Create Hello World Function](/javascript_solution/2600-2699/2667.Create%20Hello%20World%20Function/README_EN.md)
27+
- [2675.Array of Objects to Matrix](/javascript_solution/2600-2699/2675.Array%20of%20Objects%20to%20Matrix/README_EN.md)
28+
- [2676.Throttle](/javascript_solution/2600-2699/2676.Throttle/README_EN.md)
29+
- [2677.Chunk Array](/javascript_solution/2600-2699/2677.Chunk%20Array/README_EN.md)
30+
- [2690.Infinite Method Object](/javascript_solution/2600-2699/2690.Infinite%20Method%20Object/README_EN.md)
31+
- [2691.Immutability Helper](/javascript_solution/2600-2699/2691.Immutability%20Helper/README_EN.md)
32+
- [2692.Make Object Immutable](/javascript_solution/2600-2699/2692.Make%20Object%20Immutable/README_EN.md)
33+
- [2693.Call Function with Custom Context](/javascript_solution/2600-2699/2693.Call%20Function%20with%20Custom%20Context/README_EN.md)
34+
- [2694.Event Emitter](/javascript_solution/2600-2699/2694.Event%20Emitter/README_EN.md)
35+
- [2695.Array Wrapper](/javascript_solution/2600-2699/2695.Array%20Wrapper/README_EN.md)
36+
- [2700.Differences Between Two Objects](/javascript_solution/2700-2799/2700.Differences%20Between%20Two%20Objects/README_EN.md)
37+
- [2703.Return Length of Arguments Passed](/javascript_solution/2700-2799/2703.Return%20Length%20of%20Arguments%20Passed/README_EN.md)
38+
- [2704.To Be Or Not To Be](/javascript_solution/2700-2799/2704.To%20Be%20Or%20Not%20To%20Be/README_EN.md)
39+
- [2705.Compact Object](/javascript_solution/2700-2799/2705.Compact%20Object/README_EN.md)
40+
- [2715.Timeout Cancellation](/javascript_solution/2700-2799/2715.Timeout%20Cancellation/README_EN.md)
41+
- [2721.Execute Asynchronous Functions in Parallel](/javascript_solution/2700-2799/2721.Execute%20Asynchronous%20Functions%20in%20Parallel/README_EN.md)
42+
- [2722.Join Two Arrays by ID](/javascript_solution/2700-2799/2722.Join%20Two%20Arrays%20by%20ID/README_EN.md)
43+
- [2723.Add Two Promises](/javascript_solution/2700-2799/2723.Add%20Two%20Promises/README_EN.md)
44+
- [2724.Sort By](/javascript_solution/2700-2799/2724.Sort%20By/README_EN.md)
45+
- [2725.Interval Cancellation](/javascript_solution/2700-2799/2725.Interval%20Cancellation/README_EN.md)
46+
- [2726.Calculator with Method Chaining](/javascript_solution/2700-2799/2726.Calculator%20with%20Method%20Chaining/README_EN.md)
47+
- [2727.Is Object Empty](/javascript_solution/2700-2799/2727.Is%20Object%20Empty/README_EN.md)
48+
- [2754.Bind Function to Context](/javascript_solution/2700-2799/2754.Bind%20Function%20to%20Context/README_EN.md)
49+
- [2755.Deep Merge of Two Objects](/javascript_solution/2700-2799/2755.Deep%20Merge%20of%20Two%20Objects/README_EN.md)
50+
- [2756.Query Batching](/javascript_solution/2700-2799/2756.Query%20Batching/README_EN.md)
51+
- [2757.Generate Circular Array Values](/javascript_solution/2700-2799/2757.Generate%20Circular%20Array%20Values/README_EN.md)
52+
- [2758.Next Day](/javascript_solution/2700-2799/2758.Next%20Day/README_EN.md)
53+
- [2759.Convert JSON String to Object](/javascript_solution/2700-2799/2759.Convert%20JSON%20String%20to%20Object/README_EN.md)
54+
- [2774.Array Upper Bound](/javascript_solution/2700-2799/2774.Array%20Upper%20Bound/README_EN.md)
55+
- [2775.Undefined to Null](/javascript_solution/2700-2799/2775.Undefined%20to%20Null/README_EN.md)
56+
- [2776.Convert Callback Based Function to Promise Based Function](/javascript_solution/2700-2799/2776.Convert%20Callback%20Based%20Function%20to%20Promise%20Based%20Function/README_EN.md)
57+
- [2777.Date Range Generator](/javascript_solution/2700-2799/2777.Date%20Range%20Generator/README_EN.md)
58+
- [2794.Create Object from Two Arrays](/javascript_solution/2700-2799/2794.Create%20Object%20from%20Two%20Arrays/README_EN.md)
59+
- [2795.Parallel Execution of Promises for Individual Results Retrieval](/javascript_solution/2700-2799/2795.Parallel%20Execution%20of%20Promises%20for%20Individual%20Results%20Retrieval/README_EN.md)
60+
- [2796.Repeat String](/javascript_solution/2700-2799/2796.Repeat%20String/README_EN.md)
61+
- [2797.Partial Function with Placeholders](/javascript_solution/2700-2799/2797.Partial%20Function%20with%20Placeholders/README_EN.md)
62+
- [2803.Factorial Generator](/javascript_solution/2800-2899/2803.Factorial%20Generator/README_EN.md)
63+
- [2804.Array Prototype ForEach](/javascript_solution/2800-2899/2804.Array%20Prototype%20ForEach/README_EN.md)
64+
- [2805.Custom Interval](/javascript_solution/2800-2899/2805.Custom%20Interval/README_EN.md)
65+
- [2821.Delay the Resolution of Each Promise](/javascript_solution/2800-2899/2821.Delay%20the%20Resolution%20of%20Each%20Promise/README_EN.md)
66+
- [2822.Inversion of Object](/javascript_solution/2800-2899/2822.Inversion%20of%20Object/README_EN.md)
67+
- [2823.Deep Object Filter](/javascript_solution/2800-2899/2823.Deep%20Object%20Filter/README_EN.md)

solution/util.py

+38-2
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def generate_question_readme(result):
155155
item["title_cn"],
156156
item["url_cn"],
157157
item["relative_path_en"],
158-
item["content_cn"].replace('leetcode-cn.com', 'leetcode.cn'),
158+
item["content_cn"].replace("leetcode-cn.com", "leetcode.cn"),
159159
)
160160
)
161161

@@ -202,6 +202,42 @@ def generate_summary(result):
202202
f.write(summary_en)
203203

204204

205+
def generate_category_summary(result, category=""):
206+
"""generate category summary files"""
207+
summary_cn = summary_en = ""
208+
category = category.lower() if category else ""
209+
sub_category = category + "_" if category else ""
210+
m = {int(item["frontend_question_id"]): item for item in result}
211+
for file in sorted(os.listdir("./"), key=lambda x: x.lower()):
212+
if os.path.isdir("./" + file) and file != "__pycache__":
213+
for sub in sorted(os.listdir("./" + file), key=lambda x: x.lower()):
214+
sub = sub.replace("`", " ")
215+
enc = quote(sub)
216+
if not sub[:4].isdigit():
217+
continue
218+
data = m.get(int(sub[:4]))
219+
if not data or (category and data["category"].lower() != category):
220+
continue
221+
sub_cn = sub
222+
if data:
223+
sub_cn = sub[:5] + data["title_cn"]
224+
225+
summary_cn += (
226+
f" - [{sub_cn}](/{sub_category}solution/{file}/{enc}/README.md)\n"
227+
)
228+
summary_en += (
229+
f" - [{sub}](/{sub_category}solution/{file}/{enc}/README_EN.md)\n"
230+
)
231+
232+
# generate summary.md
233+
with open(f"./{sub_category}summary.md", "w", encoding="utf-8") as f:
234+
f.write(summary_cn)
235+
236+
# generate summary_en.md
237+
with open(f"./{sub_category}summary_en.md", "w", encoding="utf-8") as f:
238+
f.write(summary_en)
239+
240+
205241
def refresh(result):
206242
"""update problems"""
207243
pattern = re.compile('src="(.*?)"')
@@ -248,7 +284,7 @@ def refresh(result):
248284
)
249285
cn_content = cn_content.replace(url, new_url)
250286

251-
cn_content = cn_content.replace('leetcode-cn.com', 'leetcode.cn')
287+
cn_content = cn_content.replace("leetcode-cn.com", "leetcode.cn")
252288
with open(path_cn, "w", encoding="utf-8") as f1:
253289
f1.write(cn_content)
254290

0 commit comments

Comments
 (0)