@kirillleogky

Как решить задачу Alphabetical Addition?

Есть kata - https://www.codewars.com/kata/5d50e3914861a500121e...
Моё частичное решение:
function addLetters(...letters) {
  const difference = letters.reduce((prew, curr) => (prew + curr.charCodeAt()) - 96, 0);
  return String.fromCharCode(difference + 96);
}




Но далее идут ошибки:
5e2c47d265dc3863105129.png


Подскажите как правильно надо складывать эти значения?
Не пойму эту задачу..
  • Вопрос задан
  • 380 просмотров
Решения вопроса 2
john36allTa
@john36allTa
alien glow of a dirty mind
1. Начинать нужно с 25, чтобы в случае пустого массива входящих данных выдавало z
2. Проще взять остаток от деления на количество букв в алфавите, т.к. количество кругов знать ни к чему.
3. В результате прибавить 97, т.к. а это 97 по счету символ ascii
В итоге получаем такую конструкцию:
Начинаем с 25, получаем вход a,b, берём их порядковый номер в ascii и вычетаем 96 (получаем 1 и 2).
25+1+2 = 28
28 % 26 = 2
2 + 97 = 99
ascii[99]=c
Если до сих пор не понятно, то попробуйте таким же образом в голове прорешать большое количество букв на входе(чтоб пара кругов по алфавиту сделало)
const addLetters= (...letters) => String.fromCharCode(letters.reduce((sum,v)=>sum+v.charCodeAt()-96,25) % 26 + 97)
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
function addLetters(...letters) {
  if (letters.length == 0) {
    return 'z';
  }
  let sum = letters.reduce(
    (acc, val) => {
      let newAcc = acc + val.charCodeAt(0) - 96;
      return newAcc > 26 ? newAcc - 26 : newAcc;
    },
    0
  );
  return String.fromCharCode(sum + 96);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы