স্ট্রিং মধ্যে নম্বর সংযোজন-বিয়োগ


14

একটি ইনপুট হিসাবে একটি স্ট্রিং নিন এবং স্ট্রিংয়ের সমস্ত অঙ্কের সংযোজন / বিয়োগফল সম্পাদন করুন এবং ফলাফল হিসাবে সেই ক্রিয়াকলাপগুলির যোগফল আউটপুট করুন।

বিধি

  • স্ট্রিংয়ের অঙ্কগুলি বাম থেকে ডানে পড়ে
  • যদি কোনও অঙ্ক (n) টি বিজোড় হয় তবে পরবর্তী অঙ্ক (n + n1) দিয়ে সংযোজন করুন
  • যদি একটি অঙ্ক (n) সমান হয় তবে পরের অঙ্কের সাথে বিয়োগফল সঞ্চালন করুন (n - n1)
  • আপনি যদি স্ট্রিংয়ের শেষ অঙ্কে পৌঁছেছেন তবে স্ট্রিংয়ে প্রথম সংখ্যা দিয়ে অপারেশন করুন
  • ফলাফল সমস্ত ফলাফলের যোগফল হবে resulting
  • স্ট্রিংয়ে যদি কেবল একটি অঙ্ক থাকে তবে নিজেই অপারেশনটি সম্পাদন করুন (n + n বা nn)
  • স্ট্রিংয়ে কোনও সংখ্যা না থাকলে আউটপুট 0 হয়

উদাহরণ

Input: r5e6o9mm!/3708dvc    
Process: (5+6) + (6-9) + (9+3) + (3+7) + (7+0) + (0-8) + (8-5)
Output: 32

মন্তব্য

  • হয় ফাংশন বা সম্পূর্ণ প্রোগ্রাম গ্রহণ করা হয়
  • সর্বাধিক ইনপুট দৈর্ঘ্য স্ট্রিং ইনপুটটির জন্য আপনার ভাষার সীমাতে নির্ভর করবে
  • চরিত্রের ইনপুটটিতে কোনও বিধিনিষেধ নেই, তবে কেবলমাত্র অর্ধ-প্রস্থের অঙ্কগুলি আউটপুট হিসাবে গণনা করে
  • সবচেয়ে কম বাইট জেতা

4
আরও কয়েকটি উদাহরণ খুব ভাল হবে
dylnan

2
আমি বিজোড় অঙ্ক দিয়ে শেষ করে একটি পরীক্ষার কেস যুক্ত করার পরামর্শ দেব।
আর্নল্ড

3
প্রস্তাবিত testcase: "", "0","1"
TSH

1
আমরা কি স্ট্রিংয়ের পরিবর্তে অক্ষরের অ্যারে হিসাবে ইনপুট নিতে পারি? (জুলিয়া এই দুজনের মধ্যে একটি পার্থক্য তৈরি করে))
সুন্দরের - মনিকা

4
@ সুন্দর বর্তমান sensকমত্যটি একটি স্ট্রিংকে অক্ষরের ক্রম হিসাবে সংজ্ঞায়িত করা হয়। আমার বোধগম্যতা হ'ল অক্ষরগুলির অ্যারেগুলি তাই ডিফল্টরূপে মঞ্জুরিপ্রাপ্ত হয় যদিও আপনার ভাষার কোনও স্থানীয় স্ট্রিং টাইপ রয়েছে।
আর্নল্ড

উত্তর:


6

জেলি , 17 15 12 বাইট

fØDV€ḂT‘ịƲSḤ

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

পরীক্ষার ক্ষেত্রে চেষ্টা করুন।

প্রোগ্রামটি কেবল সেই অঙ্কগুলিকেই রাখে যা একটি বিজোড় অঙ্ক অনুসরণ করে তবে যোগফলের দ্বিগুণ।

fØDV€ḂT‘ịƲSḤ   
f                   Remove anything that isn't...
 ØD                 a digit.
   V€               Cast each digit to an integer
         Ʋ          Monad:
     Ḃ              Parity of each digit.
      T             Indices of truthy elements (odd digits).
       ‘            Increment.
        ị           Index into list of digits.
                    Wraps to beginning and if there are no digits this returns 0.
          S         Sum.
           Ḥ        Double.

3

কে (ওকে) , 47 43 40 31 বাইট

সমাধান:

