एक शब्द में अक्षरों को 'जोड़ें'


17

मेरे पिताजी एक सेवानिवृत्त शिक्षक हैं, और वे संयुक्त वर्तनी और गणित की क्विज़ देते थे, जहाँ छात्र एक शब्द का उच्चारण करेगा, और फिर अक्षरों को जोड़कर शब्द को 'स्कोर' करेगा, जहाँ a = 1, b = 2, आदि। (उदाहरण के लिए बिल्ली = 3 + 1 + 20 = 24)। इससे क्विज़ की ग्रेडिंग आसान हो गई, क्योंकि उसे गलत वर्तनी वाले शब्दों के बजाय केवल गलत 'स्कोर' की जाँच करनी थी, और एक बार में 2 कौशल का परीक्षण करने का अतिरिक्त लाभ था।

उन्होंने मेरे एक दोस्त को एक कार्यक्रम लिखने के लिए काम पर रखा, जो उसके लिए शब्द स्कोर करेगा, ताकि वह बिना त्रुटि के लंबी उत्तर कुंजी उत्पन्न कर सके। यह समस्या उस कार्यक्रम से प्रेरित है।

आवश्यकताएँ:

  1. अपरकेस और लोअरकेस अक्षरों के साथ किसी भी शब्द को स्वीकार करें
  2. किसी भी विशेष वर्ण, यानी रिक्त स्थान, हाइफ़न, @ ^% # आदि के लिए एक त्रुटि लौटाएं।
  3. a = 1, b = 2, ... और A = 1, B = 2, ...
  4. शब्द का स्कोर प्रिंट करें
  5. (वैकल्पिक) जाँच करें कि शब्द स्कोरिंग के बाद एक शब्दकोश में है, और चेतावनी को प्रिंट करें यदि यह नहीं है।
  6. कोई बाहरी पत्र आयात नहीं-> नंबर शब्दकोश। आप इसे स्वयं उत्पन्न करें।

कोई भी भाषा स्वीकार्य है। यह ' डिजिटल रूट बैटल ' के समान है , लेकिन बहुत सरल है।


2
क्या यह एक कोड गोल्फ माना जाता है?
पीटर टेलर

2
@Z code-golfटैग का उपयोग करना ।
लोजैकर

2
क्या आपके पिताजी ने भी "I से पहले E को सिखाने के बाद C को छोड़कर" नियम को पढ़ाया था?
नाथन मेरिल

2
हाँ, केवल अंकों की जाँच? मैं बिल्ली के रूप में जादू करेंगे aaaaaaaaaaaaaaaaaaaaaaaa। पिताजी: स्कोर 24 है? ये सही है!
ericw31415

3
@ ericw31415 हर हैशिंग फ़ंक्शन में टकराव है ;-)। अब तक उनके छात्रों में से किसी ने भी उस हमले की कोशिश नहीं की है
Zach

जवाबों:


8

गोल्फस्क्रिप्ट - 23 वर्ण

