Najwyższy ciąg sumy
Podany ciąg wejściowy zwraca słowo z najwyższą sumą każdego ze znaków Unicode.
Zasady
- Dane wejściowe powinny być oddzielone spacjami
- Wartość każdego słowa opiera się na sumie każdego znaku w kodzie UTF-16 słowa
- Wynik powinien być pierwszym słowem o najwyższej wartości (w przypadku zduplikowanych sum)
Przykłady
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: "🕷️"
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź! Powodzenia :)
code-golf
string
unicode
text-processing
GammaGames
źródło
źródło
Odpowiedzi:
Galaretka , 7 bajtów
Wypróbuj online!
źródło
O§MḢị
["abc", "def"]
. Ale w tym momencie jest wiele odpowiedzi, więc nie polecam dodawania nowych metod wprowadzania danychPerl 6 , 34 bajtów
Wypróbuj online!
źródło
R ,
77 69 59 58 5644 bajtówTeraz wysiłek grupy.
Wypróbuj online!
Konwertuj na punkty kodowe, sumuj każde słowo, neguj, (stabilnie) sortuj, zwracaj pierwszy element.
Technicznie wartość zwracana to „nazwany wektor”, którego wartością jest suma, a nazwa jest zwycięskim słowem, ale wydaje się, że jest to zgodne z regułami. Jeśli chcesz zwrócić zwycięskie słowo jako ciąg, musisz wydać 7 dodatkowych bajtów i owinąć powyższe
names()
.źródło
"💀 👻 🤡 🦇 🕷️ 🍬 🎃"
drukuje się" 🕷️ "
(z kilkoma spacjami przed nim)sort(-sapply(...))
jest krótszy o 3 bajty.mapply
robiunlist
za darmo.05AB1E , 8 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
R
faktycznie odwraca listę po posortowaniu?àà as a test
àà
test
test
àà
#
JavaScript (ES6), 81 bajtów
Wypróbuj online!
źródło
f("😂 龘龘龘龘龘")
"😂 龘龘龘龘龘"
?隣(\uf9f1)
był tym w bloku CJK Compatibility Ideograph zamiast lol. Myślałem, że tak隣(\u96a3)
, ten w bloku CJK Unified Ideograph.jq,
61435737 znaków(
57395333 znaki kod + 4 znaki opcje wiersza poleceń)Przykładowy przebieg:
Wypróbuj online!
źródło
Pyth, 8 bajtów
Zestaw testowy
Wiem, że jest już odpowiedź na Pyth, ale wydaje mi się, że to podejście jest zupełnie inne,
Wyjaśnienie:a ponadto jest o wiele krótszeźródło
PowerShell ,
7452 bajtyWypróbuj online!
Dzięki mazzy za aż -22 bajty.
-split
s dane wejściowe$args
na białych znakach, potoki, któresort
mają określony mechanizm sortowania{...}
i-u
flagę nique.Tutaj bierzemy bieżące słowo
$_
, zmieniając jet
oCharArray
, a następnie do każdej litery dodajemy je do naszego$r
esult. To zamienia ciąg w liczbę na podstawie jego reprezentacji UTF-16.Po raz pierwszy program PowerShell mający wszystkie ciągi znaków w tle UTF-16 jest ratunkiem dla życia!
Następnie enkapsulujemy te wyniki w
(...)
celu przekształcenia ich w tablicę i bierzemy ostatni[-1]
, tj. Największy wynik, który jest najbliższy początku zdania. Działa to ze względu na-u
flagę nique, tzn. Jeśli późniejszy element ma tę samą wartość, jest odrzucany. To słowo pozostawia się w potoku, a dane wyjściowe są niejawne.źródło
sort -u
odwrócić? może wystarczyć+
do przeliczenia liczby?(-split$args|sort{($_|% t*y|%{+$_})-join"+"|iex} -u)[-1]
(-split$args|sort{$r=0;$_|% t*y|%{$r+=$_};$r}-u)[-1]
:)Python 3 ,
5552 bajtówWypróbuj online!
split
metodzie nie jest potrzebny żaden argument .źródło
split()
, ponieważ dzieli się na dowolną grupę białych znaków.MATLAB, 57 bajtów
W moim MATLAB R2016a wszystkie testy są zaliczone, z wyjątkiem tego, że emoji nie są poprawnie renderowane. Ale znaki są zwracane poprawnie
źródło
Japt
-h
, 8 bajtówPodejście @Enigma
Wypróbuj online!
Inne podejście
Japt
-g
, 8 bajtówWypróbuj online!
źródło
Java (JDK) ,
1179784 bajtów-13 bajtów dzięki @Nevay. Najwyraźniej nie wiedziałem, że mogę także używać
var
w Javie.Wypróbuj online!
źródło
s->{var b="";for(var a:s.split(" "))b=a.chars().sum()>b.chars().sum()?a:b;return b;}
Ruby, 45 znaków
Przykładowy przebieg:
Wypróbuj online!
Ruby 2.4, 40 znaków
(Niesprawdzone)
źródło
Pyth , 33 bajty
Wypróbuj online!
Jest prawie na pewno lepszy sposób, aby to zrobić, ale wydałem na to zbyt wiele, więc to wystarczy.
Przepuściłbym redukcję na inną mapę zamiast korzystać z pętli for, ale nie mogłem tego uruchomić.
źródło
Węgiel drzewny , 20 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Podziel ciąg wejściowy na spacje i przypisz do
q
.Obliczyć sumę rzędnych znaków w każdym słowie i przypisać do
h
.Znajdź indeks najwyższej sumy i wydrukuj słowo pod tym indeksem.
źródło
PowerShell, 66 bajtów
Bezpośredni. Zobacz odpowiedź AdmBorkBork , aby znaleźć sprytne użycie PowerShell.
Uwaga! Aby poprawić pracę z Unicode, zapisz plik skryptu za pomocą
UTF-16
lubUTF8 with BOM
kodowania.Skrypt testowy:
Wynik:
źródło