सुप्रीम सम स्ट्रिंग


15

सुप्रीम सम स्ट्रिंग

एक इनपुट स्ट्रिंग को देखते हुए, अपने प्रत्येक यूनिकोड वर्णों के उच्चतम योग के साथ शब्द वापस करें।

नियम

  • इनपुट को व्हॉट्सएप द्वारा अलग किया जाना चाहिए
  • प्रत्येक शब्द का मूल्य शब्द के 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: "🕷️"

यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर जीतता है! सौभाग्य :)


क्या हमेशा कम से कम एक स्थान (कम से कम 2 शब्द) होगा?
एमिग्ना

2
यह यूनिकोड के बजाय ASCII के साथ अधिक दिलचस्प होता, क्योंकि अधिक भाषाओं में भाग लिया जा सकता था। यूनिकोड समर्थन की आवश्यकता को चुनौती के लिए कुछ भी जोड़ने के लिए प्रतीत नहीं होता है
लुइस मेंडो

1
मैंने ज्यादातर यूनिकोड का इस्तेमाल किया क्योंकि इसमें
एमोजिस लोल है

2
चूंकि वर्तमान में से कई उत्तर UTF-8 या UTF-32 कोड इकाइयों के योग का उपयोग करते हैं, इसलिए आपको कुछ अतिरिक्त परीक्षण मामलों को जोड़ना चाहिए। उदाहरण के लिए "α ää" UTF-8 (383 <718) और UTF-16 (945> 456) के साथ अलग-अलग परिणाम देता है।
nwellnhof

1
हाँ, newlines क्षेत्र की अनुमति है। टैब भी!
गामागेम

जवाबों:


3

जेली , 7 बाइट्स

ḲOS$ÐṀḢ

इसे ऑनलाइन आज़माएं!

ḲOS$ÐṀḢ
Ḳ        Split input on spaces
    ÐṀ   Give words that have maximum of:
   $       Monad:
 O           ord(each character)
  S          sum
      Ḣ  First word that gives the max ord-sum.

यदि कल्पना को शब्दों की सूची के रूप में इनपुट करने की छूट दी गई है, तोO§MḢị
जोनाथन एलन

@JonathanAllan ओपी ने कहां कहा कि अनुमति दी गई थी?
डायलन

सिर्फ अगर नहीं ...
जोनाथन एलन

@ जोनाथनअल्लन आह, गच्चा।
डायलन

1
@GammaGames अगर मैं तार की सूची ले सकता हूँ तो यह मदद करेगा, उदा ["abc", "def"]। लेकिन इस बिंदु पर बहुत सारे उत्तर हैं इसलिए मैं इनपुट के नए तरीकों को जोड़ने की सलाह नहीं देता
dylnan


6

आर , 77 69 59 58 56 44 बाइट्स

एक समूह प्रयास अब।

'^'=mapply
sort(-sum^utf8ToInt^scan(,""))[1]

इसे ऑनलाइन आज़माएं!

कोड बिंदुओं में परिवर्तित करें, प्रत्येक शब्द को योग करें, निगेट करें, (स्थिर रूप से), पहले तत्व को वापस लौटाएं।

तकनीकी रूप से रिटर्न वैल्यू एक "नामित वेक्टर" है जिसका मूल्य योग और नाम विजेता शब्द है, लेकिन यह नियमों का पालन करता है। यदि आप जीतने वाले शब्द को एक स्ट्रिंग के रूप में वापस करना चाहते हैं, तो आपको 7 और बाइट्स खर्च करने होंगे और उपरोक्त को लपेटना होगा names()


क्या कोई कारण है कि शब्द के सामने रिक्त स्थान है? जब मैं इसे चलाता हूं तो "💀 👻 🤡 🦇 🕷️ 🍬 🎃"यह प्रिंट करता है " 🕷️ "(इसके सामने रिक्त स्थान का एक गुच्छा के साथ)
गामागेम

2
@GammaGames आउटपुट वह है जिसे R में "नामित वेक्टर" कहा जाता है। इस मामले में मान जीतने वाले शब्द के कोड बिंदुओं का योग है, और नाम इसके साथ मुद्रित होता है, जो इस मामले में जीतने वाला शब्द है अपने आप। नाम इसके ठीक नीचे की संख्‍या में सम्‍मिलित है।
एनजीएम

