Высшая сумма Строка
Если задана входная строка, верните слово с наибольшей суммой каждого из символов Юникода.
правила
- Входные данные должны быть разделены пробелами
- Значение каждого слова основано на сумме каждого символа в коде слова UTF-16
- Вывод должен быть первым словом с наибольшим значением (в случае повторяющихся сумм)
Примеры
Input: "a b c d e"
Output: "e"
Input: "hello world"
Output: "world"
Input: "this is a test"
Output: "test"
Input: "àà as a test"
Output: "àà"
Input "α ää"
Output: "α"
Input: "🍬 隣隣隣"
Output: "隣隣隣"
Input: "💀 👻 🤡 🦇 🕷️ 🍬 🎃"
Output: "🕷️"
Это код гольф, поэтому самый короткий ответ выигрывает! Удачи :)
code-golf
string
unicode
text-processing
GammaGames
источник
источник
Ответы:
Желе , 7 байт
Попробуйте онлайн!
источник
O§MḢị
["abc", "def"]
. Но на данный момент есть много ответов, поэтому я не рекомендую добавлять новые методы вводаPerl 6 , 34 байта
Попробуйте онлайн!
источник
R ,
77 69 59 58 5644 байтаГрупповые усилия сейчас.
Попробуйте онлайн!
Преобразование в кодовые точки, суммирование каждого слова, отрицание, (стабильно) сортировка, возврат первого элемента.
Технически возвращаемое значение является «именованным вектором», значение которого является суммой, а имя - выигрышным словом, но, похоже, это соответствует правилам. Если вы хотите вернуть выигрышное слово в виде строки, вам придется потратить еще 7 байтов и обернуть вышеупомянутое
names()
.источник
"💀 👻 🤡 🦇 🕷️ 🍬 🎃"
он распечатывается" 🕷️ "
(с кучей пробелов перед ним)sort(-sapply(...))
короче на 3 байта.mapply
делает этоunlist
бесплатно.05AB1E , 8 байтов
Попробуйте онлайн!
объяснение
источник
R
действительно перевернуть список после его сортировки?àà as a test
àà
test
test
àà
#
JavaScript (ES6), 81 байт
Попробуйте онлайн!
источник
f("😂 龘龘龘龘龘")
"😂 龘龘龘龘龘"
?隣(\uf9f1)
был тем в блоке Идеографа Совместимости CJK вместо lol. Думал隣(\u96a3)
, что это один из блока CJK Unified Ideograph.JQ,
61435737 символов(
57395333 символов кода + 4 символа параметров командной строки)Образец прогона:
Попробуйте онлайн!
источник
Pyth, 8 байт
Тестирование
Я знаю, что уже есть ответ Pyth, но я чувствую, что это использует совсем другой подход
Объяснение:а также он корочеисточник
PowerShell ,
7452 байтаПопробуйте онлайн!
Спасибо Маззи за колоссальные -22 байта.
-split
s ввод данных$args
в пустое пространство, передает этоsort
с определенным механизмом сортировки{...}
и-u
флагом nique.Здесь мы берем текущее слово
$_
, меняя его наt
oCharArray
, затем для каждой буквы добавляем его в наш результат$r
. Это превращает строку в число на основе ее представления UTF-16.На этот раз PowerShell, в котором все строки будут UTF-16 на заднем плане, спасет жизнь!
Затем мы инкапсулируем эти результаты,
(...)
чтобы преобразовать их в массив и взять последний[-1]
, т. Е. Наибольший результат, ближайший к началу предложения. Это работает из-за-u
флага nique, то есть, если есть более поздний элемент с таким же значением, он отбрасывается. Это слово остается в конвейере и вывод неявный.источник
sort -u
наоборот? может быть достаточно+
конвертировать в число?(-split$args|sort{($_|% t*y|%{+$_})-join"+"|iex} -u)[-1]
(-split$args|sort{$r=0;$_|% t*y|%{$r+=$_};$r}-u)[-1]
:)Python 3 ,
5552 байтаПопробуйте онлайн!
split
методе не требуется никаких аргументов .источник
split()
, так как он разделяется на любую группу пробелов.MATLAB, 57 байт
В моем MATLAB R2016a все тесты пройдены, за исключением того, что смайлики не отображаются должным образом. Но символы возвращаются правильно
источник
Japt
-h
, 8 байт@Enigma подход
Попробуйте онлайн!
Другой подход
Japt
-g
, 8 байтПопробуйте онлайн!
источник
Java (JDK) ,
1179784 байта-13 байт спасибо @Nevay. Видимо, я не знал, что я также могу использовать
var
в Java.Попробуйте онлайн!
источник
s->{var b="";for(var a:s.split(" "))b=a.chars().sum()>b.chars().sum()?a:b;return b;}
Рубин, 45 знаков
Образец прогона:
Попробуйте онлайн!
Ruby 2.4, 40 символов
(Непроверенные).
источник
Pyth , 33 байта
Попробуйте онлайн!
Почти наверняка есть лучший способ сделать это, но я потратил слишком много на это, так что это подойдет.
Я бы передал уменьшение в другую карту вместо использования цикла for, но я не мог заставить это работать.
источник
Древесный уголь , 20 байтов
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Разбить входную строку на пробелы и присвоить
q
.Вычислите сумму порядковых чисел символов в каждом слове и присвойте
h
.Найдите индекс наибольшей суммы и напечатайте слово с этим индексом.
источник
Powershell, 66 байт
Непосредственная. Посмотрите ответ AdmBorkBork , чтобы найти умное использование Powershell.
Заметка! Чтобы исправить работу с юникодом, сохраните файл скрипта с помощью
UTF-16
илиUTF8 with BOM
кодировки.Тестовый скрипт:
Выход:
источник