ফিল্টার আউট এবং যোগ করুন


16

কার্য

কাজটি খুব সাধারণ। সংখ্যা , বড় হাতের অক্ষর এবং ছোট হাতের অক্ষরযুক্ত একটি খালি খালি স্ট্রিং দেওয়া হয়েছে , অবশিষ্ট সংখ্যাগুলির যোগফল আউটপুট করে। উদাহরণ স্বরূপ:

a1wAD5qw45REs5Fw4eRQR33wqe4WE

সমস্ত অক্ষর ছাঁকানো এর ফলাফল:

 1   5  45   5  4    33   4

এই সংখ্যার যোগফল 1 + 5 + 45 + 5 + 4 + 33 + 4 = 97। সুতরাং আউটপুট হবে 97

পরীক্ষার কেস

a > 0
0 > 0
5 > 5
10 > 10
a0A > 0
1a1 > 2
11a1 > 12
4dasQWE65asAs5dAa5dWD > 79
a1wAD5qw45REs5Fw4eRQR33wqe4WE > 97

এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমা দেওয়া!


আমি জানতাম আমি এর আগে ল্যাবরেথ প্রোগ্রামটি লিখেছিলাম ... এখানে একই চ্যালেঞ্জ কিন্তু negativeণাত্মক সংখ্যার সাথেও (যা কিছু ভাষার ক্ষেত্রে আশ্চর্যজনকভাবে বড় পার্থক্য করে, তাই আমি মনে করি না যে তারা দু'দ্বীপ)।
মার্টিন এন্ডার

@ মার্টিনব্যাটনার দেখে মনে হচ্ছে যে এটিতে নেতিবাচক সংখ্যা অন্তর্ভুক্ত নেই: "-n (যেখানে এন একটি পূর্ণসংখ্যা হয়) negativeণাত্মক এন হিসাবে গণনা করা হয় না, তবে এন এর পরে হাইফেন হিসাবে গণ্য হয়।"
পল

ওহ, আমি আপনাকে বলতে চাইছি কি। আপনি বলছেন এটির হাইফেন রয়েছে এবং এটির নেই।
পল

উত্তর:


22

জিএস 2, 2 বাইট

Wd

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

কিভাবে এটা কাজ করে

W     Read all numbers.
      For input x, this executes map(int, re.findall(r'-?\d+', x)) internally.
 d    Compute their sum.

11
ঠিক আছে, এটি অপ্রত্যাশিত ছিল ...
আদনান

@ আদনান: এটি ডেনিস। পর্যাপ্ত সময় দেওয়া তিনি 4 বাইটেরও কম কোনও কোড গল্ফের সমাধান পেতে পারেন।
দেউসোভি

13

ভোল্টেজ , 8 বাইট

পাই, পাইথ ...

?+
;,;!@

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

ব্যাখ্যা

সাধারণ প্রাইমার (এসপি 3000 থেকে চুরি):

  • ভোল্টেজটি 2 ডি এবং স্ট্যাক-ভিত্তিক। স্ট্যাকের নীচে অসংখ্য শূন্য রয়েছে z
  • যখন নির্দেশ পয়েন্টারটি কোনও জংশনে পৌঁছে যায়, তখন এটি কোথায় স্ট্রাক্ট করতে হবে তা নির্ধারণের জন্য স্ট্যাকের শীর্ষটি পরীক্ষা করে। নেতিবাচক বাম, শূন্য এগিয়ে এবং ধনাত্মক ডান।

এখানে সত্যই কার্যকর যা আসে তা হ'ল লাইব্রের্থের দুটি আলাদা ইনপুট কমান্ড রয়েছে, , এবং ?। প্রাক্তনটি এসটিডিএন থেকে বা ইওএফ থেকে একটি একক বাইট পড়েন -1। পরেরটি STDIN থেকে একটি পূর্ণসংখ্যা পড়ে। এটি তাই সবকিছু যে কুঁদন নেই নয় একটি সংখ্যা এবং তারপর খুঁজে বের করে প্রথম দশমিক সংখ্যা পড়ে। এটি 0ইওএফ-এ ফিরে আসে , তাই আমরা এখানে ইওএফের জন্য নির্ভরযোগ্যভাবে পরীক্ষা করতে এটি ব্যবহার করতে পারি না।

প্রোগ্রামটির প্রধান লুপটি এই কমপ্যাক্ট বিট:

?+
;,

সঙ্গে ? আমরা একটি পূর্ণসংখ্যা (সমস্ত অক্ষর উপেক্ষা) পড়ুন সঙ্গে +আমরা চলমান মোট (যা স্ট্যাকের নীচে অন্তর্নিহিত শূন্যর এক হিসাবে আরম্ভ আউট) এটি যোগ করুন। তারপরে আমরা ,ইওএফ পরীক্ষা করার জন্য আরও একটি চরিত্র পড়ি । যতক্ষণ আমরা ইওএফ তে নেই, পঠিত অক্ষরটি এমন একটি চিঠি হবে যার ইতিবাচক অক্ষর কোড রয়েছে, সুতরাং আইপি ডানদিকে ঘুরবে (তার দৃষ্টিকোণ থেকে; অর্থাৎ পশ্চিম দিকে)। ;চরিত্রটি বাতিল করে দেয় কারণ আমাদের এটির প্রয়োজন নেই এবং তারপরে আমরা আবার লুপটি প্রবেশ করি।

আমরা যখন ইওএফ এ এসেছি, তখন ,একটি টিপুন -1যাতে আইপি বাম দিকে (পূর্ব) দিকে পরিবর্তিত হয়। ;আবার তা বাতিল করে দেয় -1, !চলমান মোটটিকে পূর্ণসংখ্যা হিসাবে মুদ্রণ করে এবং @প্রোগ্রামটি সমাপ্ত করে।


মার্টিন দুর্দান্ত জিনিস!
এ সিমন্স

6

সিজেম, 13 বাইট

ডেনিসকে ধন্যবাদ ছাড়াই ইনপুট নিয়ে কাজ করার জন্য স্থির! কোড পয়েন্ট above৪ এর উপরে ASCII এর অ্যারের সাথে অক্ষরগুলির অ্যারে প্রতিস্থাপন করে একটি বাইট সংরক্ষণ করা হয়েছে And এবং তারপরে ডেনিস দ্বারা সংরক্ষণ করা অন্য একটি বাইট!

q_A,s-Ser~]1b

