स्ट्रिंग के औसत वर्णों की गणना करें


24

कार्य

आपका काम स्ट्रिंग का उत्पादन करना है जिसमें स्ट्रिंग के औसत वर्ण हैं। परिणाम का पहला चरित्र पहले चरित्र का औसत चरित्र होगा (जो पहला चरित्र है) और दूसरा चरित्र पहले दो का औसत चरित्र और इसी तरह।

औसत चरित्र क्या है?

स्ट्रिंग्स बाइट्स के सरणियाँ हैं। स्ट्रिंग के औसत ASCII मूल्यों की गणना करके और इसी ASCII वर्ण को लेते हुए स्ट्रिंग के औसत चरित्र को पाया जा सकता है।

उदाहरण के लिए स्ट्रिंग "Hello!"को बाइट अनुक्रम के रूप में लिखा जा सकता है 72 101 108 108 111 33। एस्की मूल्यों का औसत 533/6 = 88.833 है ... और जब इसे निकटतम पूर्णांक में गोल किया जाता है तो हमें 89 मिलते हैं जो कैप्शन लेटर के लिए एएससीआई कोड होता है Y

नियम

  • आप मान सकते हैं कि इनपुट में केवल मुद्रण योग्य ASCII वर्ण हैं
  • इनपुट को स्टडिन से या कमांड लाइन तर्कों के रूप में या फ़ंक्शन तर्कों के रूप में पढ़ा जा सकता है
  • आउटपुट स्टडआउट होना चाहिए। यदि आपका प्रोग्राम कार्य करता है, तो आप उस स्ट्रिंग को भी वापस कर सकते हैं जिसे आप अन्यथा प्रिंट करेंगे।
  • यह संपूर्ण कार्यक्रम या कार्य होना चाहिए, स्निपेट नहीं
  • मानक खामियां लागू होती हैं
  • इंटेगर फंक्शन floor(x+0.5)या इसी तरह के फंक्शन द्वारा राउंड किए जाते हैं ।

मैं कैसे जीत सकता हूं?

यह , इसलिए जीत में सबसे छोटा जवाब (बाइट्स में) है।

उदाहरण

  • Hello!HW^adY
  • testtmop
  • 4243
  • StackExchangeSdccd_ccccddd

संपादित प्रश्न। अब यह स्पष्ट होना चाहिए: आपको आधा ऊपर की ओर गोल करना होगा।
हनीस करपिला

1
" इनपुट को स्टडिन से या कमांड लाइन आर्ग्युमेंट्स के रूप में पढ़ा जा सकता है ": या फ़ंक्शन आर्ग्युमेंट्स (चूंकि आप फ़ंक्शन की अनुमति देते हैं), सही?
लुइस मेंडो

बेशक, फिर से संपादित।
हनीस करपिला

2
आपको एक बार फिर परेशान करने के लिए क्षमा करें, लेकिन क्या वास्तव में फ़ंक्शन को आउटपुट को STDOUT में प्रिंट करना है या वे वांछित स्ट्रिंग वापस कर सकते हैं?
डेनिस

क्षमा करें, इससे पहले संपादित करना भूल गया। अब यह ठीक होना चाहिए।
हनीस करपिला

जवाबों:


11

ब्रेनफक 106 बाइट्स

,[>,<.[->+<]>>++<[>[->+>+<<]>[-<<-[>]>>>[<[>>>-<<<[-]]>>]<<]>>>+<<[-<<+>>]<<<]>[-]>>>>[-<<<<<+>>>>>]<<<<<]

यह एक कोड-गोल्फ में मेरी पहली भागीदारी है, कृपया कोमल रहें! यह काम करता है लेकिन ब्रेनफॉक फ़्लोट्स को संभाल नहीं सकता है (ऐसा नहीं है कि मुझे पता है) इसलिए गोल मूल्य हमेशा नीचे वाला होता है (बाद में मेरे एल्गोरिथ्म को ठीक कर सकता है)।

इसके अलावा, एल्गोरिथ्म 2 मानों को 2 से औसत करता है, जिसका अर्थ है कि यह कुछ स्थानों में सहज हो सकता है। और मुझे एक बग को ठीक करने की आवश्यकता है जो आउटपुट के अंत में भी एक नंबर प्रिंट कर रहा है।