{+/(1_x,*x)*2*2!x^:(x-:48)^!10}

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

ব্যাখ্যা:

স্ট্রিং থেকে সমস্ত কিছু মুছে ফেলুন যা কোনও সংখ্যা নয় (যখন রূপান্তরও হয়), মডুলো 2, 2 দিয়ে গুণান, x দিয়ে ঘোরান এবং 1 দিয়ে যোগ করুন।

{+/(1_x,*x)*2*2!x^:(x-:48)^!10} / solution
{                             } / lambda taking implicit x
                           !10  / range 0..10
                          ^     / except
                   (     )      / do this together
                    x-:48       / subtract 48 from x (type fudging char ascii value -> ints), save back into x
                x^:             / x except right, and save back to x
              2!                / modulo 2
            2*                  / multiply by 2
           *                    / multiply by
   (      )                     / do this together
        *x                      / first element of x
       ,                        / append to
      x                         / x
    1_                          / drop first (ie rotate everything by 1)
 +/                             / sum, add (+) over (/)

নিষ্পাপ সমাধান:

স্ট্রিং থেকে সমস্ত কিছু মুছে ফেলুন যা একটি সংখ্যা নয় (পাশাপাশি রূপান্তরকারীও), 2-আইটেমের স্লাইডিং উইন্ডোটি নিন, সেগুলি বিজোড় বা এমনকি কিনা তা নির্ধারণ করুন, যথাযথ হিসাবে অ্যাড / বিয়োগ প্রয়োগ করুন, তারপরে যোগফল করুন।

{+/((-;+)2!x).'2':(1+#x)#x^:(x-:48)^!10}

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

মন্তব্য:

  • -4 বাইট ইনপুট ফিল্টারিংয়ের একটি দুর্দান্ত উপায়ের কারণে @ngn কে ধন্যবাদ জানায়
  • -3 বাইটপুনরায় আকারের চেয়ে স্লাইডিং উইন্ডো ব্যবহার করে
  • -9 বাইটগুলি পোর্টিং করে এনজিএন এর সমাধান (অ-নিষ্পাপ পদ্ধতির)

1
x:48!x@&x in,/$!10->x^:(x-:48)^!10
এনজিএন

আমি সমাধানটি q / kdb + এ লিখেছিলাম তখন ওকে পোর্ট করে রেখেছি ... সম্ভবত এটি থেকে আরও কয়েকটি বাইট নিঃসরণ করতে সক্ষম হতে পারে!
স্ট্রিস্টার

1
আমি একটি পোস্ট এনএনজি / কে-তে আলাদা উত্তর , সেখান থেকে ধারণা আনতে নির্দ্বিধায়। আমি মনে করি ওকে সবচেয়ে সংক্ষিপ্ততম হিসাবে শেষ হবে, কারণ আমার পার্সারটি এই মুহুর্তে আবর্জনাযুক্ত - এটি পরিবর্তিত অ্যাসাইনমেন্টটি সঠিকভাবে পার্স করে না। যাইহোক, আমি ':"স্লাইডিং উইন্ডো" হিসাবে আকর্ষণীয় ছিল না aware
এনজিএন

আপনি কে এর সাথে ভালভাবে পরিচিত বলে মনে করছেন। আপনি যদি কখনও সদৃশ লোকের সাথে ভেক্টর প্রোগ্রামিং স্টাফ নিয়ে আলোচনা করা বা আমাদের বাকী বাকী লোকদের তর্ক করতে দেখে মনে করেন - আমরা এই চ্যাট রুমটি পেয়েছি । ব্যানারটির বেশিরভাগ অংশ এপিএল সম্পর্কে, তবে কে এবং জেও অন-টপিকের।
ngn


2

পার্ল 6 , 41 বাইট

{2*sum rotate($!=.comb(/\d/))Z*(@$! X%2)}

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

হিসাবে একই যুক্তি ব্যবহার করে ডাইলান এর জেলি উত্তর । একটি বিজোড় সংখ্যা অনুসরণ করে এবং তারপর 2 দ্বারা গুণিত হয় এমন এই সংখ্যাগুলির যোগফল।


2

পাওয়ারশেল, 80 78 76 বাইট

($d="$args"-split'\D*'-ne'')+$d[0]|?{$p-match'[13579]';$p=$_}|%{$s+=2*$_};$s

-২ বাইট ধন্যবাদ রেটিনা সমাধান সহ নীলকে

-২ বাইট ধন্যবাদ অ্যাডমবর্কবার্ককে

পরীক্ষার স্ক্রিপ্ট:

$f = {
($d="$args"-split'\D*'-ne'')+$d[0]|?{$p-match'[13579]';$p=$_}|%{$s+=2*$_};$s
}

&$f 'r5e6o9mm!/3708dvc'

ব্যাখ্যা

প্রথমত: পূর্ববর্তী অঙ্কটি বিজোড় হলে এটি 2 * n যুক্ত করে, এবং আগের সংখ্যাটি সমান হলে 0 যোগ করে 0

($d="$args"-split'\D*'-ne'')+ # let $d is array contains digits only, each element is a digit
$d[0]|                        # apend first digit to the end of the array
?{                            # where for each digit
    $p-match'[13579]'         # predicate is 'previous digit is odd' (it is false on the first iteration because $p is null)
    $p=$_                     # let previous digit is current
}|
%{                            # for each digit matched to the predicate
    $s+=2*$_                  # add current digit multiply 2 to $s. 
}
$s                            # return sum

অতিরিক্ত, 99 বাইট

@ নীল দ্বারা অনুপ্রাণিত। 'পূর্ববর্তী সংখ্যাটি বিজোড়' কেবলমাত্র রেগেক্সের ম্যাচ অঙ্কগুলি। Matchesএকটি স্বয়ংক্রিয় পরিবর্তনশীল

param($d)$d+($d-match'\d')+$Matches[0]|sls '(?<=[13579]\D*)\d'-a|%{$_.Matches.Value|%{$s+=2*$_}};$s

1
পছন্দসই প্যারেনগুলিতে চলে যাওয়ার |?{$_}জন্য একটি বাইট অদলবদল করুন -ne''এবং অন্যটি সংরক্ষণ করুন । $d="$args"-split'\D*'-ne''($d="$args"-split'\D*'-ne'')+$d[0]
অ্যাডমবর্কবার্ক

2

এমএটিএল , 18 17 বাইট

t4Y2m)!Ut1YSof)sE

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

