Вчера было собеседование, задачка
моя реализация
const compare = (a, b) => {
if(+a === 0 || +b === 0) return null;
if(+a % 2 === 0 && +b % 2 === 0) return '*';
if(+a % 2 !== 0 && +b % 2 !== 0) return '-';
return null
}
const StringChallenge = (str) => {
str = str.toString()
const result = [str[0]]
for(let i = 1; i < str.length; i += 1) {
const char = compare(str[i - 1], str[i]);
if(char) result.push(char);
result.push(str[i])
}
return result.join('')
}
попросили переписать задачку без функции compare
я не смог
в итоге после собеседование сидел и думал как это можно сделать, придумал только такой вариант =>
const StringChallenge = (str) => {
str = str.toString()
const strArr = str.split('')
const result = strArr.reduce((p, c, i) => {
const lastEl = strArr[i - 1];
let d = ''
if ((+lastEl === 0 || +c === 0)) d = ''
else if ((+lastEl % 2 === 0 && +c % 2 === 0)) d = '*'
else if ((+lastEl % 2 !== 0 && +c % 2 !== 0)) d = '-'
else d = ''
return p + d + c
})
return result
}
ну все равно не очень
как переписать первый вариант задачи, без реализации сторонней функции, не теряя в читаемости особо
UPD крутые ребята снизу на регулярках решили задачу, ну хотелось бы увидеть реализацию без регулярок