একটি স্ট্রিংয়ের মধ্যে যোগফলের যোগফল


11

ইনপুট

একটি স্ট্রিং

আউটপুট

লাইনে সমস্ত সংখ্যার যোগফল।

সীমাবদ্ধতাসমূহ

500 লাইনের দৈর্ঘ্য

নমুনা পরীক্ষার কেস

ইনপুট

the 5is 108 seCONd4 a

আউটপুট

117

ব্যাখ্যা

যোগফলটি: 5 + 108 + 4 = 117


6
হাই, পিপিসিজিতে আপনাকে স্বাগতম। একক ভাষার জন্য চ্যালেঞ্জগুলি সাধারণত পিপিসিজিতে এখানে প্রত্যাখ্যান করা হয়। হতে পারে আপনি এটিকে একটি সাধারণ চ্যালেঞ্জে পরিবর্তন করতে পারেন: একটি স্ট্রিং দেওয়া থাকলে স্ট্রিংয়ের সমস্ত সংখ্যার যোগফল আউটপুট করে অন্য সব কিছু উপেক্ষা করে (যেমন "the 5is 108 seCONd4 a"এর 117কারণ হবে 5+108+4=117) will এছাড়াও, এখানে প্রতিটি 'প্রশ্ন' এর একটি বিজয়ী শর্ত ট্যাগ থাকা উচিত । এক্ষেত্রে আমি ধরে নিলাম এটি [কোড-গল্ফ] (সবচেয়ে সংক্ষিপ্ততম সমাধান হওয়া সত্ত্বেও)?
কেভিন ক্রুইজসেন

4
দেখা যাচ্ছে আপনি এসও তে অনুরূপ প্রশ্ন পোস্ট করেছেন , এটি নিশ্চিত করে যে এটি পিপিজি চ্যালেঞ্জ হিসাবে তৈরি করা হয়নি এবং আপনি গল্ফ কোডের পরিবর্তে 'ব্যবহারযোগ্য' কোডটি সন্ধান করছেন। আমি পরিবর্তে আপনার মূল প্রশ্নটি আরও উন্নত করার পরামর্শ দেব, যাতে এটি সাইটের নিয়মগুলির সাথে আরও ভাল ফিট করে।
আর্নল্ড

4
আমাদের মানদণ্ডের সাথে মানিয়ে নিতে আমি আপনার পোস্টটি সংশোধন করেছি। যদি ফলাফলটি আপনার পক্ষে উপযুক্ত না হয় তবে নির্দ্বিধায় এডিট করুন।
অ্যাডাম


2
এই ক্ষেত্রে string x='-12hello3';আপনি কী নেতিবাচক পূর্ণসংখ্যা গণনা করছেন (উদাহরণস্বরূপ, -12 + 3 === -9)?
শান বেবার্স

উত্তর:


4

জাভাস্ক্রিপ্ট, 34 32 বাইট

s=>eval(s.match(/\d+/g).join`+`)

সমস্ত অঙ্কের সাথে মেলে এবং +এটিকে 5 + 108 + 4 এ পরিণত করে যোগদান করুন , ফলাফলটি প্রকাশ করুন।
শুধুমাত্র ইতিবাচক পূর্ণসংখ্যার উপর কাজ করে।

আরনাউল্ডকে ধন্যবাদ 2 বাইট সংরক্ষণ করা

f=
    s=>eval(s.match(/\d+/g).join`+`)

g=()=>b.innerHTML = f(a.value)
g()
<input id=a value="the 5is 108 seCONd4 a" onkeyup="g()">
<pre id=b>


আমি অনুমান করি অক্ষর গণনা করার জন্য কনসোলে স্ট্রিং.এলতা ব্যবহার করা কোনও ভাল ধারণা নয় যখন এতে পালানোর অক্ষর রয়েছে ... ওফফ, এটি স্থির করে নিন। আবার Thx
বাসপ্রডোম্ব কম্বারউবউবউব

আর একটু ভালো বিকল্প হতে পারে console.log(f.toString().length), কিন্তু এটা না পারেন 100% নির্ভরযোগ্য।
আরনাউল্ড

বা সবে টিআইও ব্যবহার করে ...
জো কিং


4

05 এ বি 1 , 11 6 বাইট

þмS¡þO

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

