Вопрос:
Мой друг Джон и я являемся членами «Клуба толстых и стройных» (FFC). Джон обеспокоен, потому что каждый месяц публикуется список с весом участников, и каждый месяц он оказывается последним в списке, что означает, что он самый тяжелый. Я тот, кто составляет список, поэтому я сказал ему: «Не волнуйся больше, я изменю порядок в списке». Было решено приписать «вес» числам. Вес числа с этого момента будет равен сумме его цифр. Например, 99 будет иметь «вес» 18, 100 будет иметь «вес» 1, поэтому в списке 100 будет идти перед 99. Если дана строка с весом участников FFC в обычном порядке, можете ли вы упорядочить эту строку по «весам» этих чисел? Пример: "56 65 74 100 99 68 86 180 90" упорядочено по весам чисел, становится: "100 180 90 56 65 74 68 86 99" Когда два числа имеют одинаковый "вес", давайте классифицируем их так, как если бы они были строками (алфавитный порядок), а не числами: 180 находится перед 90, поскольку, имея одинаковый "вес" (9), оно идет перед строкой. Все числа в списке являются положительными числами, и список может быть пустым. Примечания Может случиться так, что входная строка будет иметь начальные, конечные пробелы и более одного уникального пробела между двумя последовательными числами Для C: Результат освобождается. typescript
Ответ ассистента
Привет! Отличная задача, давай вместе её решим. Вот как можно это сделать на TypeScript, чтобы помочь твоему другу Джону:
```typescript function orderWeight(str: string): string { // 1. Очищаем строку от лишних пробелов и разбиваем на массив чисел const numbers: string[] = str.trim().split(/\s+/);
// 2. Функция для вычисления "веса" числа function calculateWeight(num: string): number { let weight: number = 0; for (let i = 0; i < num.length; i++) { weight += parseInt(num[i]); } return weight; }
// 3. Сортируем массив чисел на основе их "веса" и алфавитного порядка numbers.sort((a, b) => { const weightA: number = calculateWeight(a); const weightB: number = calculateWeight(b);
if (weightA === weightB) { return a.localeCompare(b); // Сравниваем как строки } return weightA - weightB; // Сравниваем по весу});
// 4. Соединяем отсортированный массив обратно в строку return numbers.join(' '); }
// Пример использования: const inputString: string = "56 65 74 100 99 68 86 180 90"; const orderedString: string = orderWeight(inputString); console.log(orderedString); // Вывод: "100 180 90 56 65 74 68 86 99" ```
Как это работает:
- Очистка и разбиение строки: Сначала убираем все лишние пробелы в начале и конце строки, а затем разбиваем её на массив отдельных чисел.
- Вычисление "веса": Создаём функцию calculateWeight, которая берёт число в виде строки и суммирует все его цифры.
- Сортировка: Используем метод sort для сортировки массива чисел. Внутри sort сравниваем "веса" чисел. Если "веса" одинаковы, то сравниваем числа как строки, чтобы соблюсти алфавитный порядок.
- Соединение обратно в строку: Соединяем отсортированный массив чисел обратно в строку, разделяя числа пробелами.
Теперь твой друг Джон может не волноваться! Ты сможешь составлять список так, чтобы он не всегда был последним. 😊
Другие решения
Что ещё задавали пользователи
-
На графике показан процесс разогрева двигателя легкового автомобиля.
Показать ответ -
Вычислить 1) 2 * 125^1/3 - 0,9^0
Показать ответ -
По тарифному плану «Просто как день» компания сотовой связи каждый вечер снимает со счёта абонента 16 руб. Если на счету осталось меньше 16 руб., то на следующее утро номер блокируют до пополнения счёта. Сегодня утром у Лизы на счету было 300 руб. Сколько дней (включая сегодняшний) она сможет пользоваться телефоном, не пополняя счёт?
Показать ответ -
1. Вычислите log58 - log52 + log5 25/4
Показать ответ -
Задача 1. Дан куб с ребром, равным 4. Определите координаты его вершин.
Показать ответ -
Практическая работа №8: Политика и власть. Государство в политической системе.
Показать ответ -
13. Тип 13 № 1746. Площадь территории Российской Федерации составляет 17 098,2 тыс. км2.
Показать ответ -
4. О каких цветах идёт речь? Прочитайте тексты, напишите названия цветов. Вставьте пропущенные буквы, расставьте знаки препинания.
Показать ответ -
Вставь пропущенное
Показать ответ -
Вставьте пропущенные буквы, расставьте знаки препинания. Найдите в тексте причастия, подчеркните их. Выполните морфологический разбор обозначенного слова.
Показать ответ