Алгоритм кодовых войн
Проблема
Моя подруга хочет новое название для своей группы.
친구가 새로운 밴드 이름을 원한다.
Ей нравятся группы, использующие формулу: «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