'A' এবং 'Y' ​​এর মতো অ-সংখ্যাসূচক দ্বারা পৃথক স্ট্রিংয়ের পূর্ণসংখ্যার যোগফল


14

একটি প্রোগ্রাম তৈরি করুন যা স্ট্রিংয়ের মধ্যে পাওয়া সমস্ত পূর্ণসংখ্যার সমান হয় যা প্রোগ্রামে ভেরিয়েবল হিসাবে সেট করা হয় (এইভাবে প্রোগ্রামটির কোনও ইনপুট হ্যান্ডেল করতে হয় না)। পূর্ণসংখ্যার সংখ্যাগুলি অ-সংখ্যাসূচক দ্বারা পৃথক করা হয় (0, 1, 2, 3 ... 9 ব্যতীত অন্য কিছু)।

উদাহরণ:

  • e7rde f ,fe 43 jfj 54f4sD = 7 + 43 + 54 + 4 = 108
  • 5 = 5
  • 64 545,5445-32JIFk0ddk = 64 + 545 + 5445 + 32 + 0 = 6086
  • 0ab0 = 0 + 0 = 0

অতিরিক্ত নোট:

  • ইউনিকোড সমর্থন প্রয়োজনীয় নয় , তবে অনুমোদিত
  • -n(যেখানে nপূর্ণসংখ্যা হয়) এটি নেতিবাচক হিসাবে গণ্য করা হয় নাn , তবে এটি একটি হাইফেন হিসাবে অনুসরণ করা হয় n

উত্তরটি স্ক্রিনে মুদ্রিত হতে পারে (তবে প্রয়োজন নেই)।

সংক্ষিপ্ত উত্তর (চরিত্রগুলিতে) জয়।


আমাদেরও কি ফলাফল ছাপানো উচিত? (আপনি কোন আই / ও উল্লেখ করেন না)
উইল ই। কোয়েট

@ ডগবার্ট - আমি সে সম্পর্কে ভাবিনি। দুঃখিত, হ্যাঁ পোস্টটি আপডেট করব।
Anto

এটি ইতিমধ্যে পরিবর্তন হয়েছে কারণ কিছু লোকের ইতিমধ্যে উত্তর ছিল এবং তাদের "আঘাত" করতে চায় না। আমি, এখন ঘুমাতে উচিত তাই আমি একটু পরিস্কার মনে হবে অনুমান;)
Anto

2
এন্টো: কোনও কাজ যেখানে কোনও সমাধানের মতো পর্যবেক্ষণযোগ্য পার্শ্ব-প্রতিক্রিয়া নেই সেগুলি খুব সুন্দর নয়।
জোয়

একটি আকর্ষণীয় পরীক্ষার কেস যা আমি সবেমাত্র চালিয়েছি তা হ'ল 5a-3(আমার কোডটি -যদি তাৎক্ষণিকভাবে কোনও সংখ্যার অনুসরণ করে তবে এড়িয়ে যাবে, তবে এটির আগে কোনও অ-সংখ্যা আছে কিনা)।
মার্টিন এন্ডার

উত্তর:



14

রুবি 1.9, 21 টি অক্ষর

eval a.scan(/\d+/)*?+

স্ট্যাডআউটে সমাধান মুদ্রণের জন্য, আরও 2 টি অতিরিক্ত অক্ষর প্রয়োজন:

p eval a.scan(/\d+/)*?+

এবং পূর্বনির্ধারিত ভেরিয়েবল ব্যবহার না করে স্টিডিন থেকে পড়তে আরও 3 টি অক্ষর ব্যবহার করতে হবে:

p eval gets.scan(/\d+/)*?+

রুবি 1.8 জন্য প্রতিস্থাপন ?+সঙ্গে "+"22 অক্ষর ওয়ার্কিং সমাধান পেতে।