(-1 বাইট লুইস মেন্ডো / জিউসেপ / উভয়কে ধন্যবাদ!)

ব্যাখ্যা:

     % Implicit input
 t   % duplicate input
     % stack: ['r5e6o9mm!/3708dvc' 'r5e6o9mm!/3708dvc']
 4Y2 % push inbuilt literal, characters '0':'9'
     % stack: ['r5e6o9mm!/3708dvc' 'r5e6o9mm!/3708dvc' '0123456789']
 m)  % extract only characters from input that belong to '0':'9'
     % stack: ['5693708']
 !U  % transpose and convert each value from string to number
     % stack: [5 6 9 3 7 0 8]
 t   % duplicate that
 1YS % circular shift by 1
     % stack: [[5 6 9 3 7 0 8] [8 5 6 9 3 7 0]]
 o   % parity check - 1 for odd, 0 for even
     % stack: [[5 6 9 3 7 0 8] [0 1 0 1 1 1 0]]
 f   % find non-zero value indices in last array
     % stack: [[5 6 9 3 7 0 8] [2 4 5 6]]
 )   % index at those places in the first array
 s   % sum
 E   % multiply by 2
     % (implicit) convert to string and display

মূল ধারণাটি হ'ল যে সংখ্যাগুলি এমনকি সংখ্যার অনুসরণ করে সেগুলি উপেক্ষা করা যায়, যখন বিজোড় সংখ্যাগুলি অনুসরণ করে তাদের দ্বিগুণ করা হয় - এবং চূড়ান্ত ফলাফলটি সেই দ্বিগুণ মানের সমষ্টি।

fসমতা oযাচাইয়ের পরে প্রয়োজনীয় হবে বলে আমি ভাবিনি , তবে কোনও কারণে এমএটিএল 0 এবং 1 এর oঅ্যারেটি লজিক্যাল অ্যারে হিসাবে দেখেনি , পরিবর্তে তাদেরকে সংখ্যাসূচক সূচক এবং সূচী হিসাবে পজিশনে নিয়ে যায় 1এবং end


