2020-06-02 19:25:13 +03:00

41 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Домашнее задание №2 «Распаковка строки»
Необходимо написать Go функцию, осуществляющую примитивную распаковку строки,
содержащую повторяющиеся символы/руны, например:
* "a4bc2d5e" => "aaaabccddddde"
* "abcd" => "abcd"
* "3abc" => "" (некорректная строка)
* "45" => "" (некорректная строка)
* "aaa10b" => "" (некорректная строка)
* "aaa0b" => "aab"
* "" => ""
* "d\n5abc" => "d\n\n\n\n\nabc"
Как видно из примеров, разрешено использование цифр, но не чисел.
В случае, если была передана некорректная строка, функция должна возвращать ошибку.
При необходимости можно выделять дополнительные функции / ошибки.
**(*) Дополнительное задание: поддержка экранирования через `\`:**
* "qwe\4\5" => "qwe45"
* "qwe\45" => "qwe44444"
* "qwe\\\5a" => "qwe\\\\\\\\\\a"
* "qw\\\ne" => "" (некорректная строка)
Как видно из примера, заэкранировать можно только цифру или слэш.
### Критерии оценки
- Пайплайн зелёный - 4 балла
- Добавлены новые юнит-тесты - до 4 баллов
- Понятность и чистота кода - до 2 баллов
- Дополнительное задание на баллы не влияет
#### Зачёт от 7 баллов
### Подсказки
- https://golang.org/ref/spec#String_literals
- `unicode.IsDigit`
- `strings.Builder`
- `strings.Repeat`
- `strconv.Atoi`