42 lines
1.9 KiB
Markdown
42 lines
1.9 KiB
Markdown
## Домашнее задание №2 «Распаковка строки»
|
||
[](https://travis-ci.com/tiburon-777/HW_OTUS)
|
||
|
||
Необходимо написать 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`
|