অক্ষর থেকে স্পেসে সরল লিখিত রচনা, তারপরে স্পষ্ট এবং যোগফল। এটি অনলাইনে চেষ্টা করুন



5

রেটিনা ,22 11

\d+
$0$*1
1

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

11 বাইট (!) মার্টিনকে ধন্যবাদ রক্ষা করেছে!

মূলত কেবল দশমিক দশকে আনারি করে তারপর গণনা করুন 1


1
$0প্রতিস্থাপন শুরু হলে আমার সম্ভবত অন্তর্নিহিত করা উচিত $*। এটি একটি খুব সাধারণ প্যাটার্ন এবং এটি আপনাকে পাইথকে পরাস্ত করতে দেয়। ;)
মার্টিন এন্ডার

@ মার্টিনব্যাটনার আপনি যখন এটির দিকে ছিলেন তখন আপনি কোনও কিছুর জন্যও সঠিক চরিত্রটিকে ডিফল্ট করে তুলতে পারেন: O
FryAmTheEggman

এইচএম, খারাপ ধারণা নয়। আমি এটা সম্পর্কে চিন্তা করব.
মার্টিন এন্ডার

5

জাপট, 2 বাইট

Nx

এটি অনলাইন পরীক্ষা!

কিভাবে এটা কাজ করে

N    // Implicit: N = (parse input for numbers, "strings", and [arrays])
x    // Sum. Implicit output.

আমি একটি ত্রুটি পাচ্ছি "জাপট.স্টডআউট" অবশ্যই একটি এইচটিএমলেমেন্ট
ডাউঙ্গোট

@ ডাউনগোট এই ঘটনা মাঝে মধ্যে ঘটে; আমি নিশ্চিত না কেন। পৃষ্ঠাটি পুনরায় লোড করা এটি ঠিক করছে বলে মনে হচ্ছে।
ইটিএইচ প্রডাকশনগুলি

