Пользователь вводит с клавиатуры строку, состоящую из слов. Слово - это последовательность alphanumeric символов разделённых одним пробелом. Помимо слов в строке могут встречаться символы препинания: '.', ',', '!', '?'. Знак препинания не может встретиться в середине слова, только в конце и/или начале. Перед словом и\или после не может встретиться более одного знака препинания, однако между словами могут встречаться группы, состоящие только из знаков препинаний. Например:
"word ?!. anotherWord"
Ваша задача - отсортировать слова в строке по порядку увеличения суммы кодов ascii символов в них и вывести результирующую строку. Важное замечание: все знаки препинания должны остаться на своих местах (см. секцию с примерами).
Иллюстрация работы функции- компаратора на примере слов "dog" и "cat"
Сумма кодов символов в слове dog: 100 + 111 + 103 = 314
Сумма кодов символов в слове cat: 99 + 97 + 116 = 312
Таким образом, слово cat в результирующей строке будет идти перед словом dog, т.к. 312 < 314.
Примеры вводов-выводов для проверки:
Ввод: "Brown dog sits at the table"
Вывод: "at dog the sits Brown table"
——————
Ввод: "Wow, what a sentence!"
Вывод: "a, Wow what sentence!"
——————
Ввод: "Some ?! words !!! between ?,,,. punctuation ??? marks .?"
Вывод: "Some ?! marks !!! words ?,,,. between ??? punctuation .?"
Для облегчения работы предполагается, что язык ввода - латиница.