-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate_challenges_list.py
70 lines (61 loc) · 2.43 KB
/
generate_challenges_list.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import requests
problems = {
"algorithms": [
{"name": "Warmup", "slug": "warmup"},
{"name": "Implementation", "slug": "implementation"},
{"name": "Strings", "slug": "strings"},
{"name": "Sorting", "slug": "arrays-and-sorting"},
{"name": "Search", "slug": "search"},
{"name": "Graph Theory", "slug": "graph-theory"},
{"name": "Greedy", "slug": "greedy"},
{"name": "Dynamic Programming", "slug": "dynamic-programming"},
{"name": "Constructive Algorithms", "slug": "constructive-algorithms"},
{"name": "Bit Manipulation", "slug": "bit-manipulation"},
{"name": "Recursion", "slug": "recursion"},
{"name": "Game Theory", "slug": "game-theory"},
{"name": "NP Complete", "slug": "np-complete-problems"},
{"name": "Debugging", "slug": "algo-debugging"},
],
"data-structures": [
{"name": "Arrays", "slug": "arrays"},
{"name": "Linked Lists", "slug": "linked-lists"},
{"name": "Trees", "slug": "trees"},
{"name": "Balanced Trees", "slug": "balanced-trees"},
{"name": "Stacks", "slug": "stacks"},
{"name": "Queues", "slug": "queues"},
{"name": "Heap", "slug": "heap"},
{"name": "Disjoint Set", "slug": "disjoint-set"},
{"name": "Multiple Choice", "slug": "multiple-choice"},
{"name": "Trie", "slug": "trie"},
{"name": "Advanced", "slug": "data-structures"},
],
}
url_schema = (
"https://www.hackerrank.com/rest/contests/master/tracks/{problem}/challenges"
)
params = {
"offset": 0,
"limit": 1000,
"filters[subdomains][]": ...,
"track_login": "true",
}
cookies = {
"_hrank_session": ...,
}
session = requests.Session()
for problem, subdomains in problems.items():
url = url_schema.format(problem=problem)
print(f"### {problem}")
for subdomain in subdomains:
params["filters[subdomains][]"] = subdomain["slug"]
result = session.get(
url, params=params, headers={"User-Agent": "Hacker:)"}, cookies=cookies
)
if result.status_code == 200:
print(f"#### {subdomain['name']}")
for i, challenge in enumerate(result.json()["models"]):
print(
"- [x]" if challenge.get("solved") else "- [ ]",
f"{i + 1}",
f"[{challenge['name']}](https://www.hackerrank.com/challenges/{challenge['slug']})",
)