Код Middle CI и параллельный запуск обновлено

Развернуть матрицу джоб

Условие

Упрощённая матрица CI. Напишите expandMatrix(matrix): ключи с массивами значений дают декартово произведение (первый ключ меняется медленнее всех, порядок ключей как в объекте), ключ exclude содержит массив частичных комбинаций: комбинация удаляется, если совпадает по всем ключам хотя бы одного элемента exclude. Ключ include содержит массив комбинаций, которые добавляются в конец как есть. Вернуть массив объектов-комбинаций.

Примеры

expandMatrix({"os":["linux","win"],"browser":["chromium","firefox"]}) // [{"os":"linux","browser":"chromium"}, {"os":"linux","browser":"firefox"}, {"os":"win","browser":"chromium"}, {"os":"win","browser":"firefox"}]
expandMatrix({"os":["linux","win"],"browser":["chromium","firefox"],"exclude":[{"os":"win","browser":"firefox"}]}) // [{"os":"linux","browser":"chromium"}, {"os":"linux","browser":"firefox"}, {"os":"win","browser":"chromium"}]
expandMatrix({"shard":[1,2,3]}) // [{"shard":1}, {"shard":2}, {"shard":3}]

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.