Skip to content

Commit 820d9cd

Browse files
committed
Add more tasks
1 parent ab5ed3c commit 820d9cd

13 files changed

Lines changed: 1713 additions & 12 deletions

task_pack.exs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
defmodule TaskPackCreator do
22
import Ecto.Query
33

4-
5-
@names [
6-
"double_letters",
7-
"compress_repeats",
8-
"sum_numbers_in_text",
9-
"uncompress_repeats",
10-
"typed_string_equality",
11-
"bike_to_charge",
12-
"overlapping_intervals",
13-
"log_ip_sanitizer",
4+
@names [
5+
"clue_intersection",
6+
"squad_split",
7+
"secret_lab_shift_hours",
8+
"eggo_boxes_needed",
9+
"walkie_talkie_range",
10+
"christmas_lights_groups",
11+
"demogorgon_alert",
12+
"portal_sightings_sum",
13+
"hawkins_missing",
14+
"upside_down_label",
15+
"episode_binge_min",
16+
"lab_patrol_coverage"
1417
]
1518

1619
def run do
@@ -20,7 +23,7 @@ defmodule TaskPackCreator do
2023
ids = Enum.map(@names, fn name -> tasks_by_name[name].id end)
2124

2225
task_pack = %Codebattle.TaskPack{
23-
name: "masters_s0_2025_2",
26+
name: "masters_s0_2026_1",
2427
state: "active",
2528
visibility: "hidden",
2629
task_ids: ids,
@@ -29,6 +32,6 @@ defmodule TaskPackCreator do
2932

3033
Codebattle.Repo.insert(task_pack)
3134
end
32-
3335
end
36+
3437
TaskPackCreator.run()
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
level = "easy"
2+
name = "clue_intersection"
3+
tags = ["collections"]
4+
time_to_solve_sec = 240
5+
6+
description_en = """
7+
Different groups compare clues. Given two lists of clue strings, return a sorted list of unique clues that appear in both lists, comparing case-insensitively and returning lowercase strings.
8+
"""
9+
10+
description_ru = """
11+
Разные группы сравнивают улики. Даны два списка строк с уликами, верните отсортированный список уникальных улик, которые есть в обоих списках. Сравнивайте без учета регистра и возвращайте строки в нижнем регистре.
12+
"""
13+
14+
solution = """
15+
def solution(a: list[str], b: list[str]) -> list[str]:
16+
return sorted({x.lower() for x in a} & {x.lower() for x in b})
17+
"""
18+
19+
examples = """
20+
solution([], []) == []
21+
solution(["Map"], ["map"]) == ["map"]
22+
solution(["Gate", "Map"], ["map", "Radio"]) == ["map"]
23+
"""
24+
25+
[[input_signature]]
26+
argument_name = "a"
27+
[input_signature.type]
28+
name = "array"
29+
[input_signature.type.nested]
30+
name = "string"
31+
32+
[[input_signature]]
33+
argument_name = "b"
34+
[input_signature.type]
35+
name = "array"
36+
[input_signature.type.nested]
37+
name = "string"
38+
39+
[output_signature.type]
40+
name = "array"
41+
[output_signature.type.nested]
42+
name = "string"
43+
44+
[[asserts]]
45+
arguments = [[], []]
46+
expected = []
47+
48+
[[asserts]]
49+
arguments = [["map"], []]
50+
expected = []
51+
52+
[[asserts]]
53+
arguments = [[], ["map"]]
54+
expected = []
55+
56+
[[asserts]]
57+
arguments = [["Map"], ["map"]]
58+
expected = ["map"]
59+
60+
[[asserts]]
61+
arguments = [["Gate", "Map"], ["map", "Radio"]]
62+
expected = ["map"]
63+
64+
[[asserts]]
65+
arguments = [["Tunnel", "Tape"], ["tape", "Rope"]]
66+
expected = ["tape"]
67+
68+
[[asserts]]
69+
arguments = [["Key", "Code"], ["code", "key"]]
70+
expected = ["code", "key"]
71+
72+
[[asserts]]
73+
arguments = [["Clock", "Note", "Coin"], ["coin", "clock"]]
74+
expected = ["clock", "coin"]
75+
76+
[[asserts]]
77+
arguments = [["radio", "tower"], ["Tower", "signal", "RADIO"]]
78+
expected = ["radio", "tower"]
79+
80+
[[asserts]]
81+
arguments = [["Lab", "Badge", "Map"], ["map", "badge", "id"]]
82+
expected = ["badge", "map"]
83+
84+
[[asserts]]
85+
arguments = [["Flashlight"], ["flashLIGHT", "battery"]]
86+
expected = ["flashlight"]
87+
88+
[[asserts]]
89+
arguments = [["Bike", "Helmet"], ["bike", "helmet", "lock"]]
90+
expected = ["bike", "helmet"]
91+
92+
[[asserts]]
93+
arguments = [["Rope", "Hook"], ["hook", "rope", "rope"]]
94+
expected = ["hook", "rope"]
95+
96+
[[asserts]]
97+
arguments = [["map", "MAP", "Map"], ["Map"]]
98+
expected = ["map"]
99+
100+
[[asserts]]
101+
arguments = [["Walkie", "walkie"], ["WALKIE", "chat"]]
102+
expected = ["walkie"]
103+
104+
[[asserts]]
105+
arguments = [["Tape", "tape", "tape"], ["tape", "case"]]
106+
expected = ["tape"]
107+
108+
[[asserts]]
109+
arguments = [["Arcade", "Token"], ["token", "score"]]
110+
expected = ["token"]
111+
112+
[[asserts]]
113+
arguments = [["Tree", "Vine"], ["vine", "TREE"]]
114+
expected = ["tree", "vine"]
115+
116+
[[asserts]]
117+
arguments = [["Glass", "Shard"], ["shard", "glass", "syringe"]]
118+
expected = ["glass", "shard"]
119+
120+
[[asserts]]
121+
arguments = [["Gate"], ["GATE", "gate"]]
122+
expected = ["gate"]
123+
124+
[[asserts]]
125+
arguments = [["Signature", "Key"], ["key", "print"]]
126+
expected = ["key"]
127+
128+
[[asserts]]
129+
arguments = [["Map", "Radio"], ["lab", "car"]]
130+
expected = []
131+
132+
[[asserts]]
133+
arguments = [["Alpha", "beta"], ["Gamma", "BETA"]]
134+
expected = ["beta"]
135+
136+
[[asserts]]
137+
arguments = [["north", "south"], ["South", "east", "west"]]
138+
expected = ["south"]
139+
140+
[[asserts]]
141+
arguments = [["One", "Two"], ["three", "four"]]
142+
expected = []
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
level = "easy"
2+
name = "squad_split"
3+
tags = ["collections"]
4+
time_to_solve_sec = 230
5+
6+
description_en = """
7+
The kids split into teams. Given a list of `names` and an index `k`, return two lists: the first `k` names and the rest. If `k` is negative, count from the end. Clamp `k` to the range from `0` to the list length.
8+
"""
9+
10+
description_ru = """
11+
Дети делятся на команды. Дан список `names` и индекс `k`, верните два списка: первые `k` имен и оставшиеся. Если `k` отрицателен, считайте от конца. Ограничьте `k` диапазоном от `0` до длины списка.
12+
"""
13+
14+
solution = """
15+
def solution(names: list[str], k: int) -> list[list[str]]:
16+
if k < 0:
17+
k = len(names) + k
18+
k = max(0, min(k, len(names)))
19+
return [names[:k], names[k:]]
20+
"""
21+
22+
examples = """
23+
solution([], 0) == [[], []]
24+
solution(["Mike"], -1) == [[], ["Mike"]]
25+
solution(["Mike", "Dustin"], 1) == [["Mike"], ["Dustin"]]
26+
"""
27+
28+
[[input_signature]]
29+
argument_name = "names"
30+
[input_signature.type]
31+
name = "array"
32+
[input_signature.type.nested]
33+
name = "string"
34+
35+
[[input_signature]]
36+
argument_name = "k"
37+
[input_signature.type]
38+
name = "integer"
39+
40+
[output_signature.type]
41+
name = "array"
42+
[output_signature.type.nested]
43+
name = "array"
44+
[output_signature.type.nested.nested]
45+
name = "string"
46+
47+
[[asserts]]
48+
arguments = [[], 0]
49+
expected = [[], []]
50+
51+
[[asserts]]
52+
arguments = [["Mike"], 0]
53+
expected = [[], ["Mike"]]
54+
55+
[[asserts]]
56+
arguments = [["Mike"], 1]
57+
expected = [["Mike"], []]
58+
59+
[[asserts]]
60+
arguments = [["Mike"], 2]
61+
expected = [["Mike"], []]
62+
63+
[[asserts]]
64+
arguments = [["Mike"], -1]
65+
expected = [[], ["Mike"]]
66+
67+
[[asserts]]
68+
arguments = [["Mike", "Dustin"], 1]
69+
expected = [["Mike"], ["Dustin"]]
70+
71+
[[asserts]]
72+
arguments = [["Mike", "Dustin"], 2]
73+
expected = [["Mike", "Dustin"], []]
74+
75+
[[asserts]]
76+
arguments = [["Mike", "Dustin"], 3]
77+
expected = [["Mike", "Dustin"], []]
78+
79+
[[asserts]]
80+
arguments = [["Mike", "Dustin"], -1]
81+
expected = [["Mike"], ["Dustin"]]
82+
83+
[[asserts]]
84+
arguments = [["Mike", "Dustin"], -2]
85+
expected = [[], ["Mike", "Dustin"]]
86+
87+
[[asserts]]
88+
arguments = [["Lucas", "Max", "Eleven"], 1]
89+
expected = [["Lucas"], ["Max", "Eleven"]]
90+
91+
[[asserts]]
92+
arguments = [["Lucas", "Max", "Eleven"], 2]
93+
expected = [["Lucas", "Max"], ["Eleven"]]
94+
95+
[[asserts]]
96+
arguments = [["Lucas", "Max", "Eleven"], 3]
97+
expected = [["Lucas", "Max", "Eleven"], []]
98+
99+
[[asserts]]
100+
arguments = [["Lucas", "Max", "Eleven"], -1]
101+
expected = [["Lucas", "Max"], ["Eleven"]]
102+
103+
[[asserts]]
104+
arguments = [["Will", "Joyce", "Hopper"], 0]
105+
expected = [[], ["Will", "Joyce", "Hopper"]]
106+
107+
[[asserts]]
108+
arguments = [["Will", "Joyce", "Hopper"], 2]
109+
expected = [["Will", "Joyce"], ["Hopper"]]
110+
111+
[[asserts]]
112+
arguments = [["Will", "Joyce", "Hopper"], -2]
113+
expected = [["Will"], ["Joyce", "Hopper"]]
114+
115+
[[asserts]]
116+
arguments = [["Steve", "Robin", "Nancy"], 2]
117+
expected = [["Steve", "Robin"], ["Nancy"]]
118+
119+
[[asserts]]
120+
arguments = [["Steve", "Robin", "Nancy"], 5]
121+
expected = [["Steve", "Robin", "Nancy"], []]
122+
123+
[[asserts]]
124+
arguments = [["Erica"], -2]
125+
expected = [[], ["Erica"]]
126+
127+
[[asserts]]
128+
arguments = [["Eddie", "Chrissy"], 0]
129+
expected = [[], ["Eddie", "Chrissy"]]
130+
131+
[[asserts]]
132+
arguments = [["Eddie", "Chrissy"], -1]
133+
expected = [["Eddie"], ["Chrissy"]]
134+
135+
[[asserts]]
136+
arguments = [["Murray", "Alexei", "Yuri"], -3]
137+
expected = [[], ["Murray", "Alexei", "Yuri"]]
138+
139+
[[asserts]]
140+
arguments = [["Bob", "Karen", "Ted", "Holly"], 2]
141+
expected = [["Bob", "Karen"], ["Ted", "Holly"]]
142+
143+
[[asserts]]
144+
arguments = [["Argyle", "Eden", "Jonathan"], -1]
145+
expected = [["Argyle", "Eden"], ["Jonathan"]]

0 commit comments

Comments
 (0)