5

জাভাস্ক্রিপ্ট ES6, 35 বাইট

s=>eval(s.replace(/\D+/g,'+')+'.0')

কিভাবে এটা কাজ করে

প্রথমত, আমরা অ-অঙ্কের প্রতিটি স্ট্রিং এর সাথে প্রতিস্থাপন করি "+"। এখানে মূলত চারটি ভিন্ন উপায় রয়েছে যার মাধ্যমে এটি শেষ হতে পারে:

1. 1b23c456   => 1+23+456
2. a1b23c456  => +1+23+456
3. 1b23c456d  => 1+23+456+
4. a1b23c456d => +1+23+456+

মামলা 1 এবং 2 ইতিমধ্যে যত্ন নেওয়া হয়। তবে আমাদের কোনওভাবে শেষটি ঠিক করা দরকার +যাতে এটি কোনও ত্রুটির সৃষ্টি না করে। আমরা এটি দিয়ে মুছে ফেলতে পারি .replace(/\+$,""), তবে এটি খুব ব্যয়বহুল। আমরা 0শেষের দিকে একটি সংযোজন করতে পারি , তবে এটি শেষ সংখ্যাটিকে প্রভাবিত করবে যদি স্ট্রিংটি একটি দিয়ে শেষ না হয় +। একটি আপস হ'ল সংযোজন .0, যা উভয় নিজস্ব বৈধ সংখ্যা এবং অন্যান্য পূর্ণসংখ্যার মানকে প্রভাবিত করে না।

এখানে আরও কয়েকটি মান রয়েছে যা কাজ করবে:

.0
-0
 +0
-""
-[]
0/10
0e-1
.1-.1

বিকল্প সংস্করণ, এছাড়াও 35 বাইট

s=>s.replace(/\d+/g,d=>t+=+d,t=0)|t

আরেকটি বিকল্প সংস্করণ, 36 বাইট

s=>s.split(/\D/).map(d=>t+=+d,t=0)|t

4

পাইথ, 12 11 10 বাইট

ssM:z"\D"3
    z        autoinitialized to input()
   : "\D"3   split on non-digits
 sM          convert all elements of resulting array to ints
s            sum

ভাগ্যক্রমে, খালি স্ট্রিংয়ের সাথে প্রয়োগ করার সময় s(রূপান্তরগুলিতে রূপান্তরিত হয়) ফিরে আসে 0, সুতরাং আমাকে split("a1b", "\D+")ফিরে আসার বিষয়টি নিয়ে চিন্তা করতে হবে না ["", "1", ""]। একইভাবে, split("a", "\D+")রিটার্ন ["", ""]

এমনকি আমাকে যে অ অঙ্ক আলাদা করে বিভক্ত করতে পারবেন যেহেতু 1 + 0 + 0 + 0 + 0 + 2হিসাবে একই জিনিস 1 + 2

টমাস কোওয়া কে বাইটের জন্য ধন্যবাদ !


4

গোল> <> , 4 বাইট

iEh+

এত সংক্ষেপে আমার ডামি পাঠ্য দরকার ...


3
সম্ভবত আপনার অতিরিক্ত স্থান সহ আপনার কোডটি ব্যাখ্যা করা উচিত :)
nneonneo


3

জেলি, 6 বাইট

&-ṣ-ḌS

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

কিভাবে এটা কাজ করে

&-ṣ-ḌS  Main link. Input: L (string)

&-      Take the bitwise AND of L's characters and -1.
        This attempts to cast to int, so '0' & -1 -> 0 & -1 -> 0.
        On failure, it returns the integer argument (if any), so 'a' & -1 -> -1.
  ṣ-    Split the resulting list at occurrences of -1.
    Ḍ   Convert each chunk from decimal to integer. In particular, [] -> 0.
     S  Compute the sum of the results.

3

পার্ল, 21 + 1 = 22 বাইট

$_=eval join"+",/\d+/g

-pপতাকা প্রয়োজন :