0\{.31&.(.26%=@64///+}/

सुनिश्चित करें कि इनपुट (जैसे उपयोग echo -n) में कोई अनुगामी न्यूलाइन्स नहीं हैं ।


हमारे पास एक नया विजेता है!
Zach

आम तौर पर, बाहरी फ़िल्टरिंग को किसी भी तरह से वर्ण गणना में शामिल किया जाना चाहिए (Ctrl-f बाहरी फ़िल्टरिंग।), हालांकि मुझे लगता है कि इसके बिना करने के लिए केवल 2 अतिरिक्त वर्ण हैं।
जेसी मिलीकैन

2
@ जेसे: echo -nवास्तव में बाहरी फ़िल्टरिंग के रूप में नहीं गिना जाता है - वास्तव में आपके द्वारा जोड़ा गया उत्तर इसे इनपुट के लिए वैध रूप के रूप में बताता है।
एनएबीबी

10

ब्रेनफ़ *** (100)

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

हालांकि मुझे स्वीकार करना होगा, यह सभी आवश्यकताओं का अनुपालन नहीं करता है। सबसे पहले, यह केवल बड़े अक्षरों को स्वीकार करता है, और शब्द को एक टैब के साथ समाप्त किया जाना चाहिए। इसमें अमान्य वर्णों के लिए अपरिभाषित व्यवहार है, और कोई त्रुटि नहीं है। यह अक्षरों के योग को ASCII वर्ण के रूप में प्रदर्शित करता है। उदाहरण के लिए, यदि शब्द "हेलो" है, (8 + 5 + 12 + 12 + 15 = 52) यह चरित्र "4" प्रदर्शित करेगा, जो कि 52 के लिए एएससीआईआई चरित्र है। इसका मतलब यह भी है कि कार्यक्रम जब बाहर निकलता है योग 255 से अधिक है।

लेकिन इसके अलावा , यह ठीक काम करता है। मुझे एक विराम दें, मेरा मस्तिष्क केवल छोटी खुराक को संभाल सकता है ... ठीक है, आप जानते हैं।


शब्द को किसी नई पंक्ति के बजाय टैब के साथ क्यों समाप्त करें?
लोजैकर

@Lowjacker टैब क्योंकि मुझे लगा के बारे में चिंता की तुलना में अधिक सरल है \nया \r\nया \n\r। और अगर मैंने newline का उपयोग किया है, तो मेरे पास वर्ण गणना के रूप में 100 की तरह एक अच्छा दौर नहीं होगा।
पीटर ओल्सन

यदि आपको एक बड़ी खुराक मिली तो क्या होगा?
मतीन उलहाक

8

पायथन ( 65 64)

print sum(['',ord(i)-64]['@'<i<'[']for i in raw_input().upper())

यदि शब्द में गैर-अक्षर वर्ण हैं, तो यह एक त्रुटि उठाता है, लेकिन एक सहायक या सूचनात्मक नहीं। (संपादित करें: अनुक्रमणिका चाल के लिए टोपी की नोक st0le पर।)


1
print sum(['',ord(i)-64]['@'<i<'[']for i in raw_input().upper())मुंडा के कुछ जोड़े।
5

बस एक चार वास्तव में। : - \
st0le

उपयोग करके 4 वर्ण सहेजें input; उपयोगकर्ता को इनपुट स्ट्रिंग्स के आसपास उद्धरण देने के लिए मजबूर करता है, लेकिन "उपयोगकर्ता के अनुकूल" और "खतरनाक नहीं" कल्पना में नहीं हैं!
jscs

खैर, बस इसे पायथन 3 में बदल दें! raw_inputinput
ओलेह प्रिनपिन

print sum([i,ord(i)-64]['@'<i<'[']for i in raw_input().upper()) एक और बाइट मुंडा
अलेक्जेंडर निगेल

8

रूबी, 43 अक्षर

$_=gets.upcase;p~/[^A-Z]/?_: $_.sum-64*~/$/

त्रुटि संदेश यह उत्पन्न करता है, हालांकि बिल्कुल मददगार नहीं है। यहां पोस्ट किए गए दोनों समाधान मानते हैं कि इनपुट में कोई अनुगामी लाइनब्रेक नहीं है, इसलिए उनका परीक्षण करने के लिए, उपयोग करें echo -n

रूबी, डिक्शनरी चेक के साथ 76 अक्षर

l=STDIN.gets;$_=l.upcase;p~/[^A-Z]/?_: $_.sum-64*~/$/;[*$<].index(l)||$><<?W

चेतावनी संदेश में एकल वर्ण "W" शामिल है। शब्दकोश के रास्ते को ARGV के माध्यम से आपूर्ति की जानी है। उदाहरण का उपयोग:

$ echo -n asd | ruby addletters.rb /usr/share/dict/words
24
W
$ echo -n cat | ruby addletters.rb /usr/share/dict/words
24

2
आप त्रुटि संदेश को विस्मयादिबोधक चिह्न बनाकर शब्दकोश चेक संस्करण में 9 वर्णों को काट सकते हैं।
पीटर ओल्सन

आपको डिक्शनरी चेक के साथ सबसे छोटी प्रविष्टि के लिए सांत्वना पुरस्कार मिलता है। जाने के लिए रास्ता!
Zach

शब्दकोश चेक प्रस्तावित क्यों किया गया था यदि यह आपको कोई वास्तविक बढ़त नहीं देता है (इसके विपरीत, यह सिर्फ कोड को फूला हुआ है)?
हेल्पर विधि

5

पायथन 2.6 (72 चार्ट) शब्दकोश की जांच के बिना

print sum(map(" abcdefghijklmnopqrstuvwxyz".index, raw_input().lower()))

पायथन 2.6 (178 चार्ट *) शब्दकोश चेक के साथ

w=raw_input().lower()
print sum(map(" abcdefghijklmnopqrstuvwxyz".index, w))
if w not in open('/usr/share/dict/american-english').read().split():
 print('Word not in dictionary')

* कम उपयोगी त्रुटि संदेश के साथ 156 पर उतारा जा सकता है। :-)

इसे बेहतर बनाने में मदद करने के लिए सभी टिप्पणीकारों को धन्यवाद।


आप sumएक forलूप के बजाय जनरेटर अभिव्यक्ति के साथ बिलिन का उपयोग करने पर विचार करना चाह सकते हैं । यह आपको कुछ वर्णों (~ 17) को बंद करने देगा।

@jloy: इस ओर इशारा करने के लिए धन्यवाद।
जॉन

प्रिंट पर कोष्ठक समाप्त किया जा सकता है
st0le

ऐसा लगता है कि आप aकेवल एक बार उपयोग कर रहे हैं , इसलिए स्वयं शाब्दिक का उपयोग करें ... "0abc....z".index(i)समान रूप से काम करेंगे।
st0le

0अपने स्कोरिंग सरणी में चतुर है, लेकिन यह भी मतलब है कि cat0त्रुटि है, जो सही नहीं है बिना स्वीकार किया जाता है, मुझे लगता है। यह बहुत बुरा है, क्योंकि यह आपको इसके बजाय पास map(a.index,w)करने की अनुमति देगा sum(शाब्दिक aरूप से st0le के लिए सुझाव देते हुए)।

4

पर्ल (52) (48)

करने के लिए और भी अधिक golfed धन्यवाद Timwi

perl -lpe "($w=uc)=~/[^A-Z]/&&die;$w=~s/./$_-=64-ord$&/ge"


आपको -eवहां झंडा याद आ रहा है ।
लॉजैकर

1
आपको अपने कैरेक्टर काउंट में कम से कम pऔर lइंटरप्रेटर फ्लैग को शामिल करना चाहिए । इस चर्चा को मेटा पर देखें ।
वेंटरो

syntax error at -e line 1, near "(=" Execution of -e aborted due to compilation errors.मैं क्या गलत कर रहा हूं?
उपयोगकर्ता अज्ञात

यदि आप यूनिक्स पर चल रहे हैं, तो डबल कोट्स को सिंगल में बदलें
चीनी पर्ल गोथ

@ टिमिवी: 'अपरकेस और लोअरकेस अक्षरों के साथ किसी भी शब्द को स्वीकार करें' गलत धागे पर गया, क्षमा करें। मैंने अब इसे डिलीट कर दिया। @chinese: हाँ, धन्यवाद, एकल उद्धरण के साथ यह ठीक है। जब तक मैं खुद को असीसी इनपुट तक सीमित रखता हूं। :)
उपयोगकर्ता अज्ञात

