Golang_HomeWork/hw02_unpack_string/README.md

42 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## Домашнее задание №2 «Распаковка строки»
[![Build Status](https://travis-ci.com/tiburon-777/HW_OTUS.svg?branch=master)](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`