- Нельзя менять уже написанный код, тесты и другие файлы добавленные в проект
- Помимо стандартной библиотеки, вы можете использовать все что импортировано. Что не импортировано, то не используется.
- Выполняйте коммиты и пуши как можно чаще. Так вы будете видеть какие из тестов сработают, а какие нет.
- Во время работы не забывайте запускать саму утилиту и npm test
Ваша задача написать консольную утилиту, которая анализирует переданный файл с таблицами существ и их характеристиками и выводит на экран некоторую статистику по данным из файла. Файлы хранятся в директории fixtures в формате CSV. Они используются для тестов и понадобятся вам, для запуска и проверки утилиты в терминале. Вся информация уже прочитана и содержится в константе content. Вам остается только написать и экспортировать функцию в файле index.js, которая принимает данные в виде строки и работает с ними. Программа выводит строки в консоль, каждая строка является решением определенного шага. Таким образом 5 шагов предполагает 5 строк в консоли.
Пример запуска утилиты:
bin/heroes.js __fixtures__/heroes1.csv
Count: 10
Castles: Замок, Оплот
Largest hp: ангел
Average damage: кентавр: 2.5, копейщик: 2, лучник: 2.5, грифон: 4.5, рыцарь: 7.5, единорог: 20, дракон: 47.5, монах: 11, кавалерист: 20, ангел: 50
Strongest creature: ангел
Вывод содержит фиксированный набор строк (Count, Castles, ...), каждая из которых соответствует какой-то агрегированной информации по данным из файла. Например первая строка содержит количество записей в переданном файле. Значения в этих строках зависят от данных внутри переданного файла. В примере выше число 20, в вашем случае может быть другое, зависит от того, с каким файлом ведется работа.
Каждая строчка в выводе утилиты, представляет из себя небольшое отдельное вычислительное задание. Вам предстоит решать эти задачи по очереди. Ниже список этих заданий:
Посчитайте количество существ в таблице
bin/heroes.js __fixtures__/heroes1.csv
Count: 10
Выведите все виды замков существ через запятую. Сделайте так, чтобы имя каждого замка начиналось с большой буквы. Отсортируйте список перед выводом.
bin/heroes.js __fixtures__/heroes1.csv
Count: 10 # Не забывайте что предыдущее решение остается работать
Castles: Замок, Оплот
Выведите существо с самым большим здоровьем.
bin/heroes.js __fixtures__/heroes1.csv
Count: 10
Castles: Замок, Оплот
Largest hp: ангел
Выведите средний арифметический урон для каждого существа в таблице. Если цифры две, то их нужно сложить и разделить на 2. Если цифра одна - просто вернуть ее.
bin/heroes.js __fixtures__/heroes1.csv
Count: 10
Castles: Замок, Оплот
Largest hp: ангел
Average damage: кентавр: 2.5, копейщик: 2, лучник: 2.5, грифон: 4.5, рыцарь: 7.5, единорог: 20, дракон: 47.5, монах: 11, кавалерист: 20, ангел: 50
Найдите самое сильное существо. Вам следует найти всех существ 7 уровня и выяснить, кто из них быстрее исчерпает здоровье врага своими атаками. Атаку нужно посчитать как среднее значение между мнимальным и максимальным уроном. Важно(!) - таких существ всегда 2. C технической точки зрения вам нужно посчитать у кого из существ уйдет меньше атак для того, чтобы исчерпать здоровье врага.
bin/heroes.js __fixtures__/heroes1.csv
Count: 10
Castles: Замок, Оплот
Largest hp: ангел
Average damage: кентавр: 2.5, копейщик: 2, лучник: 2.5, грифон: 4.5, рыцарь: 7.5, единорог: 20, дракон: 47.5, монах: 11, кавалерист: 20, ангел: 50
Strongest creature: ангел
При возникновении проблем с линтером на определенной строке, вы можете отключить линтер для этой строки, написав выше:
// eslint-disable-next-line