простите, но задача простая же. О каких решениях речь?
Что тут можно сделать по другому?
Почему сложность - средняя?
Это задача из каких то тупых учебников что ли?
const arr = `102.4px 32px 49.8px 30px 48px 116px 24px`.split(' ').map(it => Math.round(parseFloat(it)))
function createRow(arr) {
let sum = 0
let oldSum = 0
return arr.map((value, i, arr) => {
if (i === 0) {
sum += value
return `
tomato 1px, tomato ${value}px,
`
} else if (i < arr.length) {
oldSum = sum + i
sum += value
return `
black ${oldSum - 1}px, black ${oldSum}px,
tomato ${oldSum}px, tomato ${sum + i}px,
${i === arr.length - 1 ? `black ${sum + i}px, black ${sum + i + 1}px` : ``}
`
}
}).join(`\n`)
}
const linearGradient = `linear-gradient(to bottom, black 0px, black 1px, ${createRow(arr)})`
console.log(linearGradient)
тут так не принято
по крайней мере попытайтесь
Разве?
document.addEventListener(`click`, listener)
то что в обоих Ваших примерах - это процедурный стиль. От того что Вы завернули код в класс - он не становится ООП, как и то что написали набор функции - не ФП.