4

पायथन (80)

w=raw_input().lower()
s=0
for l in w:s+=range(97,123).index(ord(l))+1
print s

पायथन v2 (65 लेकिन चार `स्वीकार कर लिया जाएगा)

print sum(map(range(96,123).index,map(ord,raw_input().lower())))

v3 (60 वर्ण, @ स्वीकार किया जाएगा लेकिन गिना नहीं गया, धन्यवाद jloy)

print sum(map(range(64,91).index,map(ord,input().upper())))

सुझाव: यह आपके समाधान से एक और अधिक प्राप्त करने के लिए एक रास्ता है। :)

2
@jloy क्या एक सहायक 'संकेत' है। ;)
मतीन उल्हाक

4

स्केल: 59 वर्ण, उनमें से 7 पेलोड, कोई ताना नहीं:

(0/:"Payload".map(c=>if(c.isLetter)(c-'A')%32 else-999))(_+_)
67

अब तक कोई शब्दकोश नहीं। नकारात्मक परिणाम का अर्थ है: नकारात्मक!

(0/:"Pay!wall?".map(c=>if(c.isLetter)(c-'A')%32 else-999))(_+_)   
-1915

जर्मन उम्मुल को सुंदर तरीके से संभालता है:

(0/:"Müllrößchen".map(c=>if(c.isLetter)(c-'A')%32 else-999))(_+_)
155

वाह, पर्ल संस्करण की तुलना में कम चार्ट (और अभी भी अधिक पठनीय)।
हेल्पर विधि

मैंने SHiNKiROUs और कैल्शियम-पर्ल-समाधान की कोशिश की, लेकिन उन्होंने मेरे लिए काम नहीं किया। के रूप में उन्हें बचाया alpha.plऔर उनके द्वारा शुरू किया perl alpha.pl। क्या वे सिर्फ अस्सी को संभालते हैं? खैर - पर्ल में ऐसा एक पुराना जानवर है ... :)
उपयोगकर्ता अज्ञात

पर्ल और यूनिकोड एक बड़ी गड़बड़ है। आप शायद उन्हें perl -M5.010 alpha.plया कुछ इस तरह से चलाने के लिए है।
पीटर टेलर

मैंने सुना है कि मुझे लिनक्स पर दोहरे उद्धरण चिह्नों के बजाय एकल उद्धरणों की आवश्यकता है, और यह काम करता है, धन्यवाद।
उपयोगकर्ता अज्ञात

4

जावा + Google अमरूद पुस्तकालय, 347 अक्षर, शब्दकोश की जाँच के साथ

अपठनीय 1 लंबे स्ट्रिंग संस्करण :-)

import java.io.*;import com.google.common.base.*;import com.google.common.io.*;class C{public static void main(String[]a)throws Exception{int s=0;for(int c:a[0].toUpperCase().toCharArray()){assert(c>64&&c<91);s+=c-64;}String d=Files.toString(new File(a[1]),Charsets.UTF_8);if(StringUtils.containsIgnoreCase(d,a[0]))System.out.println("w");System.out.println(s);}}

मानव-पठनीय संस्करण (प्रकार :-))

import java.io.*;

import com.google.common.base.*;
import com.google.common.io.*;

class C {
    public static void main(String[] a) throws Exception {
        int s=0;

        for(int c : a[0].toUpperCase().toCharArray()) {
            System.out.println(c);
            assert(c > 64 && c < 91);
            s += c - 64;
        }

        String d = Files.toString(new File(a[1]), Charsets.UTF_8);

        if (d.contains(a[0])) System.out.println("w");

        System.out.println(s);
    }
}

शब्दकोश पथ अब के माध्यम से पारित कर दिया है a[1], आप -eaझंडा (+3 अधिक वर्ण) का उपयोग करने के लिए काम करने के लिए जोर देने के लिए । डिक्शनरी के लिए, डिक्टेंड /usr/share/dict/words(अधिकांश * निक्स सिस्टम पर उपलब्ध होना चाहिए) का उपयोग किया गया है।


अब तक आप शब्दकोश चेक के साथ केवल एक ही हैं, इसलिए +1
Zach

एक पंक्ति? यह इस तरह से विशेष रूप से पठनीय नहीं है, हालांकि मुझे लगता है कि यह
चार्ट

मैं एक और पठनीय समाधान जोड़ूंगा (और बॉयलरप्लेट कोड को कम करने के लिए Google अमरूद का उपयोग करके एक छोटा भी)।
हेल्पर विधि

आप सिर्फ आस्की की अनुमति देते हैं, लेकिन Charset.UTF-8 का उपयोग करें?
उपयोगकर्ता अज्ञात

1
क्योंकि स्ट्रिंग UTF-8अन्य वर्णों की तुलना में छोटी है :-)।
हेल्पर मेथड

4

पायथन 3, शब्दकोश के साथ 95 वर्ण

d=input().lower()
print(d in open("d").read()and sum(['',ord(c)-96]['`'<c<'{']for c in d)or'f')

शब्दकोश को d नामक एक फाइल में होना चाहिए।

पायथन 3, 61 बिना शब्दकोश के, लेकिन चोरी का विचार

print(sum(['',ord(c)-96]['`'<c<'{']for c in input().lower()))


3

VB.NET, 84 82 73 71

Console.Write(Console.ReadLine.Sum(Function(c)Asc(Char.ToUpper(c))-64))


संपादित करें: सत्यापन के साथ है:

Dim r=Console.ReadLine
Console.Write(If(r.All(AddressOf Char.IsLetter),r.Sum(Function(c)Asc(Char.ToUpper(c))-64),"Invalid input."))

129 अक्षर। कौनसे मामलेमें:

C #, 118

var r=Console.ReadLine();Console.Write(r.All(char.IsLetter)?r.Sum(c=>char.ToUpper(c)-64).ToString():"Invalid input.");

1
यह इनपुट को मान्य नहीं करता है।
लोजैकर

ऊप्स! एक दूसरे को पकड़ो ...
Ry-

3
मुझे लगता है कि आपको पूरा कार्यक्रम उपलब्ध कराना चाहिए। आपका C # समाधान संकलन नहीं करता है; आपको इसे एक क्लास घोषणा के अंदर एक मुख्य विधि में रखने की आवश्यकता है, और सभी वर्णों को गिनें।
तिमवी

1
नहीं, क्योंकि वह कोड कुछ भी नहीं करता है, और यह ऑब्जेक्ट-ओरिएंटेड भाषाओं के उपयोगकर्ताओं को नुकसान पहुंचाने के लिए उचित नहीं है। यह वैसे भी C # / VB.NET वैध है।
Ry-

3

जॉन के जवाब पर थोड़ा सुधार: पायथन (90)

s=0
for i in raw_input().lower():
 s+=("abcdefghijklmnopqrstuvwxyz".index(i)+1)
print(s)

2
स्ट्रिंग शुरुआत में डमी चार को जोड़ना कम है ... कोष्ठक हटाया जा सकता है
st0le

3

Erlang, 104

a()->
a(string:to_lower(io:get_line([])),0).
a([_|[]],S)->
S;
a([C|R],S) when C<${, C>=$`->
a(R,S+C-$`).

3

गोल्फस्क्रिप्ट - 39 वर्ण

n%~{.96>{96}{64}if-..26>\0<|{0/}*}%{+}*

यह फेंकता त्रुटि सबसे अच्छा नहीं है, लेकिन हे, यह निष्पादन को निरस्त करता है।


मुझे गोल्फस्क्रिप्ट के बारे में कुछ भी पता नहीं है, इसलिए मैं यह मानने जा रहा हूं कि यह आवश्यकताओं को पूरा करता है और आपको विजेता घोषित करता है!
जैच

वूप्स, तुम हरा दिया गया है! मुझे लगता है कि कोड गोल्फ प्रश्न पर प्रतीक्षा करने के लिए 2 दिन का समय पर्याप्त नहीं है?
Zach

3

पायथन 62 68 * अक्षर

print sum(map(chr,range(65,91)).index(c)+1 for c in input().upper())

उद्धरण चिह्नों का उपयोग करके उपयोगकर्ता को इनपुट स्ट्रिंग्स की आवश्यकता होती है, और सुरक्षित नहीं है ( inputकोड निष्पादित करता है), लेकिन, जैसा कि मैंने एक अन्य पोस्ट में एक टिप्पणी में कहा, "उपयोगकर्ता के अनुकूल" और "सुरक्षा जोखिम नहीं" कल्पना में नहीं है!


* मैं भूल गया print, दिमित।


जॉएल का जवाब अभी भी कम है, वास्तव में, input/ raw_inputअंतर के कारण।
jscs

2

रूबी 1.9, 69

w=gets.chop.upcase
w[/[^A-Z]/]&&fail
p w.bytes.inject(0){|s,b|s+b-64}

केवल एससीआई पात्रों को संभालता है। मुझे लगा कि रूबी हमारी सदी से है? :)
उपयोगकर्ता अज्ञात

@user अज्ञात: कल्पना यह नहीं कहती है कि यह है। यह करना बल्कि जटिल होगा ...
लॉजैकर

2

गोल्फस्क्रिप्ट, 50 (53)

बुरे पात्रों पर एक त्रुटि देता है, लेकिन एक बहुत अच्छा नहीं (50 अक्षर):

);[{""123,97>+91,65>+?}/].-1?0<{{26%1+}%{+}*}{@}if