আমি মনে করি আপনি এর !Uপরিবর্তে ব্যবহার করতে পারেন48- । ট্রান্সপোজটি এখানে কোনও ক্ষতি করে বলে মনে হচ্ছে না। oজন্য doubleইনপুট ঠিক হয় mod(...,2), তাই আউটপুট double। দুর্দান্ত NaNইনপুট ট্রিক! যদি এটি স্টটআউটের বহির্মুখী আউটপুট সমাধানের উদ্দেশ্যে হয়, ডেনিসের একটি ধারণা ছিল এবং সম্ভবত খুব শীঘ্রই এটি ঠিক করে ফেলবে
লুইস মেন্ডো

!Uপরিবর্তে48-
জিউসেপে

@ লুইস মেন্ডো কাঁদো, তুমি আমাকে ঘুষি মারো!
জিউসেপে

@ জিউসেপ :-D :-D
লুইস মেন্ডো

আপনাকে উভয় ধন্যবাদ, সম্পাদিত। @ লুইসমেন্দো কখন কখন oলজিক্যাল অ্যারে আউটপুট দেয় - বা দেয় না? (আমি অবশ্যই স্বীকার করতে হবে যে আমি ম্যাটল্যাবের সংখ্যাসূচক টাইপ সিস্টেমে আসলেই কখনও দেখিনি।) এবং হ্যাঁ, আমি ভাবলাম NaNযে একটি দুর্দান্ত সেন্ডিনেল তৈরি করবো কারণ এটি কোথাও আসল ইনপুট হওয়ার সম্ভাবনা নেই, তবে জেনে রাখা ভাল যে এটির বেশি প্রয়োজন হবে না !
সূন্দর - মনিকা পুনরায় ইনস্টল করুন

2

কে (এনএনজি / কে) , 33 বাইট

{+/(1_x,*x)*2*2!x:-48+x^x^,/$!10}

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

{ } যুক্তি সহ একটি ফাংশন x

!10 তালিকা হয় 0 1 ... 9

$ স্ট্রিংগুলিতে রূপান্তর করুন

,/ শ্রেণীবদ্ধভাবে সংযুক্ত করা

x^মানে xকি অধিকার আছে তা ছাড়া

x^x^মানে xডানদিকে যা আছে তার সাথে ছেদ করা, অর্থাত্ কেবল অঙ্কগুলি রাখুনx

-48+বিয়োগফল 48, যা এর ASCII কোড"0"

x: ধার্য x

2! Mod 2

2* 2 দ্বারা গুণিত

1_x,*xএর এক ফোঁটা: এর xপরে প্রথম x; অর্থাৎ xএক ধাপে বাম দিকে ঘোরানো

+/ সমষ্টি


2

জাপট (v2.0a0), 25 19 বাইট

শ্যাগি -6 বাইট ধন্যবাদ ।

kè\D
íÈ°*2*Y°u}Ué)x

চেষ্টা করে দেখুন এখানে করুন

এবার কোনও অঙ্ক ছাড়াই এটি কাজ করে! ইনপুট অক্ষরের একটি তালিকা।


জাপট ভি 2 এ পরিবর্তন সহ 19 বাইটxযদিও ফাংশনে অ্যারে নিয়ে খুশি নন । আপনার যদি কোনও প্রশ্ন থাকে তবে আমাকে চ্যাটে পিং করুন ।
শেজি 14

অপেক্ষা করুন, কেবলমাত্র লক্ষ্য করুন যে ইনপুটটিতে কোনও অঙ্ক না থাকলে এটি মোটেই কাজ করবে না।
শেগি

এছাড়াও, v2.0a0, @ শেগি এর উত্স কোথায়? রেপোতে আমি এটি পাই না।
LegionMammal978

এই v1 এ এবং এই v2 হয়।
শেগি

আপনি যদি আড্ডায় এটি মিস করেন তবে আমি এটিকে আপনার জন্য 12 বাইটে নামিয়ে দিয়েছি ।
শেগি

2

05 এ বি 1 ই , 12 9 বাইট

ডাইলানের প্যারিটি ট্রিকটি ব্যবহার করে নিখরচায় পদ্ধতিতে 1 বাইট সংরক্ষণ করুন জনাব এক্সকোডারকে
ধন্যবাদ 3 বাইট

þDÁ€ÉÏSO·

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

ব্যাখ্যা

þ              # push only digits of input
 D             # duplicate
  Á            # rotate right
   ۃ          # get the parity of each
     Ï         # keep only true items
      SO       # calculate digit-sum
        ·      # double

