From 716f316414a526b78a497a1837575088bbdd12a7 Mon Sep 17 00:00:00 2001 From: Vitaly Kozlov Date: Mon, 11 May 2026 08:38:21 +0300 Subject: [PATCH 1/6] Fix unescaped backslashes --- tasks/easy/arrays/matrix_sums_equality.toml | 10 +++++----- tasks/easy/greedy/maximum_cars_to_finish.toml | 6 +++--- tasks/easy/math/add_two_fractions.toml | 4 ++-- tasks/hard/bitmasks/min_team_combinations.toml | 6 +++--- tasks/hard/graphs/is_bipartite_graph.toml | 6 +++--- tasks/hard/graphs/minimum_tree_cover.toml | 6 +++--- tasks/medium/graphs/lowest_common_ancestor.toml | 8 ++++---- tasks/medium/math/minimal_time_partition.toml | 6 +++--- tasks/medium/math/prime_factorization.toml | 2 +- tasks/medium/regex/alien_signal_compression.toml | 8 ++++---- 10 files changed, 31 insertions(+), 31 deletions(-) diff --git a/tasks/easy/arrays/matrix_sums_equality.toml b/tasks/easy/arrays/matrix_sums_equality.toml index 4da5a76..84b9baf 100644 --- a/tasks/easy/arrays/matrix_sums_equality.toml +++ b/tasks/easy/arrays/matrix_sums_equality.toml @@ -4,17 +4,17 @@ tags = ["math", "arrays", "matrix"] time_to_solve_sec = 250 description_en = """ -Given a $3 \times 3$ matrix of integers, determine if the sum of elements in every row and every column is the same. Return `true` if all sums are equal, otherwise return `false`. +Given a $3 \\times 3$ matrix of integers, determine if the sum of elements in every row and every column is the same. Return `true` if all sums are equal, otherwise return `false`. """ description_ru = """ -Дана матрица $3 \times 3$, состоящая из целых чисел. Проверьте, равны ли суммы чисел во всех строках и всех столбцах. Верните `true`, если все суммы равны, иначе — `false`. +Дана матрица $3 \\times 3$, состоящая из целых чисел. Проверьте, равны ли суммы чисел во всех строках и всех столбцах. Верните `true`, если все суммы равны, иначе — `false`. """ limits = """ -- $\text{len}(m) = 3$ -- $\text{len}(m[i]) = 3$ -- $-10^6 \leq m_{i,j} \leq 10^6$ +- $\\text{len}(m) = 3$ +- $\\text{len}(m[i]) = 3$ +- $-10^6 \\leq m_{i,j} \\leq 10^6$ """ solution = """ diff --git a/tasks/easy/greedy/maximum_cars_to_finish.toml b/tasks/easy/greedy/maximum_cars_to_finish.toml index 2ad574f..b061bd1 100644 --- a/tasks/easy/greedy/maximum_cars_to_finish.toml +++ b/tasks/easy/greedy/maximum_cars_to_finish.toml @@ -20,9 +20,9 @@ description_ru = """ """ limits = """ -- $1 \leq x \leq 10^4$ -- $1 \leq \text{len}(a) \leq 10^5$ -- $0 \leq a_i \leq 10^4$ +- $1 \\leq x \\leq 10^4$ +- $1 \\leq \\text{len}(a) \\leq 10^5$ +- $0 \\leq a_i \\leq 10^4$ """ solution = """ diff --git a/tasks/easy/math/add_two_fractions.toml b/tasks/easy/math/add_two_fractions.toml index e7b55d4..14a4fa5 100644 --- a/tasks/easy/math/add_two_fractions.toml +++ b/tasks/easy/math/add_two_fractions.toml @@ -16,8 +16,8 @@ description_ru = """ """ limits = """ -- $-1000 \leq a, c \leq 1000$ -- $1 \leq b, d \leq 1000$ +- $-1000 \\leq a, c \\leq 1000$ +- $1 \\leq b, d \\leq 1000$ """ solution = """ diff --git a/tasks/hard/bitmasks/min_team_combinations.toml b/tasks/hard/bitmasks/min_team_combinations.toml index 54be526..e01ac29 100644 --- a/tasks/hard/bitmasks/min_team_combinations.toml +++ b/tasks/hard/bitmasks/min_team_combinations.toml @@ -20,9 +20,9 @@ description_ru = """ """ limits = """ -- $1 \leq \text{len}(\text{people}) \leq 15$ -- $0 \leq \text{people}[i] \leq 65535$ -- $1 \leq \text{target\_skills} \leq 65535$ +- $1 \\leq \\text{len}(\\text{people}) \\leq 15$ +- $0 \\leq \\text{people}[i] \\leq 65535$ +- $1 \\leq \\text{target\\_skills} \\leq 65535$ """ solution = """ diff --git a/tasks/hard/graphs/is_bipartite_graph.toml b/tasks/hard/graphs/is_bipartite_graph.toml index 6b4c118..997b20b 100644 --- a/tasks/hard/graphs/is_bipartite_graph.toml +++ b/tasks/hard/graphs/is_bipartite_graph.toml @@ -20,9 +20,9 @@ description_ru = """ """ limits = """ -- $1 \leq \text{len}(\text{graph}) \leq 100$ -- $0 \leq \text{graph}[i][j] < \text{len}(\text{graph})$ -- $i \neq \text{graph}[i][j]$ +- $1 \\leq \\text{len}(\\text{graph}) \\leq 100$ +- $0 \\leq \\text{graph}[i][j] < \\text{len}(\\text{graph})$ +- $i \\neq \\text{graph}[i][j]$ """ solution = """ diff --git a/tasks/hard/graphs/minimum_tree_cover.toml b/tasks/hard/graphs/minimum_tree_cover.toml index e7b7679..80a462c 100644 --- a/tasks/hard/graphs/minimum_tree_cover.toml +++ b/tasks/hard/graphs/minimum_tree_cover.toml @@ -16,9 +16,9 @@ description_ru = """ """ limits = """ -- $1 \leq n \leq 10^5$ -- $\text{len}(\text{edges}) = n - 1$ -- $0 \leq \text{edges}[i][0], \text{edges}[i][1] < n$ +- $1 \\leq n \\leq 10^5$ +- $\\text{len}(\\text{edges}) = n - 1$ +- $0 \\leq \\text{edges}[i][0], \\text{edges}[i][1] < n$ """ solution = """ diff --git a/tasks/medium/graphs/lowest_common_ancestor.toml b/tasks/medium/graphs/lowest_common_ancestor.toml index 2b700d5..757a684 100644 --- a/tasks/medium/graphs/lowest_common_ancestor.toml +++ b/tasks/medium/graphs/lowest_common_ancestor.toml @@ -16,10 +16,10 @@ description_ru = """ """ limits = """ -- $1 \leq \text{len}(\text{parent}) \leq 1000$ -- $-1 \leq \text{parent}[i] < \text{len}(\text{parent})$ -- $0 \leq u < \text{len}(\text{parent})$ -- $0 \leq v < \text{len}(\text{parent})$ +- $1 \\leq \\text{len}(\\text{parent}) \\leq 1000$ +- $-1 \\leq \\text{parent}[i] < \\text{len}(\\text{parent})$ +- $0 \\leq u < \\text{len}(\\text{parent})$ +- $0 \\leq v < \\text{len}(\\text{parent})$ """ solution = """ diff --git a/tasks/medium/math/minimal_time_partition.toml b/tasks/medium/math/minimal_time_partition.toml index 420f2e8..c6c0a07 100644 --- a/tasks/medium/math/minimal_time_partition.toml +++ b/tasks/medium/math/minimal_time_partition.toml @@ -6,7 +6,7 @@ time_to_solve_sec = 450 description_en = """ On a distant planet, a day lasts exactly $n$ seconds. -Represent the number $n$ as a product of three natural numbers $a, b, c$ ($a \cdot b \cdot c = n$) such that the difference between the maximum and minimum of these three numbers is **minimal**. +Represent the number $n$ as a product of three natural numbers $a, b, c$ ($a \\cdot b \\cdot c = n$) such that the difference between the maximum and minimum of these three numbers is **minimal**. Return the three numbers as a list sorted in ascending order. """ @@ -14,13 +14,13 @@ Return the three numbers as a list sorted in ascending order. description_ru = """ На некоторой планете сутки длятся ровно $n$ секунд. -Представьте число $n$ в виде произведения трёх натуральных чисел $a, b, c$ ($a \cdot b \cdot c = n$) так, чтобы разность между максимальным и минимальным из этих чисел была **минимальной**. +Представьте число $n$ в виде произведения трёх натуральных чисел $a, b, c$ ($a \\cdot b \\cdot c = n$) так, чтобы разность между максимальным и минимальным из этих чисел была **минимальной**. Верните эти три числа в виде списка, отсортированного по возрастанию. """ limits = """ -- $1 \leq n \leq 10^9$ +- $1 \\leq n \\leq 10^9$ """ solution = """ diff --git a/tasks/medium/math/prime_factorization.toml b/tasks/medium/math/prime_factorization.toml index 01e80c0..5423ffe 100644 --- a/tasks/medium/math/prime_factorization.toml +++ b/tasks/medium/math/prime_factorization.toml @@ -16,7 +16,7 @@ description_ru = """ """ limits = """ -- $2 \leq n \leq 10^9$ +- $2 \\leq n \\leq 10^9$ """ solution = """ diff --git a/tasks/medium/regex/alien_signal_compression.toml b/tasks/medium/regex/alien_signal_compression.toml index 3179423..8b3a93e 100644 --- a/tasks/medium/regex/alien_signal_compression.toml +++ b/tasks/medium/regex/alien_signal_compression.toml @@ -8,7 +8,7 @@ You intercept an alien transmission and need to compress it to save storage spac The transmission is a string containing words (only English letters), numbers (valid 32-bit integers without leading zeros), spaces, tabs, and newlines. Compress the message using the following three steps: -1. Replace all newlines (`\n`) with semicolons (`;`), then remove all spaces and tabs. +1. Replace all newlines (`\\n`) with semicolons (`;`), then remove all spaces and tabs. 2. Reduce every word (a contiguous sequence of letters) to just its first letter, preserving the original case. 3. Compress numbers ending in consecutive zeros using standard scientific notation (e.g., `1750000` becomes `175e4`). Only do this if the resulting string is **strictly shorter** than the original number. @@ -20,7 +20,7 @@ description_ru = """ Передача представляет собой строку, содержащую слова (только английские буквы), числа (корректные 32-битные целые числа без ведущих нулей), пробелы, табуляции и символы перевода строки. Сожмите сообщение, выполнив следующие три шага: -1. Замените все переводы строк (`\n`) на точки с запятой (`;`), затем удалите все пробелы и табуляции. +1. Замените все переводы строк (`\\n`) на точки с запятой (`;`), затем удалите все пробелы и табуляции. 2. Сократите каждое слово (непрерывную последовательность букв) до первой буквы, сохранив её регистр. 3. Сожмите числа, оканчивающиеся на идущие подряд нули, используя стандартную нотацию (например, `1750000` становится `175e4`). Делайте это **только если** полученная строка строго короче исходного числа. @@ -28,8 +28,8 @@ description_ru = """ """ limits = """ -- $1 \leq \text{len}(\text{text}) \leq 10^4$ -- $\text{text}$ contains only English letters, digits, spaces, tabs, and newline characters. +- $1 \\leq \\text{len}(\\text{text}) \\leq 10^4$ +- $\\text{text}$ contains only English letters, digits, spaces, tabs, and newline characters. - All numbers are valid 32-bit integers without leading zeros (except for $0$ itself). """ From 33b5a2f9aa03accfcfb74920e703f63efb2753bb Mon Sep 17 00:00:00 2001 From: Vitaly Kozlov Date: Mon, 11 May 2026 08:46:14 +0300 Subject: [PATCH 2/6] Fix incorrect task filename --- tasks/medium/math/{modulo_inverse.toml => modular_inverse.toml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tasks/medium/math/{modulo_inverse.toml => modular_inverse.toml} (100%) diff --git a/tasks/medium/math/modulo_inverse.toml b/tasks/medium/math/modular_inverse.toml similarity index 100% rename from tasks/medium/math/modulo_inverse.toml rename to tasks/medium/math/modular_inverse.toml From ea2bbe6d0302ac8cb7d739052910832e48caaf25 Mon Sep 17 00:00:00 2001 From: Vitaly Kozlov Date: Mon, 11 May 2026 08:54:47 +0300 Subject: [PATCH 3/6] Fix is_bipartite_graph tests --- tasks/hard/graphs/is_bipartite_graph.toml | 54 +++++++++++------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/tasks/hard/graphs/is_bipartite_graph.toml b/tasks/hard/graphs/is_bipartite_graph.toml index 997b20b..7592265 100644 --- a/tasks/hard/graphs/is_bipartite_graph.toml +++ b/tasks/hard/graphs/is_bipartite_graph.toml @@ -73,136 +73,136 @@ comment = "Two disconnected nodes" expected = true [[asserts]] -arguments = [[[[1], [0]]]] +arguments = [[[1], [0]]] comment = "Two connected nodes" expected = true [[asserts]] -arguments = [[[[1, 2], [0, 2], [0, 1]]]] +arguments = [[[1, 2], [0, 2], [0, 1]]] comment = "Triangle (Not bipartite)" expected = false [[asserts]] -arguments = [[[[1, 3], [0, 2], [1, 3], [0, 2]]]] +arguments = [[[1, 3], [0, 2], [1, 3], [0, 2]]] comment = "Cycle of 4" expected = true [[asserts]] -arguments = [[[[1, 2, 3], [0, 2], [0, 1, 3], [0, 2]]]] +arguments = [[[1, 2, 3], [0, 2], [0, 1, 3], [0, 2]]] comment = "Cycle of 4 with a chord (contains triangle)" expected = false [[asserts]] -arguments = [[[[1], [0, 2], [1]]]] +arguments = [[[1], [0, 2], [1]]] comment = "Path of 3" expected = true [[asserts]] -arguments = [[[[1], [0, 2], [1, 3], [2]]]] +arguments = [[[1], [0, 2], [1, 3], [2]]] comment = "Path of 4" expected = true [[asserts]] -arguments = [[[[1, 3], [0, 2], [1, 3], [0, 2], []]]] +arguments = [[[1, 3], [0, 2], [1, 3], [0, 2], []]] comment = "Cycle of 4 + isolated node" expected = true [[asserts]] -arguments = [[[[1, 4], [0, 2], [1, 3], [2, 4], [0, 3]]]] +arguments = [[[1, 4], [0, 2], [1, 3], [2, 4], [0, 3]]] comment = "Cycle of 5 (Not bipartite)" expected = false [[asserts]] -arguments = [[[[1, 5], [0, 2], [1, 3], [2, 4], [3, 5], [0, 4]]]] +arguments = [[[1, 5], [0, 2], [1, 3], [2, 4], [3, 5], [0, 4]]] comment = "Cycle of 6" expected = true [[asserts]] -arguments = [[[[1, 2, 3], [0], [0], [0]]]] +arguments = [[[1, 2, 3], [0], [0], [0]]] comment = "Star graph with 4 nodes" expected = true [[asserts]] -arguments = [[[[1, 2, 3, 4], [0], [0], [0], [0]]]] +arguments = [[[1, 2, 3, 4], [0], [0], [0], [0]]] comment = "Star graph with 5 nodes" expected = true [[asserts]] -arguments = [[[[1, 2], [0, 3], [0, 3], [1, 2]]]] +arguments = [[[1, 2], [0, 3], [0, 3], [1, 2]]] comment = "Bipartite graph with overlapping edges" expected = true [[asserts]] -arguments = [[[[3, 4, 5], [3, 4, 5], [3, 4, 5], [0, 1, 2], [0, 1, 2], [0, 1, 2]]]] +arguments = [[[3, 4, 5], [3, 4, 5], [3, 4, 5], [0, 1, 2], [0, 1, 2], [0, 1, 2]]] comment = "Complete bipartite graph K_3,3" expected = true [[asserts]] -arguments = [[[[1, 2, 3, 4], [0, 2, 3, 4], [0, 1, 3, 4], [0, 1, 2, 4], [0, 1, 2, 3]]]] +arguments = [[[1, 2, 3, 4], [0, 2, 3, 4], [0, 1, 3, 4], [0, 1, 2, 4], [0, 1, 2, 3]]] comment = "Complete graph K_5" expected = false [[asserts]] -arguments = [[[[1], [0, 2], [1, 3], [2, 4], [3, 5], [4, 6], [5, 7], [6]]]] +arguments = [[[1], [0, 2], [1, 3], [2, 4], [3, 5], [4, 6], [5, 7], [6]]] comment = "Path of 8" expected = true [[asserts]] -arguments = [[[[1], [0, 2], [1, 3], [2, 4], [3, 5], [4, 6], [5, 7], [6, 0]]]] +arguments = [[[1], [0, 2], [1, 3], [2, 4], [3, 5], [4, 6], [5, 7], [6, 0]]] comment = "Cycle of 8" expected = true [[asserts]] -arguments = [[[[1, 2], [0, 2], [0, 1, 3, 4], [2, 4], [2, 3]]]] +arguments = [[[1, 2], [0, 2], [0, 1, 3, 4], [2, 4], [2, 3]]] comment = "Two triangles joined at an edge" expected = false [[asserts]] -arguments = [[[[ ], [ ], [ ], [ ]]]] +arguments = [[[ ], [ ], [ ], [ ]]] comment = "Four isolated nodes" expected = true [[asserts]] -arguments = [[[[1], [0], [3], [2]]]] +arguments = [[[1], [0], [3], [2]]] comment = "Two disjoint edges" expected = true [[asserts]] -arguments = [[[[1], [0, 2], [1], [4, 5], [3, 5], [3, 4]]]] +arguments = [[[1], [0, 2], [1], [4, 5], [3, 5], [3, 4]]] comment = "Path of 3 + disconnected triangle" expected = false [[asserts]] -arguments = [[[[1, 2, 3], [0, 2], [0, 1], [0]]]] +arguments = [[[1, 2, 3], [0, 2], [0, 1], [0]]] comment = "Triangle with an attached node" expected = false [[asserts]] -arguments = [[[[3], [2], [1], [0]]]] +arguments = [[[3], [2], [1], [0]]] comment = "Two disjoint edges crossing over indices" expected = true [[asserts]] -arguments = [[[[1, 2], [0], [0]]]] +arguments = [[[1, 2], [0], [0]]] comment = "V shape" expected = true [[asserts]] -arguments = [[[[1], [0], [3], [2], [5], [4]]]] +arguments = [[[1], [0], [3], [2], [5], [4]]] comment = "Three disjoint edges" expected = true [[asserts]] -arguments = [[[[1], [0, 2], [1, 3], [2, 4], [3, 5], [4, 6], [5, 0]]]] +arguments = [[[1], [0, 2], [1, 3], [2, 4], [3, 5], [4, 6], [5, 0]]] comment = "Cycle of 7" expected = false [[asserts]] -arguments = [[[[2, 3], [3, 4], [0], [0, 1], [1]]]] +arguments = [[[2, 3], [3, 4], [0], [0, 1], [1]]] comment = "Path of length 5" expected = true [[asserts]] -arguments = [[[[1], [0], [3, 5], [2, 4], [3, 5], [2, 4]]]] +arguments = [[[1], [0], [3, 5], [2, 4], [3, 5], [2, 4]]] comment = "Two separate bipartite components" expected = true \ No newline at end of file From e967bbce9e369e0936209df8cb1119f1fee6344b Mon Sep 17 00:00:00 2001 From: Vitaly Kozlov Date: Mon, 11 May 2026 08:56:17 +0300 Subject: [PATCH 4/6] Fix maximize_product issue with long integers --- tasks/medium/greedy/maximize_product.toml | 100 ++++++++++++++-------- 1 file changed, 65 insertions(+), 35 deletions(-) diff --git a/tasks/medium/greedy/maximize_product.toml b/tasks/medium/greedy/maximize_product.toml index 1618234..16a82c8 100644 --- a/tasks/medium/greedy/maximize_product.toml +++ b/tasks/medium/greedy/maximize_product.toml @@ -8,7 +8,7 @@ You are given two strings `x` and `y` of the same length, consisting of digits f You can perform the following operation any number of times: swap the $i$-th digit of `x` with the $i$-th digit of `y`. -Return the maximum possible product of the integers represented by `x` and `y` after performing any number of swaps. +Return the maximum possible product of the integers represented by `x` and `y` after performing any number of swaps as a string. """ description_ru = """ @@ -16,7 +16,7 @@ description_ru = """ Вы можете выполнять следующую операцию любое количество раз: менять местами $i$-ю цифру в `x` и $i$-ю цифру в `y`. -Верните максимально возможное произведение чисел `x` и `y`, которого можно достичь с помощью этих операций. +Верните максимально возможное произведение чисел `x` и `y`, которого можно достичь с помощью этих операций, в виде строки. """ limits = """ @@ -25,7 +25,7 @@ limits = """ """ solution = """ -def solution(x: str, y: str) -> int: +def solution(x: str, y: str) -> str: rx, ry, diff = "", "", False for a, b in zip(x, y): if a == b: @@ -34,13 +34,13 @@ def solution(x: str, y: str) -> int: rx += max(a, b); ry += min(a, b); diff = True else: rx += min(a, b); ry += max(a, b) - return int(rx) * int(ry) + return str(int(rx) * int(ry)) """ examples = """ -solution("1", "9") == 9 -solution("73", "31") == 2343 -solution("123", "321") == 39483 +solution("1", "9") == "9" +solution("73", "31") == "2343" +solution("123", "321") == "39483" """ [[input_signature]] @@ -54,139 +54,169 @@ argument_name = "y" name = "string" [output_signature.type] -name = "integer" +name = "string" [[asserts]] arguments = ["1", "2"] comment = "Single digit" -expected = 2 +expected = "2" [[asserts]] arguments = ["9", "9"] comment = "Single identical digits" -expected = 81 +expected = "81" [[asserts]] arguments = ["73", "31"] comment = "Two digits with swap" -expected = 2343 +expected = "2343" [[asserts]] arguments = ["12", "21"] comment = "Simple palindrome pair" -expected = 252 +expected = "252" [[asserts]] arguments = ["11", "99"] comment = "Max and min combinations" -expected = 1729 +expected = "1729" [[asserts]] arguments = ["99", "11"] comment = "Reversed max and min" -expected = 1729 +expected = "1729" [[asserts]] arguments = ["123", "123"] comment = "Identical three digits" -expected = 15129 +expected = "15129" [[asserts]] arguments = ["321", "123"] comment = "Three digits swap logic" -expected = 39483 +expected = "39483" [[asserts]] arguments = ["456", "654"] comment = "Consecutive numbers" -expected = 298224 +expected = "298224" [[asserts]] arguments = ["111", "999"] comment = "Ones and Nines" -expected = 181289 +expected = "181289" [[asserts]] arguments = ["1234", "4321"] comment = "Four digits progression" -expected = 5630814 +expected = "5630814" [[asserts]] arguments = ["9876", "6789"] comment = "Four digits large progression" -expected = 67346864 +expected = "67346864" [[asserts]] arguments = ["1111", "2222"] comment = "Repeated digits four" -expected = 2579642 +expected = "2579642" [[asserts]] arguments = ["5555", "5555"] comment = "Identical repetitive sequence" -expected = 30858025 +expected = "30858025" [[asserts]] arguments = ["1919", "9191"] comment = "Alternating digits" -expected = 18212889 +expected = "18212889" [[asserts]] arguments = ["2468", "8642"] comment = "Even digits progression" -expected = 22523256 +expected = "22523256" [[asserts]] arguments = ["1357", "7531"] comment = "Odd digits progression" -expected = 11414367 +expected = "11414367" [[asserts]] arguments = ["2323", "3232"] comment = "Alternating small digits" -expected = 7516926 +expected = "7516926" [[asserts]] arguments = ["1212", "2121"] comment = "Alternating 1 and 2" -expected = 2579642 +expected = "2579642" [[asserts]] arguments = ["9999", "1111"] comment = "Four nines and ones" -expected = 18212889 +expected = "18212889" [[asserts]] arguments = ["11111", "99999"] comment = "Five digits extremes" -expected = 1822128889 +expected = "1822128889" [[asserts]] arguments = ["54321", "12345"] comment = "Five digits countdown vs countup" -expected = 750544745 +expected = "750544745" [[asserts]] arguments = ["13579", "97531"] comment = "Five odd digits" -expected = 1644181449 +expected = "1644181449" [[asserts]] arguments = ["24681", "18642"] comment = "Mixed digits length 5" -expected = 460343162 +expected = "460343162" [[asserts]] arguments = ["98765", "56789"] comment = "Large overlapping strings" -expected = 5688717585 +expected = "5688717585" [[asserts]] arguments = ["111111", "222222"] comment = "Six digits repetitions" -expected = 25802406442 +expected = "25802406442" [[asserts]] arguments = ["999999", "111111"] comment = "Six digits nines and ones" -expected = 182221288889 \ No newline at end of file +expected = "182221288889" + +[[asserts]] +arguments = ["1234567", "7654321"] +comment = "Seven digits symmetric" +expected = "11969569608207" + +[[asserts]] +arguments = ["91919191", "19191919"] +comment = "Eight digits alternating extremes" +expected = "1822222128888889" + +[[asserts]] +arguments = ["84729153", "39561827"] +comment = "Eight digits random" +expected = "3361392652758411" + +[[asserts]] +arguments = ["999999999", "111111111"] +comment = "Nine digits all nines and ones" +expected = "182222221288888889" + +[[asserts]] +arguments = ["123456789", "987654321"] +comment = "Nine digits progression" +expected = "173292437813296269" + +[[asserts]] +arguments = ["582914736", "279386154"] +comment = "Nine digits random" +expected = "165963499427040704" \ No newline at end of file From 6801b1172770fedcdae432d25cbbb4481b02a5bc Mon Sep 17 00:00:00 2001 From: Vitaly Kozlov Date: Mon, 11 May 2026 10:27:21 +0300 Subject: [PATCH 5/6] Fix incorrect tests in new tasks --- tasks/easy/arrays/matrix_sums_equality.toml | 13 ++--- .../arrays/palindrome_by_removing_one.toml | 2 +- tasks/easy/greedy/autobattler_squad.toml | 14 +++--- .../easy/strings/five_letter_palindromes.toml | 4 +- tasks/hard/algo/knight_phone_dialer.toml | 4 +- tasks/medium/greedy/maximize_product.toml | 10 ++-- tasks/medium/math/lucky_base.toml | 10 ++-- .../regex/alien_signal_compression.toml | 47 ++++++++++--------- 8 files changed, 50 insertions(+), 54 deletions(-) diff --git a/tasks/easy/arrays/matrix_sums_equality.toml b/tasks/easy/arrays/matrix_sums_equality.toml index 84b9baf..ccc8aa9 100644 --- a/tasks/easy/arrays/matrix_sums_equality.toml +++ b/tasks/easy/arrays/matrix_sums_equality.toml @@ -96,11 +96,6 @@ arguments = [[[4, 9, 2], [3, 5, 7], [8, 1, 6]]] comment = "Reflected magic square" expected = true -[[asserts]] -arguments = [[[100, 0, 0], [0, 100, 0], [0, 0, 100]]] -comment = "Identity-like matrix (sums differ)" -expected = false - [[asserts]] arguments = [[[5, 5, 5], [5, 5, 5], [5, 5, 4]]] comment = "One element difference" @@ -109,7 +104,7 @@ expected = false [[asserts]] arguments = [[[7, 0, 0], [0, 7, 0], [0, 0, 7]]] comment = "Diagonal matrix with same values" -expected = false +expected = true [[asserts]] arguments = [[[1, 1, 4], [4, 1, 1], [1, 4, 1]]] @@ -133,8 +128,8 @@ expected = true [[asserts]] arguments = [[[1000000, 0, 0], [0, 1000000, 0], [0, 0, 1000000]]] -comment = "Large values, unequal sums" -expected = false +comment = "Large values, equal sums" +expected = true [[asserts]] arguments = [[[50, 50, 50], [50, 50, 50], [50, 50, 50]]] @@ -144,7 +139,7 @@ expected = true [[asserts]] arguments = [[[1, 0, 0], [0, 1, 0], [0, 0, 1]]] comment = "Standard identity matrix" -expected = false +expected = true [[asserts]] arguments = [[[2, 2, 2], [2, 2, 2], [2, 2, 2]]] diff --git a/tasks/easy/arrays/palindrome_by_removing_one.toml b/tasks/easy/arrays/palindrome_by_removing_one.toml index 812c461..ebf2dc9 100644 --- a/tasks/easy/arrays/palindrome_by_removing_one.toml +++ b/tasks/easy/arrays/palindrome_by_removing_one.toml @@ -171,7 +171,7 @@ expected = true [[asserts]] arguments = [[1, 2, 1, 2, 1, 2]] comment = "Alternating" -expected = false +expected = true [[asserts]] arguments = [[4, 3, 2, 1, 2, 3, 4]] diff --git a/tasks/easy/greedy/autobattler_squad.toml b/tasks/easy/greedy/autobattler_squad.toml index 27e2823..3002975 100644 --- a/tasks/easy/greedy/autobattler_squad.toml +++ b/tasks/easy/greedy/autobattler_squad.toml @@ -162,13 +162,13 @@ expected = 16 [[asserts]] arguments = [30, 2] -comment = "One best and one upgraded" -expected = 20 +comment = "3 best and 1 upgraded available, squad limit two, take 2 best" +expected = 32 [[asserts]] arguments = [50, 5] -comment = "Mix of tiers: 1 best, 5 upgraded, 2 normal" -expected = 32 +comment = "Mix of tiers: 5 best, 1 upgraded, 2 normal. Take 5 best" +expected = 80 [[asserts]] arguments = [80, 2] @@ -193,7 +193,7 @@ expected = 160 [[asserts]] arguments = [123, 456] comment = "k is larger than total units available" -expected = 83 +expected = 216 [[asserts]] arguments = [1000000, 100] @@ -222,5 +222,5 @@ expected = 20 [[asserts]] arguments = [40, 40] -comment = "Take all: 1 best, 4 upgraded, 1 normal" -expected = 33 \ No newline at end of file +comment = "Take all: 4 best, 1 upgraded, 1 normal" +expected = 69 \ No newline at end of file diff --git a/tasks/easy/strings/five_letter_palindromes.toml b/tasks/easy/strings/five_letter_palindromes.toml index 3036f4b..cd82cde 100644 --- a/tasks/easy/strings/five_letter_palindromes.toml +++ b/tasks/easy/strings/five_letter_palindromes.toml @@ -115,9 +115,9 @@ comment = "Numbers should be ignored" expected = [] [[asserts]] -arguments = ["abcde1edcba"] +arguments = ["radar1civic"] comment = "Numbers acting as word separators" -expected = ["abcde", "edcba"] +expected = ["civic", "radar"] [[asserts]] arguments = ["-radar- *civic* 'kayak'"] diff --git a/tasks/hard/algo/knight_phone_dialer.toml b/tasks/hard/algo/knight_phone_dialer.toml index e00e3d6..7b8fbda 100644 --- a/tasks/hard/algo/knight_phone_dialer.toml +++ b/tasks/hard/algo/knight_phone_dialer.toml @@ -181,7 +181,7 @@ expected = 4 [[asserts]] arguments = ["0618349270"] comment = "Circular path around the keypad" -expected = 9 +expected = 10 [[asserts]] arguments = ["55555"] @@ -226,7 +226,7 @@ expected = 2 [[asserts]] arguments = ["004466"] comment = "Moves mixed with repeats" -expected = 2 +expected = 3 [[asserts]] arguments = ["73"] diff --git a/tasks/medium/greedy/maximize_product.toml b/tasks/medium/greedy/maximize_product.toml index 16a82c8..fb756f7 100644 --- a/tasks/medium/greedy/maximize_product.toml +++ b/tasks/medium/greedy/maximize_product.toml @@ -184,7 +184,7 @@ expected = "5688717585" [[asserts]] arguments = ["111111", "222222"] comment = "Six digits repetitions" -expected = "25802406442" +expected = "25802408642" [[asserts]] arguments = ["999999", "111111"] @@ -194,7 +194,7 @@ expected = "182221288889" [[asserts]] arguments = ["1234567", "7654321"] comment = "Seven digits symmetric" -expected = "11969569608207" +expected = "11969668794007" [[asserts]] arguments = ["91919191", "19191919"] @@ -204,7 +204,7 @@ expected = "1822222128888889" [[asserts]] arguments = ["84729153", "39561827"] comment = "Eight digits random" -expected = "3361392652758411" +expected = "3361392975189411" [[asserts]] arguments = ["999999999", "111111111"] @@ -214,9 +214,9 @@ expected = "182222221288888889" [[asserts]] arguments = ["123456789", "987654321"] comment = "Nine digits progression" -expected = "173292437813296269" +expected = "173292472667035269" [[asserts]] arguments = ["582914736", "279386154"] comment = "Nine digits random" -expected = "165963499427040704" \ No newline at end of file +expected = "165963519131609304" \ No newline at end of file diff --git a/tasks/medium/math/lucky_base.toml b/tasks/medium/math/lucky_base.toml index 7aceeda..96062c0 100644 --- a/tasks/medium/math/lucky_base.toml +++ b/tasks/medium/math/lucky_base.toml @@ -86,7 +86,7 @@ expected = 6 [[asserts]] arguments = [1000, 5] -comment = "Large base for one 5" +comment = "Large base for two 5s" expected = 199 [[asserts]] @@ -196,8 +196,8 @@ expected = 4 [[asserts]] arguments = [15, 1] -comment = "One 1 in base 7" -expected = 7 +comment = "Two 1s in base 14" +expected = 14 [[asserts]] arguments = [3, 2] @@ -216,5 +216,5 @@ expected = 9 [[asserts]] arguments = [1000, 1] -comment = "One 1 in base 3" -expected = 3 \ No newline at end of file +comment = "Big base" +expected = 999 \ No newline at end of file diff --git a/tasks/medium/regex/alien_signal_compression.toml b/tasks/medium/regex/alien_signal_compression.toml index 8b3a93e..00ad652 100644 --- a/tasks/medium/regex/alien_signal_compression.toml +++ b/tasks/medium/regex/alien_signal_compression.toml @@ -6,10 +6,10 @@ time_to_solve_sec = 400 description_en = """ You intercept an alien transmission and need to compress it to save storage space. -The transmission is a string containing words (only English letters), numbers (valid 32-bit integers without leading zeros), spaces, tabs, and newlines. Compress the message using the following three steps: +The transmission is a string containing words (only English letters), numbers (valid 32-bit integers without leading zeros), spaces, tabs, and newlines. Two numbers cannot be separated only by whitespace. Compress the message using the following three steps: -1. Replace all newlines (`\\n`) with semicolons (`;`), then remove all spaces and tabs. -2. Reduce every word (a contiguous sequence of letters) to just its first letter, preserving the original case. +1. Reduce every word (a contiguous sequence of letters) to just its first letter, preserving the original case. +2. Replace all newlines (`\\n`) with semicolons (`;`), then remove all spaces and tabs. 3. Compress numbers ending in consecutive zeros using standard scientific notation (e.g., `1750000` becomes `175e4`). Only do this if the resulting string is **strictly shorter** than the original number. Return the fully compressed transmission. @@ -18,10 +18,10 @@ Return the fully compressed transmission. description_ru = """ Вы перехватили инопланетную передачу, и ее необходимо сжать для экономии места. -Передача представляет собой строку, содержащую слова (только английские буквы), числа (корректные 32-битные целые числа без ведущих нулей), пробелы, табуляции и символы перевода строки. Сожмите сообщение, выполнив следующие три шага: +Передача представляет собой строку, содержащую слова (только английские буквы), числа (корректные 32-битные целые числа без ведущих нулей), пробелы, табуляции и символы перевода строки. Два числа не могут быть разделены только пробельными символами. Сожмите сообщение, выполнив следующие три шага: -1. Замените все переводы строк (`\\n`) на точки с запятой (`;`), затем удалите все пробелы и табуляции. -2. Сократите каждое слово (непрерывную последовательность букв) до первой буквы, сохранив её регистр. +1. Сократите каждое слово (непрерывную последовательность букв) до первой буквы, сохранив её регистр. +2. Замените все переводы строк (`\\n`) на точки с запятой (`;`), затем удалите все пробелы и табуляции. 3. Сожмите числа, оканчивающиеся на идущие подряд нули, используя стандартную нотацию (например, `1750000` становится `175e4`). Делайте это **только если** полученная строка строго короче исходного числа. Верните полностью сжатую передачу. @@ -31,6 +31,7 @@ limits = """ - $1 \\leq \\text{len}(\\text{text}) \\leq 10^4$ - $\\text{text}$ contains only English letters, digits, spaces, tabs, and newline characters. - All numbers are valid 32-bit integers without leading zeros (except for $0$ itself). +- Two numbers cannot be separated only by whitespace. """ solution = """ @@ -51,7 +52,7 @@ def solution(text: str) -> str: examples = """ solution("Alpha 1000") == "A1e3" solution("Hello\\nWorld") == "H;W" -solution("100 1000") == "1001e3" +solution("100 A 1000") == "100A1e3" solution("A 0 B 0") == "A0B0" """ @@ -74,9 +75,9 @@ comment = "Newline to semicolon" expected = "H;W" [[asserts]] -arguments = ["100 1000"] +arguments = ["100 A 1000"] comment = "Strictly shorter requirement for numbers" -expected = "1001e3" +expected = "100A1e3" [[asserts]] arguments = ["A 0 B 0"] @@ -84,7 +85,7 @@ comment = "Zero handling" expected = "A0B0" [[asserts]] -arguments = ["Space Tabs\t\t\tHere"] +arguments = ["Space Tabs\t\t\tHere"] comment = "Multiple whitespace removal" expected = "STH" @@ -100,13 +101,13 @@ expected = "V;L;T;1e9" [[asserts]] arguments = ["NoZerosHere 12345"] -comment = "Number without zeros" -expected = "NH12345" +comment = "Word correctly processed as a single continuous sequence" +expected = "N12345" [[asserts]] arguments = ["ZerosAtStart 1002000"] comment = "Zeros inside and at end" -expected = "ZAS1002e3" +expected = "Z1002e3" [[asserts]] arguments = ["Mix 100 and 1000"] @@ -129,9 +130,9 @@ comment = "Alternating words and numbers without spaces" expected = "a1b2c3d4" [[asserts]] -arguments = ["1200 34000 560000"] -comment = "Multiple compressible and uncompressible numbers" -expected = "120034e356e4" +arguments = ["1200a34000b560000"] +comment = "Multiple compressible and uncompressible numbers separated by words" +expected = "1200a34e3b56e4" [[asserts]] arguments = ["End of transmission 0"] @@ -139,9 +140,9 @@ comment = "Words with zero" expected = "Eot0" [[asserts]] -arguments = ["A B C\n1 2 3\nD E F\n4000 50000"] +arguments = ["A B C\n1 X 2 Y 3\nD E F\n4000 Z 50000"] comment = "Complex mixed string" -expected = "ABC;123;DEF;4e35e4" +expected = "ABC;1X2Y3;DEF;4e3Z5e4" [[asserts]] arguments = ["Trailing zeros in word 1000"] @@ -154,9 +155,9 @@ comment = "Scaling zeros" expected = "O1T20T300F4e3" [[asserts]] -arguments = ["X Y Z 1000000000 2000000000"] +arguments = ["X 1000000000 Y 2000000000 Z"] comment = "Maximum 32-bit limits" -expected = "XYZ1e92e9" +expected = "X1e9Y2e9Z" [[asserts]] arguments = ["lower CASE upper CASE"] @@ -189,9 +190,9 @@ comment = "Two hundred is not strictly shorter as 2e2" expected = "200" [[asserts]] -arguments = ["50000000 000"] -comment = "Space separated zeros" -expected = "5e7000" +arguments = ["A 50000000 B 0 C"] +comment = "Word separated zeros" +expected = "A5e7B0C" [[asserts]] arguments = ["a\n\n\nb\t\t\tc 10000"] From 824422571967784c7e209fb55e5a2b329710da45 Mon Sep 17 00:00:00 2001 From: Vitaly Kozlov Date: Mon, 11 May 2026 10:29:25 +0300 Subject: [PATCH 6/6] Fix utobattler_square task --- tasks/easy/greedy/autobattler_squad.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/easy/greedy/autobattler_squad.toml b/tasks/easy/greedy/autobattler_squad.toml index 3002975..a652dab 100644 --- a/tasks/easy/greedy/autobattler_squad.toml +++ b/tasks/easy/greedy/autobattler_squad.toml @@ -157,8 +157,8 @@ expected = 16 [[asserts]] arguments = [27, 3] -comment = "Still only one best warrior available" -expected = 16 +comment = "Exactly enough for 3 best warriors" +expected = 48 [[asserts]] arguments = [30, 2]