$ perl -pe'$_=eval join"+",/\d+/g' <<< 'a1wAD5qw45REs5Fw4eRQR33wqe4WE'
97

কোন সংখ্যা নেই যখন এই কাজ করে? যেমন a?
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান ভাল প্রশ্ন, আমি অনুমান করি যে এটি এমন কোনও প্রিন্ট করবে না যা সংখ্যার প্রেক্ষাপটে 0;-)
andlrc

3

জুলিয়া, 35 বাইট

s->sum(parse,matchall(r"\d+","0"s))

এটি একটি বেনাম ফাংশন যা একটি স্ট্রিং গ্রহণ করে এবং পূর্ণসংখ্যা ফেরত দেয়। এটি কল করতে, এটি একটি ভেরিয়েবলের জন্য বরাদ্দ করুন।

আমরা matchallনিয়মিত প্রকাশের ম্যাচের সমন্বয়ে একটি অ্যারে পেতে ব্যবহার করি \d+যা স্ট্রিংয়ের মধ্যে কেবল পূর্ণসংখ্যা। স্ট্রিংয়ের সামনের দিকে আমাদের 0 টি করতে হবে, অন্যথায় এর মতো ক্ষেত্রে "a"আমরা একটি খালি অ্যারে জুড়ে দিতে চাই, যা ত্রুটির কারণ হয়ে দাঁড়ায়। তারপরে আমরা parseপ্রতিটি স্ট্রিং ম্যাচে আবেদন করি যা পূর্ণসংখ্যায় রূপান্তরিত হয় এবং যোগফলটি গ্রহণ করে।


parseintআপনি অবমূল্যায়নের সতর্কতাটিকে আপত্তি না জানলে হয়ে উঠতে পারে।
ডেনিস

@ ডেনিস আমি যদিও করি _
অ্যালেক্স এ।

2

পিএইচপি, 64 বাইট

<?php preg_match_all("/\d+/",$argv[1],$a);echo array_sum($a[0]);

এটি হিসাবে চালান

php -f filterOutAndAddUp.php <test_case>

https://eval.in/517817


প্রোগ্রামিং ধাঁধা এবং স্ট্যাক এক্সচেঞ্জে আপনাকে স্বাগতম। এটি একটি দুর্দান্ত উত্তর (+1), তবে কোড ব্যাখ্যা এবং ব্রেকডাউন যুক্ত করে এটি উন্নত করা যেতে পারে। এছাড়াও, আপনি কি <?পরিবর্তে ব্যবহার করতে পারেন <?php?
wizzwizz4

2

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

s=>eval((s.match(/\d+/g)||[0]).join`+`)


2

গণিত, 51 বাইট