ओह, साफ! ऐसा लगता है कि यह नियमों का पालन करता है, इसलिए मैं इसकी अनुमति दूंगा। शांत प्रवेश!
गामागेम

sort(-sapply(...))3 बाइट्स से छोटा है।
Giuseppe

3
@JayCe मुफ्त में mapplyकरता है unlist
एनजीएम

5

05AB1E , 8 बाइट्स

ð¡RΣÇO}θ

इसे ऑनलाइन आज़माएं!

व्याख्या

ð¡          # split input on spaces
  R         # reverse the resulting list
   Σ  }     # sort by
    ÇO      # sum of character codes
       θ    # take the last

वाह, मैं हमेशा समर्पित गोल्फिंग भाषाओं में किए गए उत्तरों से चकित हूँ!
गामागेम

आपको परिणामी सूची को उलटने की आवश्यकता क्यों है? यह वैसे भी ठीक हो रहा है? या Rवास्तव में यह क्रमबद्ध होने के बाद सूची को उलट देता है?
फायरक्यूबेज़

@FireCubez परीक्षण के मामले के àà as a testलिए ààऔर testएक ही सबसे बड़ी यूनिकोड राशि है। तो इसके बिना testबदले उत्पादन होगा àà। Btw, Emigna, #एक बाइट को बचाने के लिए उपयोग करें। ;) संपादित करें: कोई बात नहीं। मुझे लगता है कि यह एकल शब्द इनपुट के लिए एक सूची में इनपुट को लपेटता नहीं है .. यह दुर्भाग्यपूर्ण है।
केविन क्रूज़सेन

4

जावास्क्रिप्ट (ईएस 6), 81 बाइट्स

s=>s.split` `.map(m=s=>m=[...s].map(c=>t+=c.charCodeAt(),t=0)&&t<=m?m:(r=s,t))&&r

इसे ऑनलाइन आज़माएं!


यह उस तरह से बेहतर है जिस कोड के साथ मैं आया था जब मैं चुनौती लिख रहा था, मेरा ~ 200 वर्ण लंबा था!
गामागेम


@ Guest271314 दूसरे आखिरी टेस्ट केस और कुछ चरम मामलों के लिए काम नहीं करता है, जैसेf("😂 龘龘龘龘龘")
शायरु असाकोतो

@ShieruAsakoto यहाँ सही परिणाम देने की अपील करता है tio.run/##00SSxxsosKNHNy09J/ ... ? इसके लिए अपेक्षित परिणाम क्या है "😂 龘龘龘龘龘"?
1:27 पर अतिथि271314

ओह एनवीएम, लोजिक के 隣(\uf9f1)बजाय सीजेके कम्पेटिबिलिटी आईडियोग्राफ ब्लॉक में एक था। यह सोचा था 隣(\u96a3), CJK एकीकृत Ideograph ब्लॉक में एक।
शायरु असकोटो

4

jq, ६१ ४३ ५q ३ characters ३ 57 अक्षर

( 57 39 53 33 वर्ण कोड + 4 वर्ण कमांड लाइन विकल्प)

./" "|reverse|max_by(explode|add)

नमूना रन:

bash-4.4$ jq -Rr './" "|reverse|max_by(explode|add)' <<< 'àà as a test'
àà

इसे ऑनलाइन आज़माएं!


वास्तव में। उस मामले को याद किया। N धन्यवाद, @nimi
17

4

पायथ, 8 बाइट्स

h.MsCMZc

परीक्षण सूट

मुझे पता है कि पहले से ही एक पाइथ उत्तर है लेकिन मुझे ऐसा लगता है कि यह एक बहुत अलग दृष्टिकोण का उपयोग करता है और यह भी है कि यह बहुत छोटा है

स्पष्टीकरण:
h.MsCMZc  | Full code
h.MsCMZcQ | with implicit variables added
----------+------------------------------------
h         | The first element of
       cQ | the input chopped at whitespace
 .M       | with the maximal value for
   s      | the sum of
    CMZ   | the Unicode value of each character