ইনপুটটি স্টিডিন নয়, একটি ভেরিয়েবল থেকে নেওয়ার কথা। এর scanচেয়ে ছোটও split। সুতরাং আপনার সমাধান হয়ে যায় eval s.scan(/\d+/)*?+- 21 টি অক্ষর।
sepp2k

@ sepp2k: হ্যাঁ, বর্ণনাটি সঠিকভাবে পড়েনি। আমি কেবল অন্যান্য গল্ফ-টাস্কগুলিতে অভ্যস্ত, যেখানে আপনাকে সাধারণত স্টিডিন থেকে স্টাডআউট পড়তে হয় to সাথে সৌভাগ্য বিন্দু scan, ধন্যবাদ!
ভেন্টোরো

+1, এর দুর্দান্ত ব্যবহার evalএবং* '+'
উইল ই। কোয়েট


5

রুবি - 36 34 অক্ষর

s.scan(/\d+/).map(&:to_i).reduce:+

ফলাফল ছাপতে চাইলে 36 টি অক্ষর।

p s.scan(/\d+/).map(&:to_i).reduce:+

ধরে নিই ইনপুটটি স্ট্রিং হিসাবে উপস্থিত রয়েছে।


4

জাভাস্ক্রিপ্ট (ES6), 30

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

টীকাগুলি সংস্করণ:

// Store the sum.
c=0,
// Process every number found in the `s`.
s.replace(/\d+/g,
  // Convert the number into an integer.
  // Add it to the sum.
  d => c += +d
)

3

উইন্ডোজ পাওয়ারশেল, 23 25 29 31

আউটপুট সহ।

$x-replace'\D','+0'|iex

আসলে, আউটপুট ছাড়াই হুবহু একই রকম, আপনি যেখানে এটি প্রয়োজন সেখানে অন্য কোথাও পাইপ লাগিয়েছেন।


2

জে - 40 38 টি অক্ষর

অলস সংস্করণ। স্ট্রিং গ্রন্থাগার প্রয়োজন।

+/".(,' ',.~a.-.'0123456789')charsub y

ইউনিকোড সমর্থন করে। এনকোডিং সমর্থন করে, এটি চিন্তা করতে আসা!
এমপিলেটিয়ার

2

জাভা

প্রতিযোগিতার বাইরে;)

public static long sum(String s) {
    long sum = 0;
    String p = "";
    char[] ch = s.toCharArray();
    for (int i = 0; i < ch.length; i++) {
        boolean c = false;
        if (Character.isDigit(ch[i])) {
            if (i + 1 < ch.length) {
                if (Character.isDigit(ch[i + 1])) {
                    p += ch[i];
                    c = true;
                }
            }
            if (!c) {
                p += ch[i];
                sum += Integer.valueOf(p);
                p = "";
                c = false;
            }
        }
    }
    return sum;
}


2

ল্যাবরেথ , 29 21 বাইট

(অস্বীকৃতি: এই চ্যালেঞ্জের চেয়ে ভুলে যাওয়া ভ্রমনপথ নতুন))