হুম, হবে þÀIþ€ÉÏSO·, þÀDÁ€ÉÏSO·, þÀ¹þ€ÉÏSO·বা þÀsþ€ÉÏSO·-2 বাইট জন্য সব পরীক্ষার বিষয় পাস?
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার: আহা, হ্যাঁ নিস! এমনকি আমরা þDÁ€ÉÏSO·-3 :) এর জন্যও করতে পারি
এমিগিনা

1

রেটিনা , 37 বাইট

(\d).*
$&$1
L$`(?<=[13579]\D*).
2**
_

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

(\d).*
$&$1

প্রথম অঙ্কের একটি সদৃশ যুক্ত করুন।

L$`(?<=[13579]\D*).

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

2**

সমস্ত ম্যাচ একত্রে রূপান্তর করুন এবং সেগুলি দ্বিগুণ করুন। (অ-অঙ্কগুলি শূন্য হিসাবে গণ্য করা হয়))

_

যোগফল নিন। যদি কোনও মিল না থাকে তবে এটি প্রয়োজনীয় হিসাবে শূন্য উত্পাদন করে।

রেটিনা 0.8.2 এ আমি যা করতে পারি তা হ'ল 44 বাইট:

[^\d]

(.).*
$&$1
(?<![13579]).

.
$*
.
..
.

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

[^\d]

অ-সংখ্যা মুছুন।

(.).*
$&$1

প্রথম অঙ্কের একটি অনুলিপি যুক্ত করুন।

(?<![13579]).

বিজোড় অঙ্ক অনুসরণ করে না এমন অঙ্কগুলি মুছুন।

.
$*

অ্যানারিতে রূপান্তর করুন।

.
..

তাদের দ্বিগুণ করুন।

.

যোগফল নিন।


আমি আশঙ্কা করছি ফলাফলটি ভুল হবে যদি শেষ
অঙ্কটি

1
@ মমজি আপনি যখন শেষ সংখ্যাটি বলবেন, আপনি কি প্রথম অঙ্কটির আগে বা পরে অনুলিপিটি ব্যবহার করবেন?
নীল

'অবশেষে'. পদক্ষেপটি 'প্রথম অঙ্কের একটি নকল সংযোজন' শেষে অনুলিপি করছে? ঠিক আছে. শীতল। ধন্যবাদ
মজির


1

জাভাস্ক্রিপ্ট (ES6), 56 বাইট

অক্ষরের অ্যারে হিসাবে ইনপুট নেয়।

s=>s.map(c=>1/c?r+=p*(p=c*2&2,n=n||c,c):0,n=p=r=0)|r+p*n

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

মন্তব্য

s =>                     // given the input array s[]
  s.map(c =>             // for each character c in s[]:
    1 / c ?              //   if c is a digit:
      r +=               //     update r:
        p * (            //       p = either 0 or 2 (always 0 on the 1st iteration)
          p = c * 2 & 2, //       p = 0 if c is even, 2 if c is odd
          n = n || c,    //       if n is still equal to 0 (as an integer), set it to c
          c              //       compute p * c
        )                //     add the result to r
    :                    //   else:
      0,                 //     do nothing
    n = p = r = 0        //   n = first digit, p = previous digit, r = result
  )                      // end of map()
  | r + p * n            // compute the last operation with the 1st digit and add it to r

1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 85 84 83 82 বাইট

-1 বাইটস ovs ধন্যবাদ

s=>(s.match(/\d/g)||[]).reduce((r,n,i,a)=>r+(+n)+a[a[++i]!=null?i:0]*-(1-n%2*2),0)

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

স্ট্রিং ইনপুট নেয়, অঙ্কগুলি অক্ষরের অ্যারে হিসাবে সন্ধান করে বা কোনটি না পাওয়া গেলে খালি অ্যারে প্রদান করে এবং তারপরে মানগুলি সঠিকভাবে যোগ / বিয়োগ করা হয়েছে তা নিশ্চিত করার জন্য ধরণী টাইপ ব্যবহার করে। সামনের অংশটি সূচকটিকে পূর্বে চিহ্নিত করে এবং ব্রেভিটির জন্য একটি নাল চেক ব্যবহার করে এবং তারপরে চূড়ান্ত অংশটি সংখ্যাকে বিজোড় বা এমনকি পরে জোর করে যোগ বা বিয়োগ (+ এবং - হয় - ইত্যাদি) পরীক্ষা করে cks