9

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

smCs+.5csaYCdlYz

बहुत सीधा। s+.5गोलाई के बजाय का उपयोग करना , क्योंकि किसी कारण round(0.5, 0)से अजगर में 0 है।


1
पायथन 3 गोल आधे की ओर भी, जो कम पूर्वाग्रह का परिचय देता है। यह प्रश्न स्पष्ट रूप से निर्दिष्ट नहीं करता है कि हाफ़ को कैसे गोल किया जाना चाहिए, इसलिए मैंने ओपी से स्पष्टीकरण का अनुरोध किया है।
डेनिस

संपादित प्रश्न। 0.5गोल होना चाहिए 1
हनीस करपिला

7

क्यू, 15 12 बाइट्स

एक अभिव्यक्ति के रूप में 12 बाइट्स

"c"$avgs"i"$

q)"c"$avgs"i"$"Hello!"
"HW^adY"
q)"c"$avgs"i"$"test"
"tmop"
q)"c"$avgs"i"$"42"
"43"
q)"c"$avgs"i"$"StackExchange"
"Sdccd_ccccddd"

या एक कार्य के रूप में 15 बाइट्स

{"c"$avgs"i"$x}

q){"c"$avgs"i"$x} "Hello!"
"HW^adY"
q){"c"$avgs"i"$x} "test"
"tmop"
q){"c"$avgs"i"$x} "42"
"43"
q){"c"$avgs"i"$x} "StackExchange"
"Sdccd_ccccddd"

का फायदा उठाता है

  1. "i" $ कलाकारों को एक स्ट्रिंग (वर्णों की सूची) को पूर्णांक की सूची में बदलने के लिए
  2. avgs फ़ंक्शन, जो किसी सूची के फ़्लो की सूची के रूप में चल रहे औसत की गणना करता है
  3. "c" $ कलाकारों को फ़्लोट की एक सूची को वर्णों की सूची में बदलने के लिए, और जो ऐसा करने से पहले प्रत्येक फ़्लोट को निकटतम पूर्णांक तक राउंड करता है [("c" $ 99.5) = ("c" $ 100) और ("c) "$ 99.4) = (" सी "$ 99)]

क्या Q को यहां फ़ंक्शन रैपर की आवश्यकता होती है या आप केवल टैक्स्ट अभिव्यक्ति के साथ भाग सकते हैं "c"$avgs"i"$? मुझे नहीं लगता कि कोई समाधान इससे ज्यादा सीधा हो सकता है। :)
जॉन्स

आप सही हैं - फ़ंक्शन आवरण के लिए कोई ज़रूरत नहीं है, क्योंकि "c" $ avgs "i" $ "हैलो!" ठीक काम करता है
scottstein37

मुझे लगता है कि आप "c"`सी और` आई में बदलकर 2 बाइट्स बचा सकते हैं "i"
kirbyfan64sos

दुर्भाग्य से, मुझे नहीं लगता कि यह काम करता है। कास्टिंग के लिए प्रतीक प्रकार के प्रतिनिधित्व का उपयोग करने के लिए मुझे `char और` int का उपयोग code.kx.com/wiki/JB:QforMortals2/… के अनुसार करना होगा। मैंने "c" और "i" के बजाय 10h और 6h का उपयोग करने पर विचार किया। किसी भी बाइट को नहीं बचाएंगे - 10h "c" के समान लंबाई है और "i" के लिए 6h को प्रतिस्थापित करने के लिए एक अनुगामी स्थान की आवश्यकता होती है, जिससे उन्हें समान लंबाई भी मिलती है।
स्कॉचस्टीन37


4

पर्ल: 31 30 अक्षर

(29 अक्षर कोड + 1 वर्ण कमांड लाइन विकल्प।)

s!.!chr.5+($s+=ord$&)/++$c!ge

नमूना रन:

bash-4.3$ perl -pe 's!.!chr.5+($s+=ord$&)/++$c!ge' <<< 'StackExchange'
Sdccd_ccccddd


2

के, 36 बाइट्स