Total@ToExpression@StringCases[#,DigitCharacter..]&

ম্যাথমেটিকা ​​বিল্টিনস শব্দটির ভুল ক্রিয়াটি ধরা হচ্ছে। @ ডেভিডসির সাহায্যে 1 বাইট অফ করুন


DigitCharacter ..1 বাইট সংরক্ষণ করবে
ডেভিডসি

DigitCharacterলিখিত হিসাবে কাজ করে না কারণ এটি সমস্ত অঙ্ক সরিয়ে দেয় যেখানে আমরা সমস্ত অক্ষর মুছে ফেলতে চাই ...
একটি সিমন্স

1
তুমি ঠিক. আমি ভাবছিলামTotal@ ToExpression@StringCases[#, DigitCharacter ..] &
ডেভিডসি

আমি দেখি! হ্যাঁ এই পরিবর্তনটি একটি বাইট সংরক্ষণ করে।
একটি সিমন্স

2

আর, 46 43 বাইট

sum(strtoi(strsplit(scan(,''),'\\D')[[1]]))

ব্যাখ্যা

                    scan(,'')                  # Take the input string
           strsplit(         ,'\\D')           # Returns list of all numeric parts of the string
                                    [[1]]      # Unlists to character vector
    strtoi(                              )     # Converts to numeric vector
sum(                                      )    # Sums the numbers

নমুনা রান

> sum(strtoi(strsplit(scan(,''),'\\D')[[1]]))
1: a1wAD5qw45REs5Fw4eRQR33wqe4WE
2: 
Read 1 item
[1] 97

সম্পাদনা করুন: দিয়ে প্রতিস্থাপন [^0-9]করা হয়েছে \\D


প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম। এটি একটি দুর্দান্ত প্রথম উত্তর; তবে কোডের ব্যাখ্যা এবং ব্রেকডাউন যুক্ত করে এটি উন্নত হবে, সুতরাং আমরা জানি যে এটি কীভাবে কাজ করে।
wizzwizz4

1

পাওয়ারশেল, 28 26 বাইট

$args-replace"\D",'+0'|iex

ইনপুট নেয় $argsতারপরে -replaceঅক্ষরগুলি অদলবদলের জন্য একটি রেজেেক্স করে +0, তারপরে পাইপগুলি iex(এর জন্য সংক্ষিপ্ত Invoke-Expressionএবং অনুরূপ eval)।

PS C:\Tools\Scripts\golfing> .\filter-out-and-add-up.ps1 'a1wAD5qw45REs5Fw4eRQR33wqe4WE'
97

বিকল্পভাবে

যদি আপনি কিছু এক্সটারনেস আউটপুট দিয়ে ঠিক থাকেন তবে আপনি নিম্নলিখিতটিও করতে পারেন 28 26 বাইটে:

$args-split"\D"|measure -s

এটি ইনপুট স্ট্রিংটি নেবে $argsএবং -splitএটি অ-সংখ্যাগুলিতে অ্যারে-অফ-স্ট্রিংগুলিতে নিয়ে যাবে (তাদের প্রক্রিয়াতে অপসারণ করবে)। উদাহরণস্বরূপ, 1a2b33পরিণত হবে ['1','2','33']। আমরা Measure-Objectএটি -Sumপ্যারামিটার দিয়ে পাইপ করি । আউটপুট নীচের মত হবে:

PS C:\Tools\Scripts\golfing> .\filter-out-and-add-up.ps1 'a1wAD5qw45REs5Fw4eRQR33wqe4WE'

Count    : 21
Average  : 
Sum      : 97
Maximum  : 
Minimum  : 
Property : 

সম্পাদনা করুন - দুর, [ ]আমি আর সম্ভাব্য ম্যাচের তালিকাকে নির্দিষ্ট করে দিচ্ছি না বলে রেজিজেসে দরকার নেই ...



1

গম্ভীরভাবে, 13 বাইট

,ú;û+@s`≈`MΣl

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

ব্যাখ্যা:

,ú;û+@s`≈`MΣl
,              push input
 ú;û+          push "abc...zABC...Z" (uppercase and lowercase English letters)
     @s        split on letters
       `≈`M    convert to ints
           Σ   sum
            l  length (does nothing to an integer, pushes 0 if an empty list is left, in the case where the string is all letters)

@ অ্যাডনান ভাল ক্যাচ - এটি খালি তালিকাটি আউটপুট করে a। ওয়ান-বাইট ফিক্স হওয়া উচিত।
মেগো


1

টিআই-বেসিক, 106 বাইট

টিআই -83 / 84 ক্যালকুলেটরগুলিতে কাজ করে!

Input Str1
"{0,→Str2
Str1+"N0→Str1
For(I,1,length(Ans
sub(Str1,I,1
If inString("0123456789",Ans
Then
Str2+Ans→Str2
Else
If ","≠sub(Str2,length(Str2),1
Str2+","→Str2
End
End
sum(expr(Ans

1

ক্লোজার / ক্লোজার স্ক্রিপ্ট, 35 বাইট

#(apply +(map int(re-seq #"\d+"%)))

1

আর, 50 বাইট

gsubfnইনস্টল করা প্রয়োজন

sum(gsubfn::strapply(scan(,''),'\\d+',strtoi)[[1]])

ব্যবহার strtoiসাংখ্যিক করতে বাধ্য করতে


1

রুবি 45 বাইট

$*[0].split(/[a-z]/i).map(&:to_i).inject 0,:+

(কাজের প্রথম প্রচেষ্টা, এটি আবার দেখাবে)


1

POSIX sh + tr + ডিসি, 27 25 বাইট

dc -e "0d`tr -sc 0-9 +`p"

অ-অঙ্কের যে কোনও রান (টার্মিনেটিং নিউলাইন সহ) +অপারেটরে রূপান্তরিত করে , দুটি শূন্যকে স্ট্যাকের দিকে ঠেলে দেয় (ক্ষেত্রে যদি ইনপুটটি অ-অঙ্কের সাথে শুরু হয়), সেগুলি সমস্ত যুক্ত করে এবং ফলাফল মুদ্রণ করে। স্ট্যাকের নীচে একটি অতিরিক্ত শূন্য থাকতে পারে, তবে আমরা এটির যত্ন নিই না।


1

লুয়া, 51 বাইট

একবারের জন্য খুব সুন্দর! জাভা থেকেও খাটো! এটি কাজ করার জন্য ইনপুট অবশ্যই একটি কমান্ড-লাইন আর্গুমেন্ট হতে হবে।

a=0 arg[1]:gsub("%d+",function(c)a=a+c end)print(a)

Ungolfed

a=0                 -- Initialize the sum at 0
arg[1]:gsub("%d+",  -- capture each group of digits in the string
  function(c)       -- and apply an anonymous function to each of them
  a=a+c             -- sums a with the latest group captured
end)               
print(a)            -- output a

1

বাশ + জিএনইউ ইউটিলিটিস, 29

grep -Eo [0-9]+|paste -sd+|bc

যদি কোনও সংখ্যা ছাড়াই ইনপুট সমর্থন করা প্রয়োজন (যেমন, উদাহরণস্বরূপ) a ) তবে আমরা এটি করতে পারি:

বাশ + জিএনইউ ইউটিলিটিস, 38

1 টাইট @ টবিস্পাইটকে ধন্যবাদ বাঁচিয়েছে।

(grep -Eo [0-9]+;echo 0)|paste -sd+|bc

এটি ইনপুট জন্য কিছুই মুদ্রণ aআমরা বর্তমানে এটি বৈধ কিনা তা নিয়ে আলোচনা করছি
ডেনিস

@Dennis। ঠিক আছে. উভয় ঘটনাবস্তু coverাকতে আমি অন্য সংস্করণ যুক্ত করেছি।
ডিজিটাল ট্রমা

আপনি কোনও ক্ষতি ছাড়াই সর্বদা শূন্য যুক্ত করার ;পরিবর্তে ব্যবহার করতে পারেন ||
টবি স্পিড

@ টবিস্পাইট হ্যাঁ, ভাল - ধন্যবাদ!
ডিজিটাল ট্রমা

1

পাইথন 2, 70 বাইট

আমি মজাদার জন্য পাইথন উত্তর দিচ্ছি।

import re
j=0
for i in map(int,re.findall('\d+',input())):j+=i
print j

ইনপুটটিতে সমস্ত সংখ্যা খুঁজে পেতে খুব সহজ এবং রেজেেক্স ব্যবহার করে। এটি অনলাইন চেষ্টা করুন!


1
এই প্রসঙ্গে আপনাকে raw_inputপাইথন 3 ব্যবহার করতে হবে বা স্যুইচ করতে হবে। একটি ক্ষুদ্র সংস্করণ (py3, 56 বাইট): import re;print(sum(map(int,re.findall('\d+',input()))))
ডিকা 14

1

ওরাকল এসকিউএল 11.2, 105 বাইট

SELECT NVL(SUM(TO_NUMBER(COLUMN_VALUE)),0)FROM XMLTABLE(('"'||regexp_replace(:1,'[a-zA-Z]','","')||'"'));

রেজেক্স আলফা অক্ষরগুলিকে ',' তে রূপান্তর করে

এক্সএমএল টেবিল পৃথক হিসাবে ',' ব্যবহার করে স্ট্রিংয়ে প্রতি আইটেমের জন্য একটি সারি তৈরি করে।

ফলাফল পেতে সারি সুম করুন।

কোনও সংখ্যা ছাড়াই স্ট্রিংয়ের জন্য অ্যাকাউন্টে এনভিএল প্রয়োজন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.