इसके बजाय त्रुटि पर "ई" देता है (53 ​​वर्ण):

);[{""123,97>+91,65>+?}/].-1?0<{{26%1+}%{+}*}{;"E"}if

वर्णमाला जनित स्निपेट 123,97>+को वेंटरो से चुराया गया है।


2

जे (55)

+/64-~-&32`]@.(<&97)`_:@.(<&65)`_:@.(>&122)"0,I.a.&e."0

यह शब्दकोश एक को छोड़कर सभी स्थितियों को संतुष्ट करता है। एक त्रुटि स्थिति के रूप में, यह "अनन्तता" (जम्मू में अंडरस्कोर प्रतीक) उन शब्दों के लिए देता है जिनमें कुछ भी अक्षर होते हैं।


2

हास्केल (127)

(अजीब पात्रों पर एक त्रुटि उठाती है)
(यह भी: बीच की जगह की आवश्यकता है toUpper.और \xअन्यथा यह इसे पार्स करता है (toUpper) .\ (x))

import Char
main=getLine>>=putStrLn.show.sum.(map$(-65+).ord.toUpper. \x->if x`elem`['A'..'Z']++['a'..'z']then x else error"")

हास्केल (70)

(एक त्रुटि नहीं बढ़ाता है, लेकिन 45% कम है)

import Char
main=getLine>>=putStrLn.show.sum.(map$(-65+).ord.toUpper)

2

C ++ ( 111 107)

void main(){int a=0;s8*b=new s8[99];for(cin>>b;*b;)if(isalpha(*b))a+=tolower(*b++)-96;else return;cout<<a;}

"सेट अप" / आदि:

#include <iostream>
#include <cstdio>
#include <cctype>

#ifdef _MSC_VER
    typedef __int8 s8;
#else
    typedef signed char s8;
#endif

"अपरिभाषित" व्यवहार (यह 'अपरिभाषित' की तुलना में अधिक बुरा व्यवहार है), लेकिन अच्छी तरह से ओह)

  • void main() यह सब कहते हैं।
  • मैं newबिना उपयोग कर रहा हूं delete

1

जावास्क्रिप्ट 1.8, 80 वर्ण

आश्चर्यजनक रूप से पठनीय!

alert(Array.reduce(prompt().toLowerCase(),function(a,b)a+b.charCodeAt(0)-96,0))

क्रोम में उपयोग के लिए मुझे इसे थोड़ा बदलना पड़ा alert(prompt().toLowerCase().split("").reduce(function(a,b){return a+b.charCodeAt(0)-96},0)):। मुझे अभी भी जावास्क्रिप्ट समाधान सबसे ज्यादा पसंद हैं :)
pimvdb

जब आप अमान्य वर्ण करते हैं तो यह एक त्रुटि नहीं लौटाता है ???
ericw31415

1

एपीएल (34)

+/{⍵∊⍳26:⍵}¨{64-⍨A-32×96<A←⎕UCS⍵}⍞

या तो स्कोर देता है, या VALUE ERRORयदि इनपुट में गैर-अक्षर वर्ण हैं।

स्पष्टीकरण:

  • : इनपुट की एक पंक्ति पढ़ें
  • {... }: इनपुट के प्रत्येक वर्ण पर लागू फ़ंक्शन
  • A←⎕UCS⍵: वर्तमान वर्ण का ASCII मान संग्रहीत करें A
  • A-32×96<A: चरित्र अपरकेस बनाएं: A32 से घटाया जाता है यदि 96<A(तो, अगर यह अपरकेस है), अन्यथा 0
  • 64-⍨: इसमें से 64 घटाएं, A = 1, B = 2 ...
  • ¨: इस फ़ंक्शन को हर वर्ण पर लागू करें:
  • ⍵∊⍳26: यदि चरित्र 1 और 26 के बीच है ...
  • :⍵: तब वापसी there (और VALUE ERRORअगर कोई और खंड नहीं है तो 1 और 26 के बीच नहीं होगा)
  • +/: सभी मानों को एक साथ जोड़ दें (और यह मान स्वचालित रूप से आउटपुट किया जाता है क्योंकि यह अंतिम परिणाम है)।

1

जावास्क्रिप्ट, 60 बाइट्स

s=>[...s.toUpperCase()].reduce((a,b)=>a+b.charCodeAt()-64,0)

यदि प्रोग्राम को अमान्य इनपुट पर त्रुटि वापस करनी है, तो 80 बाइट्स:

s=>/[^a-z]/i.test(s)?_:[...s.toUpperCase()].reduce((a,b)=>a+b.charCodeAt()-64,0)

यदि कोई इनपुट अमान्य है, तो कंसोल कहेगा कि _परिभाषित नहीं है (पहले से ही एक चर परिभाषित नहीं होना चाहिए _)।


1

पायथन 3, 58 55

print(sum(ord(x)%32for x in input()if x.isalpha()or z))

शब्दकोश या चोरी के विचार के बिना लेकिन फिर भी अनजाने में त्रुटि;)

thx @ Eᴀsᴛᴇʀʟʏ

यहाँ परीक्षण करें


मुझे लगता है कि आप अजगर 2 पर स्विच करके और बाइट को बचा सकते हैं print<SPACE>sum(ord(......., अभिव्यक्ति के चारों ओर 2 कोष्ठक हटा सकते हैं।
Rɪᴋᴇʀ

@ E @s inputIʀᴋ जो सही है, लेकिन इनपुट की तुलना में कोष्ठक में होना चाहिए और मैं 2
वें

अजगर 2 जीवन है !! और यह भी, मुझे नहीं लगता कि इसके लिए इनपुट को छोटा करना होगा?
Rɪᴋᴇʀ

@ E @s .Iʀᴋ sry i का मतलब है उद्धृत। input()python3 में हैraw_input() में है
अलेक्जेंडर निगल

ओह! मैं भूल गया। हम्म।
R



1

सत्यापन के साथ C #: 108 वर्ण (त्रुटि संदेश के लिए 12 के साथ):

var s=Console.ReadLine();Console.Write(s.All(Char.IsLetter)?s.Sum(x=>x&'_'-'@').ToString():"Invalid input");

सत्यापन के बिना सी #: 60 53 वर्ण:

Console.Write(Console.ReadLine().Sum(x=>x&'_'-'@'));

1
सत्यापन के बिना दूसरे एक में, आप एस चर घोषणा को हटाकर और कंसोल (रीडलाइन) () इनलाइन का उपयोग करके पात्रों को और भी कम कर सकते हैं।
हर्मियोड

1

पर्ल (42 31)

perl -F -pale '$c+=ord(uc$_)-64for@F;$_=$c'

मुझे उम्मीद है कि 1 वर्ण के रूप में एफ, पी, ए और एल की गिनती सही थी।


1

जावास्क्रिप्ट, 68 बाइट्स

यह लगभग निश्चित रूप से अधिक गोल्फ हो सकता है

w=>[...w.toLowerCase()].map(v=>v.charCodeAt()-96).reduce((a,b)=>a+b)

डिक्शनरी चेक (Node.js & Unix Descendants केवल) 195 बाइट्स के साथ

उपयोग /usr/share/dict/words, और निश्चित रूप से छोटा किया जा सकता है (चेतावनी संदेश देखें)

w=>(require("fs").readFile("/usr/share/dict/words",(e,t)=>!(t+"").split`
`.includes(w=w.toLowerCase())&&console.warn(w+" not found in dict")),[...w].map(v=>v.charCodeAt()-96).reduce((a,b)=>a+b))

एक त्रुटि संदेश के लिए, आप करते हैं console.error(), नहीं console.warn()
ericw31415

लेकिन चुनौती ने चेतावनी दी (5. (वैकल्पिक) जांच करें कि शब्द स्कोरिंग के बाद एक शब्दकोश में है, और चेतावनी को प्रिंट करें यदि यह नहीं है।) पांडित्य होने का मतलब नहीं है, लेकिन चुनौती ने चेतावनी को निर्दिष्ट किया
मेयरमोनी

@SpeedyNinja मुझे लगता है कि यह अभी भी मायने रखता है, यह वास्तव में चुनौती की बात नहीं है ...
Rɪᴋᴇʀ

@ E @s )Iʀᴋ यह 1 वर्ण छोटा है;)
मेयोरमोनी

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