Алгоритм кодовых войн

Проблема

Моя подруга хочет новое название для своей группы.

친구가 새로운 밴드 이름을 원한다.

Ей нравятся группы, использующие формулу: «The» + существительное с заглавной буквы.

친구는 아래 공식을 사용한 밴드를 좋아한다.

«The» + 첫 글자가 대문자인 명사

Пример: Бэтмен -› Бэтмен

Однако, когда существительное НАЧИНАЕТСЯ и ЗАКАНЧИВАЕТСЯ одной и той же буквой, ей нравится повторять существительное дважды и соединять их вместе с первой и последней буквой, объединяя в одно слово.

하지만 명사가 같은 글자로 시작하고 끝난다면, 친구는 명사를 두 번 반복하고, 첫 번째와 마지막 글자를 연결해서 한 단어로 결합하고 싶어 한다.

예: тарт -› тарт

Завершите функцию, которая принимает существительное в виде строки и возвращает ее предпочтительное название группы, записанное в виде строки.

밴드 이름을 반환하는 함수를 작성해라.

Решение 01

function bandNameGenerator(str) {
  if (str[0] !== str[str.length - 1]) {
    return 'The ' + str[0].toUpperCase() + str.slice(1);
  } else {
    return str[0].toUpperCase() + str.slice(1) + str.slice(1);
  }
}
bandNameGenerator('batman');  // The Batman
bandNameGenerator('tart');    // Tartart
  • slice(): 문자열의 일부를 추출하고, 새 문자열로 반환한다.

Решение 02

function bandNameGenerator(str) {
  if (str[0] !== str.slice(-1)) {
    return 'The ' + str[0].toUpperCase() + str.slice(1);
  } else {
    return str[0].toUpperCase() + str.slice(1).repeat(2);
  }
}
bandNameGenerator('batman');  // The Batman
bandNameGenerator('tart');    // Tartart
  • repeat(): 지정된 수의 복사본을 가진 새 문자열을 반환한다.

Решение 03

function bandNameGenerator(str) {
  let compare = str[0] !== str.slice(-1);
  let theName = 'The ' + str[0].toUpperCase() + str.slice(1);
  let repeatName = str[0].toUpperCase() + str.slice(1).repeat(2);
  return compare ? theName : repeatName;
}
bandNameGenerator('batman');  // The Batman
bandNameGenerator('tart');    // Tartart

Решение 04

function bandNameGenerator(str) {
  return str[0] !== str.slice(-1) ? `The ${str[0].toUpperCase()}${str.slice(1)}` : `${str[0].toUpperCase()}${str.slice(1, -1)}${str}`;
}
bandNameGenerator('batman');  // The Batman
bandNameGenerator('tart');    // Tartart