`0:_ci_.5+{(+/x)%#x}'.0+1_|(-1_)\_ic

उपयोग:

  `0:_ci_.5+{(+/x)%#x}'.0+1_|(-1_)\_ic"Hello!"
HW^adY
  `0:_ci_.5+{(+/x)%#x}'.0+1_|(-1_)\_ic"test"
tmop
  `0:_ci_.5+{(+/x)%#x}'.0+1_|(-1_)\_ic"42"
43
  `0:_ci_.5+{(+/x)%#x}'.0+1_|(-1_)\_ic"StackExchange"
Sdccd_ccccddd

_ciऔर _icascii को क्रमशः वर्ण और इसके विपरीत में परिवर्तित करें। {(+/x)%#x}एक माध्य की गणना के लिए एक क्लासिक K मुहावरा है। बहुत सीधा-सादा।

संपादित करें: ओह, कल्पना गलत। परिणाम को प्रिंट करने के लिए `0: की आवश्यकता होती है। इनपुट री पर स्पष्टीकरण की प्रतीक्षा की जा रही है। डेनिस का सवाल।


यदि आप K5 का उपयोग करते हैं, तो इसे 35 बाइट्स तक छोटा किया जा सकता है {[s]`0:`c${_.5+(+/u)%#u:x#s}'1+!#s}:।
kirbyfan64sos

या 30:`0:`c$_.5+{(+/x)%#x}'1_|(-1_)\
जॉनी

`c$_.5+{(+\x)%+\~^x}`i$24. यह छोटा हो सकता है ( `c$`i${(+\x)%+\~^x}`i$) लेकिन आपकी REPL ( johnearnest.github.io/ok/index.html ) फ्लोट से इंट में कास्टिंग करते समय सही ढंग से राउंडिंग नहीं होती है। मैं इस ak समाधान को कॉल करने में संकोच कर रहा हूं _ciऔर _icK5 युक्ति में कहीं नहीं हैं जहाँ तक मैं बता सकता हूं, जबकि 0:stdout में प्रिंट नहीं होता है , बल्कि डिस्क से एक txt फ़ाइल पढ़ता है।
tmartin

@tmartin: सही- _ciऔर _icपूरी तरह से K5 में बदल दिए गए हैं जैसे कि रूपों के साथ `c$। मूल समाधान जो मैंने पोस्ट किया है वह Kona के साथ संगत है, जो K2 / K3 पर आधारित है। मैं आम तौर पर विशेष रूप से ओके के साथ समाधान पोस्ट नहीं करने की कोशिश करता हूं क्योंकि शब्दार्थ अभी भी चारों ओर और आंशिक रूप से गलत हैं।
जॉन जूल

1
आह, मैं देख रहा हूँ, मेरे लिए समझ में आता है मुझे लगा कि यह एक और K5 समाधान था। यहाँ एक 28 चार कोना समाधान है`0:_ci_0.5+{(+\x)%1.+!#x}_ic
tmartin

2

गणितज्ञ, 75 बाइट्स

FromCharacterCode@Floor[.5+Accumulate@#/Range@Length@#]&@ToCharacterCode@#&

2

जूलिया, 85 81 बाइट्स

s->(i=[int(c)for c=s];print(join([char(iround(mean(i[1:j])))for j=1:length(i)])))

यह एक अनाम फ़ंक्शन बनाता है जो एक स्ट्रिंग को स्वीकार करता है और अपने ASCII कोड बिंदुओं का एक वेक्टर बनाता है। प्रत्येक अनुक्रमिक समूह के लिए माध्य लिया जाता है, पूर्णांकों तक गोल किया जाता है, वर्णों में परिवर्तित किया जाता है, एक स्ट्रिंग में शामिल किया जाता है, और STDOUT पर मुद्रित किया जाता है।


2

रूबी, ४६

s=0.0
$<.bytes{|b|s+=b;$><<'%c'%(0.5+s/$.+=1)}

विचारधारा

W0lf के लिए क्षमायाचना के साथ, मेरा जवाब अलग-अलग समाप्त हो गया कि यह पोस्ट करने लायक लग रहा था।

$<.bytesस्टड में प्रत्येक बाइट पर iterates, इसलिए हम प्रत्येक लूप में रोलिंग औसत प्रिंट करते हैं। '% c' एक फ्लोट को एक अक्षर में बदलकर नीचे और ASCII में ले जाता है, इसलिए हमें इसे ठीक से गोल करने के लिए 0.5 जोड़ना होगा। $.एक मैजिक वैरिएबल है जो 0 से शुरू होता है - यह लाइन काउंट को स्टोर करने के लिए माना जाता है, लेकिन यहाँ पर हम बाइट काउंट चाहते हैं, हम इसे मैन्युअल रूप से बढ़ाते हैं।


2

मथकड, 60 "बाइट्स"

यहाँ छवि विवरण दर्ज करें

मथकाद गणितीय अनुप्रयोग है जो 2 डी वर्कशीट पर आधारित है जिसमें "क्षेत्र" शामिल हैं, जिनमें से प्रत्येक पाठ, एक गणितीय अभिव्यक्ति, कार्यक्रम, कथानक या स्क्रिप्टेड घटक हो सकता है।

गणितीय या प्रोग्रामिंग निर्देश को पैलेट टूलबार से उठाया जाता है या कीबोर्ड शॉर्टकट का उपयोग करके दर्ज किया जाता है। गोल्फ उद्देश्यों के लिए, एक ऑपरेशन ("बाइट") नाम या अभिव्यक्ति बनाने के लिए आवश्यक कीबोर्ड संचालन की संख्या के लिए लिया जाता है (उदाहरण के लिए, चर को 3 पर सेट करने के लिए, हम a: = 3 लिखेंगे। परिभाषा ऑपरेटर) : = एक एकल कीपर्स है ":", जैसे कि ए और 3 कुल 3 "बाइट्स" दे रहे हैं। ऑपरेटर के लिए प्रोग्रामिंग के लिए टाइपिंग ctl-shft- # (या प्रोग्रामिंग टूलबार पर एक सिंगल क्लिक) की आवश्यकता होती है ताकि फिर से बराबर हो। 1 बाइट।

मैथकाड में उपयोगकर्ता कीबोर्ड शॉर्टकट (या उन्हें प्रोग्रामिंग टूलबार से चुनने) के बजाय प्रोग्रामिंग भाषा कमांड में पाठ में लिखने के बजाय प्रवेश करता है। उदाहरण के लिए, टाइपिंग ctl-] एक टाइम-लूप ऑपरेटर बनाता है जिसके पास क्रमशः स्थिति और शरीर की एक पंक्ति में प्रवेश करने के लिए दो "प्लेसहोल्डर" होते हैं। टाइपिंग = एक मैथेकड एक्सप्रेशन के अंत में मैथैड के अभिव्यक्ति का मूल्यांकन करने का कारण बनता है।

(गिनती बाइट्स) एक उपयोगकर्ता इनपुट परिप्रेक्ष्य से इसे देखकर और एक चरित्र के लिए एक Mathcad इनपुट ऑपरेशन (कीबोर्ड आमतौर पर, माउस क्लिक करें यदि कोई kbd शॉर्टकट नहीं है) और एक बाइट के रूप में यह व्याख्या। CSort = 5 बाइट्स के रूप में यह चार-चार-चार के रूप में टाइप किया गया है क्योंकि अन्य चर / फ़ंक्शन नाम हैं। ऑपरेटर के लिए एक विशेष निर्माण है जो 11 वर्णों (3 रिक्त "प्लेसहोल्डर्स और 3 रिक्त स्थान सहित) पर कब्जा करता है, लेकिन ctl-shft- # द्वारा दर्ज किया जाता है, इसलिए = 1 बाइट (कुछ भाषाओं में टोकन के समान)। टाइपिंग '(उद्धरण) संतुलित कोष्ठक (आमतौर पर) बनाता है इसलिए 1 बाइट के रूप में गिना जाता है। अनुक्रमण v = 3 बाइट्स (प्रकार v [k)।


2

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

यदि मैं आदि के round()बजाय उपयोग करता हूं int(.5+, तो यह एक चरित्र को बचाता है, लेकिन तकनीकी रूप से चुनौती के अनुपालन में नहीं है: पायथन के round()राउंड निकटतम पूर्णांक तक रुकते हैं, ऊपर की ओर नहीं। हालांकि, यह सभी सैंपल इनपुट्स पर सही तरीके से काम करता है।

मैं भी एक newline के साथ उत्पादन को समाप्त नहीं करने के लिए थोड़ा गंदा लगता है, लेकिन चुनौती की आवश्यकता नहीं है कि ...

n=t=0
for c in input():n+=1;t+=ord(c);print(end=chr(int(.5+t/n)))

1
आप मुद्रण से पहले एन को बढ़ा देते हैं, तो आप 1. द्वारा यह एडजस्ट करने से बच सकते हैं
XNOR

1
@ एक्सनोर: चेहरा, हथेली। मुंह पर मारना। यह बात बताने के लिए धन्यवाद।
टिम पेडरिक जूल

है print(end=chr(int(...))कुछ बाइट्स को बचाने के लिए
FlipTack

@ Flp.Tkc: धन्यवाद! उत्तर अपडेट किया गया।
टिम Pederick

2

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

let f =
s=>s.replace(/./g,x=>String.fromCharCode((t+=x.charCodeAt())/++i+.5),i=t=0)
<input oninput="O.value=f(this.value)" value="Hello!"><br>
<input id=O value="HW^adY" disabled>

मुझे विश्वास नहीं हो रहा है कि इस तकनीक के साथ कोई जेएस उत्तर नहीं है ...


1

पायथन 2, 71

i=s=0
r=''
for c in input():s+=ord(c);i+=1.;r+=chr(int(s/i+.5))
print r

प्रत्येक नए चरित्र के साथ, औसत वर्ण को गणना और जोड़ने के लिए वर्ण राशि sऔर वर्णों की संख्या को अद्यतन करता है i


लगभग मेरा एक ही दृष्टिकोण है, केवल पायथन 2 3 के बजाय, और पोस्ट किए गए घंटे पहले: +1। (इसके अलावा, मैंने पाया कि मैंने कुछ बाइट्स को प्रत्येक पात्र को प्रिंट करने के रूप में सहेजा है क्योंकि यह एक फाइनल के लिए उन्हें संग्रहीत करने के बजाय आया है print। क्या वह पायथन 2 के साथ काम करेगा? मैं अभी भूल गया हूं कि printबयान में नई कहानियों को कैसे दबाया जाए ... अल्पविराम इसे एक स्थान बनाता है। इसके बजाय, ठीक है?)
टिम पेडरिक जुएल

पायथन 2 print _,न्यूलाइन के बजाय एक स्पेस छोड़ने के लिए कर सकता है, लेकिन स्पेस को छोड़ने का कोई अच्छा तरीका नहीं है। पायथन 3 के endतर्क के साथ अच्छा कॉल , मैं उस के बारे में भूल गया था।
xnor

@TimPederick हो सकता है कि स्पेस को हटाने के लिए हैक के रूप में इसे इस्तेमाल करने वाले टर्मिनल के लिए बैकस्पेस कंट्रोल को सही ठहराया जा सकता है:print'\b'+_,
xnor


1

जावा, १००

बहुत से अन्य उत्तरों की तरह यहाँ, मैं संक्षेप में हूँ और एक लूप में औसत हूं। बस यहाँ जावा का प्रतिनिधित्व करने के लिए :)

void f(char[]z){float s=0;for(int i=0;i<z.length;System.out.print((char)Math.round(s/++i)))s+=z[i];}

मेरा मूल कोड 97 है, लेकिन यह केवल char[]इसे प्रिंट करने के बजाय संशोधित लौटाता है:

char[]g(char[]z){float s=0;for(int i=0;i<z.length;z[i]=(char)Math.round(s/++i))s+=z[i];return z;}

अब, स्क्रॉलबार्स को मेरे लिए प्रदर्शित होने में अभी काफी समय है, इसलिए यहां कुछ लाइन के साथ एक संस्करण टूट गया है, सिर्फ इसलिए:

void f(char[]z){
    float s=0;
    for(int i=0;
            i<z.length;
            System.out.print((char)Math.round(s/++i)))
        s+=z[i];
}

दिलचस्प। क्या आप हमें कॉल नमूना भी दिखा सकते हैं? मेरा जावा बहुत जंग खा रहा है।
मैनटवर्क

इसे कैसे कॉल करें? मान testलेना एक चार्ट है, बस उपयोग करें f(test);। यदि यह एक स्ट्रिंग ऑब्जेक्ट है, तो आप उपयोग करेंगे f(test.toCharArray());। स्ट्रिंग f("Hello!".toCharArray());
लिटरल्स

ओह। ज़रूर। toCharArray()मुझे बेवकूफ बनाया, मैंने कुछ कास्टिंग के साथ इसका उल्लंघन करने की कोशिश की। धन्यवाद।
मैनटवर्क

यह रास्ता बहुत आसान होगा बस इसे डाली। जावा देवता उग्र होंगे: P
जियोबिट्स

1

सी, 62 बाइट्स

c;t;main(n){for(;(c=getchar())>0;n++)putchar(((t+=c)+n/2)/n);}

(ideone लिंक)

परिणाम ओपी के उदाहरणों से थोड़ा अलग हैं, लेकिन केवल इसलिए कि यह कोड ऊपर के बजाय 0.5 नीचे गोल होता है। अब नहीं है!


1

आर, 135 127 बाइट्स

यह लंबे समय तक वास्तविक हो गया और मुझे वास्तव में पहली बार गलत लगा :) प्रश्नों को ठीक से पढ़ने की आवश्यकता है।

cat(sapply(substring(a<-scan(,''),1,1:nchar(a)),function(x)rawToChar(as.raw(round(mean(as.integer(charToRaw(x)))+.5)))),sep='')

परीक्षण चालन

cat(sapply(substring(a<-scan(,''),1,1:nchar(a)),function(x)rawToChar(as.raw(round(mean(as.integer(charToRaw(x)))+.5)))),sep='')
1: Hello!
2: 
Read 1 item
HW^adY

किसी ने सैंडबॉक्स में एक डुबकी चुनौती पोस्ट की तो मुझे यह मिला ... यह कुछ समय पहले था, लेकिन utf8ToIntइससे मदद मिलेगी! अगर आप इसे अपडेट करना चाहते हैं तो मेरे पास इसमें 68 बाइट का गोल्फ है।
ग्यूसेप

@Giuseppe आगे बढ़ो और यदि आप चाहें तो इसे स्वयं पोस्ट करें। मुझे संदेह है कि मैंने यहां जो किया है, वह काफी अलग है।
मिक्यट

1

पर्ल 5, 41 बाइट्स

say map{$s+=ord;chr($s/++$c+.5)}pop=~/./g

ऐसे दोड़ो

$ perl -E 'say map{$s+=ord;chr($s/++$c+.5)}pop=~/./g' StackExchange
Sdccd_ccccddd

1

TSQL, 118 बाइट्स

DECLARE @ varchar(400) = 'StackExchange'

SELECT
top(len(@))char(avg(ascii(stuff(@,1,number,''))+.5)over(order by number))FROM
master..spt_values
WHERE'P'=type

अक्षर लौटना

S
d
c
c
d
_
c
c
c
c
d
d
d

1

> <> , 30 बाइट्स

i:0(?v
v &l~<
\+l2(?
\&,12,+o;
  • पहली पंक्ति स्टड से पढ़ती है और पात्रों को स्टैक पर रखती है
  • दूसरा ईओएल चार को हटा देगा, स्टैक का आकार लेगा और इसे &रजिस्टर में डाल देगा
  • तीसरी पंक्ति स्टैक पर संख्याओं को जोड़ देगी जबकि उनमें से दो या अधिक हैं
  • चौथी पंक्ति परिणामी संख्या को रजिस्टर के मूल्य से विभाजित करेगी, फिर 1/2 जोड़ें, मूल्य को एक चरित्र के रूप में आउटपुट करें और रोकें। जब एक चार्ट प्रदर्शित करते समय फ्लोट मान के साथ सामना किया जाता है, तो> <> इसे फर्श करेगा, यही कारण है कि हमने 1/2 जोड़ा

आप इसे ऑनलाइन दुभाषिया पर आज़मा सकते हैं, लेकिन फिर आपको निम्नलिखित संस्करण का उपयोग करने की आवश्यकता है, क्योंकि ऑनलाइन दुभाषिया कोड बॉक्स को एक आयत में पैड करता है और ?रिक्त स्थान पर लागू होता है।

i:0(?v
v &l~<
\+l2(   ?
\&,12,+o;

1

05AB1E , 15 बाइट्स [गैर-प्रतिस्पर्धात्मक?]

.pvyDSÇOsg/îç}J

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


-2 बाइट्स हटाने Dऔर }, और के sसाथ की जगह y
केविन क्रूज़सेन

1
यह जवाब कितना पुराना है, इसके लिए @KevinCruijssen इससे बहुत अधिक है: पी। .p1byter अब भी है
मैजिक ऑक्टोपस Urn

आह योग्य, ηएक्सडी के बारे में भूल गया
केविन क्रूज़सेन

1

Japt , 13 बाइट्स (गैर-प्रतिस्पर्धात्मक)

£T±Xc)/°Y r d

इसे ऑनलाइन टेस्ट करें!

यह काम किस प्रकार करता है

£   T± Xc)/° Y r d
mXY{T+=Xc)/++Y r d}
                     // Implicit: U = input string, T = 0
mXY{              }  // Replace each char X and index Y in the string by this function:
    T+=Xc            //   Add X.charCodeAt() to T.
         )/++Y       //   Take T / (Y + 1).
               r d   //   Round, and convert to a character.
                     // Implicit: output result of last expression

आह, नट; मैंने सोचा था कि "गैर प्रतिस्पर्धा" फिल्टर लीडरबोर्ड से हटा दिया गया था, इसलिए मैं इस पोस्ट करने से पहले नहीं देखा था इस
शैगी


1

PHP , 176 बाइट

<?=(implode('',array_reduce(str_split($argv[1]),function($c,$k){array_push($c[1],chr(floor(((ord($k)+$c[0])/(count($c[1])+1))+0.5)));return[ord($k)+$c[0],$c[1]];},[0,[]])[1]));

उदाहरण:

>php cg.php Hello!
HW^adY
>php cg.php test  
tmop
>php cg.php 42
43

अब तक का सबसे बड़ा समाधान, लेकिन php पर आधारित यह मेरे विचार से बहुत छोटा नहीं हो सकता है। नई बाइट्स को हटाकर 2 बाइट्स बचाए जा सकते थे।


हम्म, अच्छी बात है। मुझे लगा कि मैं बेहतर पठनीयता के लिए उन्हें पद पर छोड़ सकता हूं। लेकिन हाँ, यह कोड गोल्फ है। मैं उन्हें हटा दूँगा;)
cb0

1
आप हमेशा अपने छोटे से किनारे के साथ पठनीयता के लिए एक अतिरिक्त संस्करण शामिल कर सकते हैं। मैं अक्सर ऐसा करता हूं जब मेरा कोड अधिकांश मॉनिटर पर पूरी तरह से दिखाई देने के लिए बहुत लंबा होता है।
गेहूं जादूगर

0

जावास्क्रिप्ट ईएस 7, 122 बाइट्स

s=>String.fromCharCode(...[for(i of s)i.charCodeAt()].map((l,i,a)=>Math.round(eval((t=a.slice(0,++i)).join`+`)/t.length)))

ज्यादातर सब कुछ इस बिट में हो रहा है

eval((t=a.slice(0,++i)).join`+`)/t.length)

बाकी लूपिंग / चरित्र कोड रूपांतरण है

अलग होना:

s=> 
 String.fromCharCode(...                        ) // Converts average character code array to string, ... allows it to take an array
   [for(i of s)i.charCodeAt()]                    // Converts string to char code array
   .map((l,i,a)=>                             )   // Loops through each character
     Math.round(                    /t.length)    // Rounds sum of previous char codes, divides by position + 1
       eval(                       )              // evals string of char codes seperated with +
            (                ).join`+`            // joins previous char codes with +
             t=a.slice(0,++i)                     // creates an array with all the char codes

यदि कार्यों की अनुमति नहीं है:

alert(String.fromCharCode(...[for(i of prompt())i.charCodeAt()].map((l,i,a)=>Math.round(eval((t=a.slice(0,++i)).join`+`)/t.length))))

133 बाइट्स


ES5 स्निपेट:

function _toConsumableArray(r){if(Array.isArray(r)){for(var e=0,t=Array(r.length);e<r.length;e++)t[e]=r[e];return t}return Array.from(r)}function _taggedTemplateLiteral(r,e){return Object.freeze(Object.defineProperties(r,{raw:{value:Object.freeze(e)}}))}var _templateObject=_taggedTemplateLiteral(["+"],["+"]),f,t=function t(s){return String.fromCharCode.apply(String,_toConsumableArray(function(){var r=[],e=!0,t=!1,a=void 0;try{for(var n,i=s[Symbol.iterator]();!(e=(n=i.next()).done);e=!0){var o=n.value;r.push(o.charCodeAt())}}catch(l){t=!0,a=l}finally{try{!e&&i["return"]&&i["return"]()}finally{if(t)throw a}}return r}().map(function(l,i,a){return Math.round(eval((f=a.slice(0,++i)).join(_templateObject))/f.length)})))};

// Demo
document.getElementById('go').onclick=function(){
  document.getElementById('output').innerHTML = t(document.getElementById('input').value)
};
<div style="padding-left:5px;padding-right:5px;"><h2 style="font-family:sans-serif">Average of Words Snippet</h2><div><div  style="background-color:#EFEFEF;border-radius:4px;padding:10px;"><input placeholder="Text here..." style="resize:none;border:1px solid #DDD;" id="input"><button id='go'>Run!</button></div><br><div style="background-color:#EFEFEF;border-radius:4px;padding:10px;"><span style="font-family:sans-serif;">Output:</span><br><pre id="output" style="background-color:#DEDEDE;padding:1em;border-radius:2px;overflow-x:auto;"></pre></div></div></div>


0

पायथन 2, 106 बाइट्स

यह कम नहीं है। चूंकि यह अजगर है, इसलिए यह बहुत ही क्रियात्मक है, आप कोड देखकर भी पढ़ सकते हैं। लेकिन यह काम कर रहा है।

a=[.0]+[ord(i)for i in raw_input()]
print"".join([chr(int(.5+(sum(a[:i+1])/i)))for i in range(1,len(a))])

1
"चूंकि यह अजगर है, यह बहुत वर्बोज़ है" ... जावा की तुलना में नहीं। और मैं असहमत हूं। किसी भी कम क्रिया और यह उतना महान नहीं होगा जितना यह है। यदि आप कम क्रिया चाहते हैं तो पाइथ का उपयोग करें।
mbomb007

0

मतलब, ४३

एक अनाम फ़ंक्शन का उपयोग करना:

f=@(s)char(round(cumsum(+s)./(1:numel(s))))

उदाहरण:

>> f=@(s)char(round(cumsum(+s)./(1:numel(s))))
f = 
    @(s)char(round(cumsum(+s)./(1:numel(s))))

>> f('Hello!')
ans =
HW^adY

>> f('test')
ans =
tmop

>> f('42')
ans =
43

>> f('StackExchange')
ans =
Sdccd_ccccddd

0

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

w=>w.replace(/./g,(_,i)=>String.fromCharCode([for(f of w.slice(0,++i))f.charCodeAt()].reduce((a,b)=>a+b)/i+.5))

यह जावास्क्रिप्ट के लंबे String.fromCharCodeऔर charCodeAtकार्यों के लिए लंबे समय तक धन्यवाद है । स्टैक स्निपेट में अपुष्ट, टिप्पणी, परीक्षण योग्य कोड होता है।

f=function(w){
  return w.replace(/./g,function(e,i){
    return String.fromCharCode(w.slice(0,++i).split('').map(function(f){
      return f.charCodeAt()
    }).reduce(function(a,b){
      // Adds all numbers in the array
      return a+b
      // String.fromCharCode automatically floors numbers, so we add .5 to round up
    })/i+.5)
  })
}

run=function(){document.getElementById('output').innerHTML=f(document.getElementById('input').value)};document.getElementById('run').onclick=run;run()
<input type="text" id="input" value="Hello!" /><button id="run">Run</button><br />
<pre id="output"></pre>


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