वाह, यह वास्तव में सटीक है! स्पष्टीकरण के लिए धन्यवाद!
गामागेम

4

पॉवरशेल , 74 52 बाइट्स

(-split$args|sort{$r=0;$_|% t*y|%{$r+=$_};$r}-u)[-1]

इसे ऑनलाइन आज़माएं!

धन्यवाद एक -22 बाइट्स के लिए mazzy के लिए।

-split$argsव्हॉट्सएप पर इनपुट , पाइप जो sortएक विशेष छँटाई तंत्र {...}और -uनिक फ्लैग के साथ है।

यहां हम वर्तमान शब्द ले रहे हैं $_, इसे बदलकर toCharArra y, फिर प्रत्येक अक्षर के लिए हम इसे अपने $rएस्कल में जोड़ रहे हैं । यह स्ट्रिंग को उसके UTF-16 प्रतिनिधित्व के आधार पर एक संख्या में बदल देता है।

एक बार के लिए, PowerShell पृष्ठभूमि में UTF-16 के सभी तार होने के कारण एक जीवन रक्षक है!

फिर हम उन परिणामों (...)को एक सरणी में बदलने के लिए इनकैप्सुलेट करते हैं और अंतिम [-1]एक को लेते हैं , यानी सबसे बड़ा परिणाम जो वाक्य की शुरुआत के सबसे करीब है। यह -uनीच ध्वज के कारण काम करता है , अर्थात, यदि बाद का तत्व है जिसका समान मूल्य है, तो इसे छोड़ दिया गया है। यह शब्द पाइपलाइन पर छोड़ दिया गया है और आउटपुट निहित है।


यह स्मार्ट है। धन्यवाद। 2 क्षण: sort -uबदले में उल्टा क्यों नहीं ? +संख्या में बदलने के लिए पर्याप्त हो सकता है ? (-split$args|sort{($_|% t*y|%{+$_})-join"+"|iex} -u)[-1]
mazzy

अधिक गोल्फ: (-split$args|sort{$r=0;$_|% t*y|%{$r+=$_};$r}-u)[-1]:)
mazzy

@mazzy हां, धन्यवाद!
AdmBorkBork

3

पायथन 3 , 55 52 बाइट्स

lambda s:max(s.split(),key=lambda w:sum(map(ord,w)))

इसे ऑनलाइन आज़माएं!

  • -3 बाइट्स गिगाफ्लॉप के लिए धन्यवाद इंगित करने के लिए कि splitविधि में कोई तर्क की आवश्यकता नहीं है ।

आप 3 बाइट्स को बिना किसी आर्गन के पास करके बचा सकते हैं split(), क्योंकि यह व्हाट्सएप के किसी भी समूह पर विभाजित होता है।
गीगाफ्लॉप

2

MATLAB, 57 बाइट्स

s=strsplit(input('','s'));[Y I]=max(cellfun(@sum,s));s(I)

मेरे MATLAB R2016a में सभी परीक्षणों को छोड़ दिया गया है, सिवाय इसके कि इमोजीज़ को ठीक से प्रस्तुत नहीं किया गया है। लेकिन पात्रों को सही ढंग से लौटाया जाता है


2

जाप -h , 8 बाइट्स

@ ईनिग्मा दृष्टिकोण

¸w ñ_¬xc

इसे ऑनलाइन आज़माएं!


एक और दृष्टिकोण

जाप -g , 8 बाइट्स

¸ñ@-X¬xc

इसे ऑनलाइन आज़माएं!


जो मैं पोस्ट करने वाला था, उसकी पहचान करना। उलट-पलट की जरूरत मुझे परेशान करती है; अगर हम टाई के मामले में किसी भी शब्द का उत्पादन कर सकते हैं, तो इसे प्राथमिकता दी जाएगी।
झबरा

@ शागिर्द अगर ऐसा संभव था, तो मेरे पास इसके लिए 6 बाइट्स का जवाब है
लुइस फेलिप डी जीसस मुनोज

उसी 6-बटर को मैंने उस आवश्यकता को ऐन मौके पर रखने से पहले शुरू किया था।
झबरा