þм       # Only leave the non-digits of the (implicit) input-string
         #  i.e. "the 5is 108 seCONd4 a" → "the is  seCONd a"
  S      # Split it into a list of characters
         #  → ["t","h","e"," ","i","s"," "," ","s","e","C","O","N","d"," ","a"]
   ¡     # Split the (implicit) input-string by each of these characters
         #  → ["","","","","5","","","108","","","","","","","4","",""]
    þ    # Remove the empty strings by only leaving the digits
         #  → ["5","108","4"]
     O   # And sum these numbers (which is output implicitly)
         #  → 117

1
ওহে, চতুর ব্যবহার ¡!
এরিক আউটগল্ফার

4

আর , 64 48 45 বাইট

পাওয়ারশেলের এন্ট্রিটি দেখার পরে আমি এটি আরও গল্ফ করতে সক্ষম হয়েছি।

function(s)eval(parse(,,gsub('\\D+','+0',s)))

এটি অনলাইন চেষ্টা করুন!


t=এর চেয়ে এখানে এখানে যথেষ্টtext
জিউসেপে

ধন্যবাদ, আমি সবসময় আংশিক মিলের কথা ভুলে যাই (এবং ,,,,,, এর স্ট্রিংটি আপনি যে বিকল্পটি চান তা না পেয়ে)।
সিটি হল

3

এপিএল (ডায়ালগ ইউনিকোড) , 11 বাইট

বেনামে সারণী প্রিফিকেশন ফাংশন

+/#⍎¨∊∘⎕D⊆⊢

এটি অনলাইন চেষ্টা করুন!

 যুক্তি

 পার্টিশন করা (সত্যের রানগুলি টুকরো টুকরো হয়ে যায়, মিথ্যা রানের বিভাজকগুলি হয়) দ্বারা

 সদস্য
 এর
⎕D সংখ্যার সেট

#⍎¨ রুট নেমস্পেসের প্রতিটি মূল্যায়ন করুন

+/ সমষ্টি


3

রেটিনা 0.8.2 , 8 বাইট

\d+
$*
1

এটি অনলাইন চেষ্টা করুন!

  • প্রথম লাইনটি সমস্ত সংখ্যার সাথে মেলে
  • দ্বিতীয় লাইনটি 1 সেকেন্ড দ্বারা প্রতিস্থাপিত করে, বারবার বহুবার বলেছিল
  • শেষ লাইনটি একটি ম্যাচ, এবং স্ট্রিংয়ে মোট 1s সংখ্যা গণনা করে


2

কাঠকয়লা , 5 বাইট

IΣ⁺ψS

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা: চারকোলের Sumঅপারেটর একটি স্ট্রিং থেকে স্বয়ংক্রিয়ভাবে নম্বরগুলি বের করে, তবে স্ট্রিংটিতে যদি কোনও অ-অঙ্কের অক্ষর না থাকে তবে পরিবর্তে এটি ডিজিটাল যোগফল গ্রহণ করে, তাই এটি এড়াতে আমি নাল বাইটকে সম্মতি জানাই। ফলস্বরূপ অন্তর্নির্মিত আউটপুট জন্য স্ট্রিং এ আবার কাস্ট করা হয়।



2

Zsh , 21 বাইট

