unpack_string/hw02_unpack_string/README.md

42 lines
1.9 KiB
Markdown
Raw Normal View History

2023-10-30 15:21:12 +03:00
## Домашнее задание №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\\\5\` => \`qwe\\\\\\\\\\`
* \`qw\ne\` => "" (некорректная строка)
Как видно из примера, заэкранировать можно только цифру или слэш.
### Критерии оценки
- Пайплайн зелёный - 4 балла
- Добавлены новые юнит-тесты - до 4 баллов
- Понятность и чистота кода - до 2 баллов
- Дополнительное задание на баллы не влияет
#### Зачёт от 7 баллов
### Подсказки
- https://golang.org/ref/spec#String_literals
- `strings.Builder`
- `strings.Repeat`
- `strconv.Atoi`