Supreme Sum String
Geben Sie bei einer gegebenen Eingabezeichenfolge das Wort mit der höchsten Summe der einzelnen Unicode-Zeichen zurück.
Regeln
- Die Eingabe sollte durch Leerzeichen getrennt werden
- Der Wert jedes Wortes basiert auf der Summe jedes Zeichens im UTF-16-Code des Wortes
- Die Ausgabe sollte das erste Wort mit dem höchsten Wert sein (bei doppelten Summen)
Beispiele
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: "🕷️"
Das ist Codegolf, also gewinnt die kürzeste Antwort! Viel Glück :)
code-golf
string
unicode
text-processing
GammaGames
quelle
quelle
Antworten:
Gelee , 7 Bytes
Probieren Sie es online!
quelle
O§MḢị
["abc", "def"]
. Aber an dieser Stelle gibt es viele Antworten, so dass ich nicht empfehle, neue EingabemethodenPerl 6 , 34 Bytes
Probieren Sie es online!
quelle
R ,
77 69 59 58 5644 BytesEine Gruppenanstrengung jetzt.
Probieren Sie es online!
In Codepunkte konvertieren, jedes Wort aufsummieren, negieren, (stabil) sortieren, erstes Element zurückgeben.
Technisch gesehen ist der Rückgabewert ein "benannter Vektor", dessen Wert die Summe und der Name das Gewinnerwort ist, aber dies scheint den Regeln zu folgen. Wenn Sie das gewinnende Wort als Zeichenfolge zurückgeben möchten, müssen Sie 7 weitere Bytes ausgeben und die obigen Zeilen einschließen
names()
.quelle
"💀 👻 🤡 🦇 🕷️ 🍬 🎃"
" 🕷️ "
sort(-sapply(...))
ist um 3 Bytes kürzer.mapply
macht dasunlist
kostenlos.05AB1E , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
R
Liste tatsächlich um, nachdem sie sortiert wurde?àà as a test
desàà
undtest
hat die gleiche größte Unicode - Summe. Also ohne die Umkehrungtest
würde statt ausgegebenàà
. Übrigens, Emigna,#
zum Speichern eines Bytes. ;) EDIT: Egal. Ich sehe, dass die Eingabe nicht in eine Liste für Einzelworteingaben eingeschlossen wird. Das ist bedauerlich.JavaScript (ES6), 81 Byte
Probieren Sie es online!
quelle
f("😂 龘龘龘龘龘")
"😂 龘龘龘龘龘"
?隣(\uf9f1)
war der im CJK-Kompatibilitäts-Ideogrammblock, lol. Dachte schon隣(\u96a3)
, der im CJK Unified Ideograph-Block.jq,
61435737 Zeichen(
57395333 Zeichen Code + 4 Zeichen Befehlszeilenoptionen)Probelauf:
Probieren Sie es online!
quelle
Pyth, 8 Bytes
Testsuite
Ich weiß, dass es bereits eine Pyth-Antwort gibt, aber ich habe das Gefühl, dass dies eine ganz andere Herangehensweise verwendet
Erläuterung:und dass es auch kürzer istquelle
PowerShell ,
7452 ByteProbieren Sie es online!
Danke an mazzy für die satten -22 Bytes.
-split
s die Eingabe$args
auf Whitespace, leitet dassort
mit einem bestimmten Sortiermechanismus{...}
und der-u
Nique-Flagge.Hier nehmen wir das aktuelle Wort
$_
, ändern est
oCharArray
und fügen es dann für jeden Buchstaben in unser$r
Ergebnis ein. Dadurch wird die Zeichenfolge basierend auf der UTF-16-Darstellung in eine Zahl umgewandelt.PowerShell mit UTF-16-Zeichenfolgen im Hintergrund ist ausnahmsweise ein Lebensretter!
Wir kapseln diese Ergebnisse dann ein,
(...)
um sie in ein Array umzuwandeln, und nehmen das letzte[-1]
, dh das größte Ergebnis, das dem Satzanfang am nächsten liegt. Dies funktioniert aufgrund des-u
Nique-Flags, dh wenn es ein späteres Element gibt, das denselben Wert hat, wird es verworfen. Dieses Wort bleibt in der Pipeline und die Ausgabe ist implizit.quelle
sort -u
stattdessen eine Umkehrung? kann das ausreichen+
um die nummer umzurechnen?(-split$args|sort{($_|% t*y|%{+$_})-join"+"|iex} -u)[-1]
(-split$args|sort{$r=0;$_|% t*y|%{$r+=$_};$r}-u)[-1]
:)Python 3 ,
5552 BytesProbieren Sie es online!
split
Methode kein Argument benötigt wird.quelle
split()
, da diese auf eine beliebige Gruppe von Leerzeichen aufgeteilt werden.MATLAB, 57 Bytes
In meinem MATLAB R2016a sind alle Tests bestanden, außer dass Emojis nicht richtig gerendert werden. Zeichen werden jedoch korrekt zurückgegeben
quelle
Japt
-h
, 8 Bytes@ Enigma Ansatz
Probieren Sie es online!
Ein anderer Ansatz
Japt
-g
, 8 BytesProbieren Sie es online!
quelle
Java (JDK) ,
1179784 Byte-13 Bytes danke @Nevay. Anscheinend wusste ich nicht, dass ich es auch
var
in Java verwenden kann.Probieren Sie es online!
quelle
s->{var b="";for(var a:s.split(" "))b=a.chars().sum()>b.chars().sum()?a:b;return b;}
Ruby, 45 Zeichen
Probelauf:
Probieren Sie es online!
Ruby 2.4, 40 Zeichen
(Ungetestet.)
quelle
Pyth , 33 Bytes
Probieren Sie es online!
Es gibt mit ziemlicher Sicherheit einen besseren Weg, aber ich habe zu viel dafür ausgegeben, damit dies gelingt.
Ich hätte ein Reduce in eine andere Map eingefügt, anstatt die for-Schleife zu verwenden, aber ich konnte das nicht zum Laufen bringen.
quelle
Holzkohle , 20 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Teilen Sie die Eingabezeichenfolge auf Leerzeichen und weisen Sie zu
q
.Berechnen Sie die Summe der Ordnungszahlen der Zeichen in jedem Wort und weisen Sie zu
h
.Suchen Sie den Index der höchsten Summe und drucken Sie das Wort an diesem Index.
quelle
Powershell, 66 Bytes
Einfach. Siehe AdmBorkBork ‚s Antwort eine intelligente Verwendung von Powershell zu gründen.
Hinweis! Speichern Sie Ihre Skriptdatei mit
UTF-16
oder , um die Arbeit mit Unicode zu korrigierenUTF8 with BOM
Kodierung.Testskript:
Ausgabe:
quelle