<<<$[${1//[^0-9]/+0}]

এটি অনলাইন চেষ্টা করুন!

  ${1           }  # the 5is 108 seCONd4 a
  ${1//[^0-9]/+0}  # +0+0+0+05+0+0+0108+0+0+0+0+0+0+04+0+0
$[${1//[^0-9]/+0}] # 117

দুর্ভাগ্যক্রমে, বাশ অভিযোগ করে কারণ এটি অষ্টাল 0108হিসাবে ব্যাখ্যা করে । Zsh না (যতক্ষণ না setopt octalzeroes)


2

বাশ, 43 বাইট

for n in ${1//[!0-9]/ };{((s+=n));};echo $s

প্রতিটি অ-সংখ্যাকে একটি স্থানের সাথে প্রতিস্থাপন করে এবং তারপরে তাদের একত্রে যোগ করে।

-5 বাইট গ্যামা ফাংশন ধন্যবাদ



1
ধন্যবাদ! আমি আমার পোস্টটি সম্পাদনা করেছি
vityavv

1

পাইথন 3 , 63 59 56 বাইট

কেন না. বাধ্যতামূলক রেজেক্স উত্তর। পাইথন 2 ব্যবহার করে সম্ভবত 6 টি ডক করতে পারে তবে যা কিছু হোক। আমি আর মানচিত্র ব্যবহার না করে একটি বিভক্ত পদ্ধতির ব্যবহার করছি বলে আর প্রয়োগ হয় না।

import re;x=lambda y:eval('+'.join(re.findall('\d+',y)))

ব্যাখ্যা:

import re; # Import regex module
x=lambda y: eval(                                 ) # Run as Python code
                  '+'.join(                     ) # Joined by '+'
                            re.findall('\d+',y) # A list of all matches of regex \d+ in string y

এটি অনলাইন চেষ্টা করুন!


নিস! আপনার টিআইওতে আপনাকে তার z == l[1]পরিবর্তে ব্যবহার করা উচিত z is l[1]। সংখ্যাটি পর্যাপ্ত পরিমাণে পেলে বর্তমান কোড মিথ্যা negativeণাত্মক দিতে পারে।
Jakob

1

জাভা 10, 66 বাইট

এই থেকে একটি ল্যামডা হয় Stringথেকে int

s->{var r=0;for(var n:s.split("\\D"))r+=new Long("0"+n);return r;}

Gণাত্মক পূর্ণসংখ্যা সমর্থিত নয়। সম্ভবত এটি ঠিক আছে।

এটি অনলাইন চেষ্টা করুন

প্রাপ্তি স্বীকার


1
আপনি সুইচ করতে পারেন [^0-9]জন্য \Dকয়েক বাইট জন্য, এছাড়াও আপনি সুইচ করতে পারেন longএবং Stringজন্য var(আপনার কাছে রিটার্ন টাইপ পরিবর্তন করতে হবে যদিওint
অজ্ঞতা প্রতিমূর্তি

1

রুবি, 32 27 টি অক্ষর

->s{eval s.scan(/\d+/)*?+}

প্রাপ্তি স্বীকার


পিপিসিজিতে আপনাকে স্বাগতম! আপনি -7 বাইটের *?+পরিবর্তে ব্যবহার করতে পারেন .join ?+। দেখুন এআরওয়াই * Str
কোনোর ব্রায়েন

1

কিউবিক্স , 17 বাইট

?|i.I!/s+q;;>p.O@

এটি অনলাইন চেষ্টা করুন!

    ? |
    i .
I ! / s + q ; ;
> p . O @ . . .
    . .
    . .

এটি চালান দেখুন

একটি মোটামুটি সহজ। Iইন কিউবিক্স ইনপুটটিতে প্রথম পূর্ণসংখ্যা গ্রহণ করবে এবং এটিকে স্ট্যাকের দিকে ঠেলে দেবে। এটিতে সমস্ত অক্ষর এড়িয়ে যাওয়ার প্রভাব রয়েছে। এর বাকি অংশগুলি অতিরিক্তটির সাথে কাজ করে এবং ইনপুটটির শেষ সনাক্ত করে।

  • I! একটি পূর্ণসংখ্যা ইনপুট করুন এবং এটি 0 এর জন্য পরীক্ষা করুন
  • s+q;;শূন্য না হলে, টিওএস (বাহিনী এবং প্রাথমিক 0) অদলবদল করুন এবং যুক্ত করুন। স্ট্যাকের নীচে ফলাফলটি ধাকান এবং শীর্ষটি পরিষ্কার করুন। শুরুতে ফিরুন।
  • /i? শূন্য হলে, পুনর্নির্দেশ করুন এবং চেক করতে একটি অক্ষর ইনপুট করুন
  • |?;/যদি ধনাত্মক (অক্ষর) ডানদিকে প্রতিবিম্বে পরিণত হয় তবে এটি এটি চেকারের মাধ্যমে আবার ঠেলে ?দেয় এবং স্টোর থেকে ডানদিকে পপের দিকে ফিরে যায়, TOS এ 0 রেখে। আইপিটি আবার মূল লুপে পুনঃনির্দেশিত হয়।
  • I>p.O@ negativeণাত্মক (ইনপুট এর শেষ) বাম দিকে পরিণত হয়, পূর্ণসংখ্যার ইনপুট করুন, স্ট্যাকের নীচে উপরে, আউটপুট এবং থামান।






0

সংযুক্তি , 23 বাইট

Sum##N=>MatchAll&"\\d+"

এটি অনলাইন চেষ্টা করুন!

আরও আকর্ষণীয়, তবে পরোক্ষ, উত্তর (37 বাইট): {Sum!Reap[ReplaceF[_,/"\\d+",Sow@N]]}

ব্যাখ্যা

Sum##N=>MatchAll&"\\d+"

এটির ফর্মটি রয়েছে:

f##g=>h&x

যা প্রসারিত এবং প্রথম বন্ধনীতে পরিণত হয়:

f ## (g => (h&x))

##দুটি ফাংশন একসাথে রচনা করে, =>ডান ফাংশনের ফলাফলের উপর বাম ফাংশন ম্যাপিং একটি ফাংশন তৈরি করে এবং একটি ফাংশনের &একটি পক্ষের সাথে একটি যুক্তি বাঁধে। ইনপুট জন্য _, এটি সমান:

{ f[Map[g, h[_, x]]] }

প্রথমে, তারপরে, আমরা MatchAllঅঙ্কের অক্ষর ( \\d+) ব্যবহার করি। এর পরে, আমরা প্রতিটি রানটি Nফাংশনটি ব্যবহার করে সত্যিকারের পূর্ণসংখ্যায় রূপান্তর করি । অবশেষে, আমরা ব্যবহার করে এই সংখ্যাগুলির যোগফলটি নিই Sum


0

এপিএল (এনএআরএস), 13 টি অক্ষর, 26 বাইট

{+/⍎¨⍵⊂⍨⍵∊⎕D}

পরীক্ষা:

  f←{+/⍎¨⍵⊂⍨⍵∊⎕D}
  f 'the 5is 108 seCONd4 a'
117




0

জাভা 8, 53 130 বাইট

রেগেক্স আমদানির জন্য 105 বাইট + 25 বাইট

s->{long c=0;for(Matcher m=Pattern.compile("\\d+").matcher(s);m.find();c+=new Long(m.group()));return c;}

এটি অনলাইন চেষ্টা করুন!
ব্যাখ্যা

s->{                                                    // Lambda function
    long c=0;                                           // Sum is zero
    for(Matcher m=Pattern.compile("\\d+").matcher(s);   // Prepare regex matcher
        m.find();                                       // While the string contains unused matches...
        c+=new Long(m.group()));                        // Add those matches to the output
    return c;                                           // Return the output
   }

2
আমি এটি সঠিক বলে মনে করি না: ওপি-র (কেবলমাত্র) উদাহরণটি পরামর্শ দেয় যে একটানা সংখ্যার একক পূর্ণসংখ্যার গঠন করা উচিত, সুতরাং "123" আপনার কোডের মতো 6 নয়, 123 উত্পাদন করবে।
মিশেল

এটি দুর্ভাগ্যজনক, আমি যখন পারব তখন আমি পুনর্বিবেচনা করব
আরউখার্ট

@Michail সংশোধিত
বেঞ্জামিন Urquhart



0

পিপ , 6 বাইট

$+a@XI

Aণাত্মক -123পূর্ণসংখ্যা হিসাবে বিবেচনা করে। এটি অনলাইন চেষ্টা করুন!

  a     Command-line input
   @XI  Regex find all integers (XI is a variable predefined as the regex `-?\d+`)
$+      Fold on +

যদি হাইফেনগুলি বিয়োগ চিহ্ন হিসাবে বিবেচনা করার পরিবর্তে উপেক্ষা করা উচিত, তবে নিম্নলিখিতটি 7 বাইটের জন্য কাজ করে :

$+a@+XD

XDএর জন্য একটি প্রসেট ভেরিয়েবল `\d`; এটিতে 1 বা ততোধিক সংখ্যার সাথে মেলে তৈরি +XDকরে এতে রেজেক্স +সংশোধক যুক্ত করে ।


0

জাভা (জেডিকে) , 98 94 93 বাইট

s->java.util.Arrays.stream(s.split("\\D")).filter(t->!t.isEmpty()).mapToLong(Long::new).sum()

এটি অনলাইন চেষ্টা করুন!

-4 bytesLong::newপরিবর্তে ব্যবহার করে Long::valueOf
-1 byteরেজেক্স সংক্ষিপ্ত করে - যদি আমরা ইতিমধ্যে পরে খালি স্ট্রিংগুলি সরিয়ে ফেলি, বিভাজন ভাল হয় তখন কিছু অতিরিক্ত তৈরি করে।

ব্যাখ্যা

s->                            // Lambda (target type is ToLongFunction<String>)
    java.util.Arrays.stream(   // Stream the result of
        s.split("\\D")        // splitting on non-digits
    )
    .filter(t->!t.isEmpty())   // Discard any empty strings
    .mapToLong(Long::new)      // Convert to long
    .sum()                     // Add up the stream's values.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.