n-0হতে পারে+n
ovs

পিপিসিজিতে আপনাকে স্বাগতম!
কনর ওব্রায়ান

1

আর , 58 বাইট

function(x,y=strtoi(x[x%in%0:9]))sum(c(y[-1],y[1])*y%%2*2)

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

  • dylnan এর সমতা কৌশল ব্যবহার করে
  • -8 স্ট্রসের পরিবর্তে অক্ষরের ভেক্টর গ্রহণ করে বাইটস
  • -3 বাইট @ জিউজ্পে ধন্যবাদ

67array আউটপুট যদি আপনার মনে না হয় তবে বাইটস
জিউসেপে

1
হুম আসলে আপনি খালি অ্যারের কারণে ডট পণ্যটি ব্যবহার করতে পারবেন না xxxতাই এটি aতৈরির সূচীকরণের পরিবর্তনটি ব্যবহার করে 68 বাইট y
জিউসেপে

@ জিউস্পেপ: সংশোধিত, ধন্যবাদ :)
digEmAll সমস্ত

@ জিউসেপ: আমি আপনাকে আপনার মতামত জিজ্ঞাসা করি যেহেতু আপনি একজন বুদ্ধিমান কোড-গল্ফার ... মন্তব্য থেকে মনে হয় আমরা অক্ষরের একটি ভেক্টর ব্যবহার করতে পারি, এক্ষেত্রে by১ বাইট সম্ভব: এটি অনলাইনে চেষ্টা করুন! আপনি কি মনে করেন ?
15-15 এ 15

এর strtoiপরিবর্তে ব্যবহার করুন as.double, তবে হ্যাঁ, এটি ঠিক আছে।
জিউসেপে

0

পার্ল 5 , 48 বাইট

$;=$;[++$-%@;],$\+=$_%2?$_+$;:$_-$;for@;=/\d/g}{

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

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



0

সি শার্প 180 বাইট

এটি খুব ভাল গল্ফিং নয়, হ্যাঁ।

s=>{var q=new Queue<int>(s.Where(Char.IsNumber).Select(n=>n-48));q.Enqueue(q.First());int t,o=0;o=q.Dequeue();try{while(true){t+=o+(o%2==0?-1:1)*(o=q.Dequeue());}}catch{return t;}}

অসমাপ্ত:

var q = new Queue<int>(s.Where(Char.IsNumber).Select(n=>n-48));
int t,o=0;

q.Enqueue(q.First());    
o=q.Dequeue();

try{
    while(true){
        t += o + (o%2==0?-1:1) * (o=q.Dequeue());
    }
}
catch {
    return t;
}

0

স্ট্যাক্স , 14 বাইট

ÿ←«4é■≥B▬ê→█T♥

এটি চালান এবং এটি ডিবাগ করুন

আনপ্যাকড, নিরবচ্ছিন্ন এবং মন্তব্য করা হয়েছে, এটি দেখতে এটির মতো দেখাচ্ছে।

Vd|&    filter out non-digits
c|(\    zip into pairs after rotating right
F       for each digit pair
  B2%s  first-of-pair % 2, then swap top two stack elements
  eH*   eval digit as integer, double, then multiply
  +     add to running total

এটি চালান


0

জাভাস্ক্রিপ্ট (ES6), 52 বাইট

s=>s.filter(t=>1/t&&~(a+=u*t,u=t%2),a=u=0)[0]*u+a<<1

অক্ষরের অ্যারে হিসাবে ইনপুট আশা করে। ক্যাভেট: বিট-শিফটিং ব্যবহারের কারণে, আউটপুটটির উপরের সীমানা থাকে2^31-1

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

ব্যাখ্যা

মূলত বিজোড় মানগুলি অনুসরণ করে অঙ্কগুলির যোগফলকে দ্বিগুণ করে।

s => s.filter(             // filter to preserve the first digit
    t =>
        1/t &&             // short-circuits if NaN
        ~(                 // coerce to truthy value
            a += u * t,    // adds value only if previous digit is odd
            u = t%2        // store parity of current digit
        ),
    a = u = 0
)[0]                       // first digit
* u + a
<< 1                       // bit-shift to multiply by 2 (also coerces a NaN resulting from a string devoid of digits to 0)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.