এছাড়াও, লাইব্রের্থের ভেরিয়েবলগুলি নেই, তাই আমি একটি সাধারণ ইনপুট / আউটপুট প্রোগ্রাম নিয়ে গিয়েছিলাম।

)_"+`
( "?"
";;,;;(!@

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

সমাধানের জন্য এখানে কিছু সিউডোকোড:

running total = 0
while(true)
  while(true)
    try reading a non-zero integer N with ?
    if(N < 0)
      running total -= N
    else if(N > 0)
      running total += N
    else
      break
  // We've either read a zero or hit a something that isn't a number
  try reading a character with ,
  if(that returned -1)
    break
print running total

নেতিবাচক সংখ্যার সাথে ডিল করা সঠিকভাবে এই সমাধানটিকে জটিল করে তোলে। যদি এটি না হয় তবে আমার এই 8-বাইট সমাধানটি ছিল:

?+
;,;!@


1

পার্ল, 16 টি অক্ষর

s/\d+/$r+=$&/ge;

ইনপুট নেয় $_, আউটপুট চলে $r। সর্বশেষ সেমিকোলন অতিরিক্ত অতিরিক্ত, তবে প্রোগ্রামটি যখন আরও বেশি কাজ করে তখন সম্ভবত এটির প্রয়োজন হবে। say$rআউটপুট জন্য যোগ করুন ।


ওফস, আমি পোস্ট করার সময় আপনার ঠিক একই উত্তরটি দেখেনি। যদিও আমি সেমিকোলন ব্যতীত একটি চরিত্রকে আরও গুনেছি।
জেবি

@ জেবি: আমি গণনা করতে পারি না! : P: P। আসলে, আমি একটি ডাবল উদ্ধৃত স্ট্রিং প্রতিধ্বনি করতে ভুল করেছি wc -c
নিনজালজ

1

জে - 23 চর

কোনও বিজয়ী নয়, তবে আমরা ক্রিয়াতে মোটামুটি বিরল আদিম দেখতে পাচ্ছি।

+/".(,_=_"."0 y)}y,:' '

ব্যাখ্যা:

  • _"."0 y- ইনপুট স্ট্রিংয়ের প্রতিটি চরিত্রের জন্য y, এটি একটি সংখ্যা হিসাবে পড়ার চেষ্টা করুন। যদি আপনি না পারেন তবে _পরিবর্তে ডিফল্ট মান (অনন্ত) ব্যবহার করুন।

  • ,_=- প্রতিটি ফলাফলের সমতার জন্য পরীক্ষা করুন _এবং তারপরে 0 এবং 1 এর চূড়ান্ত অ্যারেটি ভেক্টরে চালান। ( "."0ফলাফলটিতে সর্বদা একটি খুব বেশি মাত্রা যুক্ত করে, তাই আমরা তার জন্য এখানে সংশোধন করি))

  • y,:' ' - ইনপুট স্ট্রিংয়ের নীচে এক সারি স্পেস যুক্ত করুন Add

  • }- এটি এখানে যেমন রয়েছে তেমন ব্যবহৃত হয়, }তাকে আইটেম সংশোধন করা হয় এবং ডান যুক্তি থেকে আঁকতে সারিটি নির্বাচন করতে সূচী হিসাবে এটি বামদিকে 0 এবং 1 এর তালিকা ব্যবহার করে। সুতরাং যা ঘটে তা হ'ল ডান দিকের প্রতিটি কলামের জন্য, আমরা মূল চরিত্রটি গ্রহণ করি যদি এটি একটি সংখ্যা হিসাবে পাঠ করা যায় এবং অন্যথায় আমরা এর নীচে স্থানটি নিয়ে যাই। অতএব, আমরা স্পেস সহ যে কোনও অ-সংখ্যাসূচক অক্ষর আবরণ করি।

  • +/". - এখন এই পুরো স্ট্রিংটিকে সংখ্যার তালিকায় রূপান্তর করুন এবং তাদের যোগফল দিন।


1

জিএস 2, 4 বাইট

W#Θd

সিপি 437 এ এনকোড হয়েছে ; তৃতীয় বাইট হয়E9

W/-?\d+/একটি স্ট্রিং থেকে সমস্ত সংখ্যা পড়ে , নিখুঁত মান মানচিত্র,d অঙ্কগুলি।

(জিএস 2, এটিও এই চ্যালেঞ্জের চেয়ে নতুন তবে এটির read-numsআদেশটি সম্পূর্ণ কাকতালীয়))


0

স্মলটাক (ছোট্ট / এক্স) (৫ টি চর)

রেজেক্স প্যাকেজ ব্যবহার করে:

(s regex:'\d+' matchesCollect:[:n|n asNumber])sum

ওও রেজেক্স:

((s asCollectionOfSubCollectionsSeparatedByAnyForWhich:[:c|c isDigit not]) map:#asNumber)sum

ইন ইনপুট



0

জাভাস্ক্রিপ্ট - 43 অক্ষর

আমি জানি এটি দীর্ঘ, তবে কোনও জেএস সমাধান ছিল না :)

c=0
a=a.split(/[^\d]/g)
for(i in a)c+=+a[i]

aস্ট্রিং হয়। cউত্তর আছে।


0

টিসিএল, 30

expr [regsub -all \\D+ $a.0 +]

এটি ধরে নেওয়া হয় যে ইনপুটটি পরিবর্তনশীল $a(আনুষ্ঠানিকভাবে, ইন a) এ রয়েছে এবং উত্তরটি অনুবাদকের ফলাফলের মধ্যে সঞ্চয় করে। I / O অনুশীলন হিসাবে বাকি আছে।


0

এপিএল, 16 বাইট

{+/⍎b\⍵/⍨b←⍵∊⎕d}

⎕dঅঙ্কগুলি (0-9) সমেত একটি অন্তর্নির্মিত। b0/1 এর একটি ভেক্টরকে বরাদ্দ করা হয় যেখানে 1 টি অক্ষরের অক্ষরে দেওয়া হয়। bপ্রদত্ত অক্ষর অ্যারে সংকোচনের জন্য ব্যবহৃত হয় এবং তারপরে এটি প্রসারিত করতে পুনরায় ব্যবহৃত হয়, যা ফাঁকা সন্নিবেশ করে। এপিএল এর ইভল যা এই ক্ষেত্রে একটি স্ট্রিংকে ভেক্টরকে পূর্ণসংখ্যায় রূপান্তর করে। +/যোগফল গণনা করে


সমান দৈর্ঘ্য, কিন্তু আকর্ষণীয়:+/2⊃⍞⎕VFI⍨⎕AV~⎕D
আদম

0

সুইফট 3, 78

s.characters.split{!("0"..."9"~=$0)}.flatMap{Int(String($0))}.reduce(0){$0+$1}

sস্ট্রিং কোথায়


0

পার্ল - 24 টি অক্ষর

warn eval join'+',/\d+/g

ইনপুটটি $ _ এ রয়েছে


0

প্রকৃতপক্ষে, 14 বাইট (প্রতিযোগিতামূলক)

9u▀8╙r♂┌-@s♂≈Σ

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

এই জমাটি অ-প্রতিযোগিতামূলক কারণ প্রকৃতপক্ষে এই চ্যালেঞ্জের চেয়ে মোটামুটি নতুন।

এই প্রোগ্রামটি ইনপুটটির জন্য সিপি 437 কোড পৃষ্ঠা সমর্থন করে।

ব্যাখ্যা:

9u▀8╙r♂┌-@s♂≈Σ
9u▀             base 10 digits (0-9)
   8╙r♂┌        all characters in CP437 (map(ord_cp437, range(2**8)))
        -       set difference
         @s     split input on any value in the resulting list
           ♂≈Σ  convert to ints and sum

0

সি 100

t=0;main(i,v)char**v;{for(char*q,*s=v[1];i=strtol(s,&q,0),*s;q>s?t+=abs(i),s=q:s++);printf("%d",t);}

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

পূর্ববর্তী 85 বাইট সংস্করণ যা প্রোগ্রামের ভিতরে স্ট্রিংকে হার্ডকড করে কিছুটা প্রতারণা করছে:

t=0;main(i){for(char*q,*s;i=strtol(s,&q,0),*s;q>s?t+=abs(i),s=q:s++);printf("%d",t);}

প্রকৃতপক্ষে 85 বাইট প্রোগ্রামটি ব্যবহার করতে আপনাকে এ জাতীয় ভেরিয়েবলটি নির্ধারণ করতে হবে:

t=0;main(i){for(char*q,*s="text";i=strtol(s,&q,0),*s;q>s?t+=abs(i),s=q:s++);printf("%d",t);}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.