Chaîne de somme suprême
Étant donné une chaîne d'entrée, renvoyez le mot avec la somme la plus élevée de chacun de ses caractères unicode.
Règles
- L'entrée doit être séparée par des espaces
- La valeur de chaque mot est basée sur la somme de chaque caractère du code UTF-16 du mot
- La sortie doit être le premier mot avec la valeur la plus élevée (en cas de doublons)
Exemples
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: "🕷️"
C'est le golf de code, donc la réponse la plus courte l'emporte! Bonne chance :)
code-golf
string
unicode
text-processing
GammaGames
la source
la source
Réponses:
Gelée , 7 octets
Essayez-le en ligne!
la source
O§MḢị
["abc", "def"]
. Mais à ce stade, il y a beaucoup de réponses, donc je ne recommande pas d'ajouter de nouvelles méthodes de saisiePerl 6 , 34 octets
Essayez-le en ligne!
la source
R ,
77 69 59 58 5644 44 octetsUn effort de groupe maintenant.
Essayez-le en ligne!
Convertir en points de code, additionner chaque mot, annuler, trier (de manière stable), retourner le premier élément.
Techniquement, la valeur de retour est un "vecteur nommé" dont la valeur est la somme et le nom est le mot gagnant, mais cela semble suivre les règles. Si vous souhaitez renvoyer le mot gagnant sous forme de chaîne, vous devrez dépenser 7 octets de plus et encapsuler ce qui précède
names()
.la source
"💀 👻 🤡 🦇 🕷️ 🍬 🎃"
il s'imprime" 🕷️ "
(avec un tas d'espaces devant lui)sort(-sapply(...))
est plus court de 3 octets.mapply
faitunlist
gratuitement.05AB1E , 8 octets
Essayez-le en ligne!
Explication
la source
R
inversement la liste est-elle triée?àà as a test
leàà
ettest
ont la même plus grande somme unicode. Donc, sans l'inversetest
serait sorti au lieu deàà
. Btw, Emigna, utilisez#
pour enregistrer un octet. ;) EDIT: Peu importe. Je vois que cela n'emballe pas l'entrée dans une liste pour les entrées d'un seul mot. C'est malheureux.JavaScript (ES6), 81 octets
Essayez-le en ligne!
la source
f("😂 龘龘龘龘龘")
"😂 龘龘龘龘龘"
?隣(\uf9f1)
était celui du bloc idéogramme de compatibilité CJK à la place lol. Je pensais que c'était隣(\u96a3)
le cas dans le bloc CJK Unified Ideograph.jq,
61435737 caractères(
57395333 caractères code + 4 caractères options de ligne de commande)Exemple d'exécution:
Essayez-le en ligne!
la source
Pyth, 8 octets
Suite de tests
Je sais qu'il y a déjà une réponse Pyth mais j'ai l'impression que cela utilise une approche assez différente
Explication:et aussi elle est plus courtela source
PowerShell ,
7452 octetsEssayez-le en ligne!
Merci à mazzy pour un énorme -22 octets.
-split
s l'entrée$args
sur les espaces blancs, les canalisationssort
avec un mécanisme de tri particulier{...}
et le-u
drapeau nique.Ici, nous prenons le mot actuel
$_
, le changeantt
oCharArray
, puis pour chaque lettre, nous l'ajoutons à notre$r
résultat. Cela transforme la chaîne en un nombre basé sur sa représentation UTF-16.Pour une fois, PowerShell ayant toutes les chaînes en UTF-16 en arrière-plan est une bouée de sauvetage!
Nous encapsulons ensuite ces résultats
(...)
pour les transformer en un tableau et prendre le dernier[-1]
, c'est-à-dire le résultat le plus grand qui est le plus proche du début de la phrase. Cela fonctionne à cause du-u
drapeau nique, c'est-à-dire que s'il y a un élément ultérieur qui a la même valeur, il est rejeté. Ce mot est laissé sur le pipeline et la sortie est implicite.la source
sort -u
plutôt un revers? peut être suffisant+
pour convertir le nombre?(-split$args|sort{($_|% t*y|%{+$_})-join"+"|iex} -u)[-1]
(-split$args|sort{$r=0;$_|% t*y|%{$r+=$_};$r}-u)[-1]
:)Python 3 ,
5552 octetsEssayez-le en ligne!
split
méthode.la source
split()
, car il se divise sur n'importe quel groupe d'espaces.MATLAB, 57 octets
Dans mon MATLAB R2016a, tous les tests sont réussis, sauf que les emojis ne sont pas rendus correctement. Mais les caractères sont retournés correctement
la source
Japt
-h
, 8 octetsApproche @Enigma
Essayez-le en ligne!
Une autre approche
Japt
-g
, 8 octetsEssayez-le en ligne!
la source
Java (JDK) ,
1179784 octets-13 octets merci @Nevay. Apparemment, je ne savais pas que je pouvais aussi l'utiliser
var
en Java.Essayez-le en ligne!
la source
s->{var b="";for(var a:s.split(" "))b=a.chars().sum()>b.chars().sum()?a:b;return b;}
Ruby, 45 caractères
Exemple d'exécution:
Essayez-le en ligne!
Ruby 2.4, 40 caractères
(Non testé.)
la source
Pyth , 33 octets
Essayez-le en ligne!
Il y a presque certainement une meilleure façon de le faire, mais j'y ai trop dépensé, donc cela fera l'affaire.
J'aurais passé une réduction dans une autre carte au lieu d'utiliser la boucle for, mais je n'ai pas pu faire fonctionner cela.
la source
Fusain , 20 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Fractionnez la chaîne d'entrée sur les espaces et affectez-la à
q
.Calculez la somme des ordinaux des caractères de chaque mot et attribuez-la à
h
.Trouvez l'index de la somme la plus élevée et imprimez le mot à cet index.
la source
Powershell, 66 octets
Simple. Voir la réponse d' AdmBorkBork pour trouver une utilisation intelligente de Powershell.
Remarque! Pour corriger le travail avec unicode, enregistrez votre fichier de script avec
UTF-16
ouUTF8 with BOM
encodage.Script de test:
Production:
la source