मुझे माफ कर दो! मूलतः जब मैंने चुनौती को सैंडबॉक्स किया तो मुझे लगा कि यह किसी भी उत्तर का उत्पादन कर सकता है, लेकिन मैंने इसे थोड़ी प्रतिक्रिया के बाद बदल दिया, इसलिए यह अधिक सुसंगत था
GammaGames

2

जावा (JDK) , 117 97 84 बाइट्स

-13 बाइट्स धन्यवाद @ नवीन जाहिर है मुझे नहीं पता था कि मैं varजावा में भी उपयोग कर सकता हूं ।

s->{var b="";for(var a:s.split(" "))b=a.chars().sum()>b.chars().sum()?a:b;return b;}

इसे ऑनलाइन आज़माएं!


-13 बाइट्स:s->{var b="";for(var a:s.split(" "))b=a.chars().sum()>b.chars().sum()?a:b;return b;}
नेवी


1

पायथ , 33 बाइट्स

FHmCdmcd)Kczd aYu+GHmCdH0)@KxYeSY

इसे ऑनलाइन आज़माएं!

ऐसा करने का लगभग निश्चित रूप से एक बेहतर तरीका है, लेकिन मैंने इस पर बहुत अधिक खर्च किया है।

FH  #For every array of letters in 
  mCd   #the array of arrays of letters [['w', 'o', 'r', 'l', 'd'], ['h', 'e', 'l', 'l', 'o']]
     mcd)   #wrap that in another array [[hello"], ["world"]]
         Kczd   #split input(z) on spaces ["hello", "world"] and assign it to K for later
              aY     #append to list Y... " " silences the prints from the for loop.
                u+GH    #reduce the list of numbers by summing them    
                    mCdH    #convert each letter in the array to its int counterpart
                        0)    #the zero for the accumulator and close for loop
                          @K    #get by index the word from K
                            xY   #find the index in Y of that number
                              eSY   #sort Y, get the last (largest) number

मैंने लूप का उपयोग करने के बजाय एक और मानचित्र में एक कम कर दिया होगा, लेकिन मुझे वह काम नहीं मिला।


अरे लड़का, एक अजीब जवाब! स्पष्टीकरण के लिए धन्यवाद, अच्छी प्रविष्टि!
गामागेम

1

चारकोल , 20 बाइट्स

≔⪪S θ≔EθΣEι℅λη§θ⌕η⌈η

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

≔⪪S θ

रिक्त स्थान पर इनपुट स्ट्रिंग को विभाजित करें और असाइन करें q

≔EθΣEι℅λη

प्रत्येक शब्द में वर्णों के अध्यादेशों की राशि की गणना करें और उन्हें निर्दिष्ट करें h

§θ⌕η⌈η

उच्चतम योग के सूचकांक का पता लगाएं और उस सूचकांक पर शब्द प्रिंट करें।


1

पॉवरशेल, 66 बाइट्स

सीधा। AdmBorkBork का जवाब देखें Powershell का उपयोग करके एक स्मार्ट पाया गया।

-split$args|%{$s=0
$_|% t*y|%{$s+=$_}
if($s-gt$x){$w=$_;$x=$s}}
$w

ध्यान दें! यूनिकोड के साथ काम को सही करने के लिए, अपनी स्क्रिप्ट फ़ाइल को UTF-16या के साथ सहेजेंUTF8 with BOM एन्कोडिंग।

टेस्ट स्क्रिप्ट:

$f = {

-split$args|%{$s=0         # split argument strings by whitespaces, for each word
$_|% t*y|%{$s+=$_}         # let $s is sum of unicode char code
if($s-gt$x){$w=$_;$x=$s}}  # if $s greater then previous one, store word and sum to variables
$w                         # return word from stored variable

}

@(
    ,("a b c d e", "e")

    ,("hello world", "world")

    ,("this is a test", "test")

    ,("àà as a test", "àà")

    ,("α ää", "α")

    ,("🍬 隣隣隣", "隣隣隣")

    ,("💀 👻 🤡 🦇 🕷️ 🍬 🎃", "🕷️")
) | % {
    $s,$e=$_
    $r=&$f $s
    "$($r-eq$e): $r"
}

आउटपुट:

True: e
True: world
True: test
True: àà
True: α
True: 隣隣隣
True: 🕷️
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.