ইনক্রিমেন্টগুলি দ্বিগুণ করার সময় গুনছে উপরে


14

ইনপুট:

খালি নয় এমন একটি তালিকা / ভেক্টর যেখানে প্রতিটি উপাদান একটি মান / চরিত্র ঝুলিতে, যদি আপনি গণনা করব ইঙ্গিত আপ বা ডাউন । আমি ব্যবহার করব 1এবং -1, তবে আপনি যা পছন্দ করতে পারেন তা বেছে নিতে পারেন। আপনি শুধুমাত্র দুটি মানের ব্যবহার করার আগে আপনার ব্যবহার করতে পারবেন না 1,2,3...এবং -1,-2,-3...আপ জন্য এবং যথাক্রমে নিচে।

চ্যালেঞ্জ:

আপনি জ্যামিতিক সিরিজের নম্বর 1, 2, 4, 8, 16, 32 ... ব্যবহার করবেন । প্রতিবার আপনি উপরে বা নীচে গণনা শুরু করার সময় আপনি 1 , তারপরে 2 , তারপরে 4 এবং আরও অনেকগুলি ইনক্রিমেন্টে গণনা করবেন । আপনি যদি অন্যভাবে পরিবর্তন এবং গণনা শুরু করেন তবে আপনি 1 , তারপরে 2 , তারপরে 4 এবং আরও বিয়োগ করবেন । আউটপুটটি শেষে আপনি যে সংখ্যাটি পাবেন।

উদাহরণ:

নীচের উদাহরণে, প্রথম লাইনটি ইনপুট, দ্বিতীয় লাইনটি এমন সংখ্যা যা আপনি গণনা করছেন / নিচে নামছেন, তৃতীয় লাইনটি সংখ্যার যোগফল এবং শেষ লাইনটি আউটপুট।

উদাহরণ 1:

1   1   1   1   1   1   1   1   1   1   
1   2   4   8   16  32  64  128 256 512 
1   3   7   15  31  63  127 255 511 1023
1023

উদাহরণ 2:

1   1   1   1   1   1   -1  -1  -1  -1  1   1   1
1   2   4   8   16  32  -1  -2  -4  -8  1   2   4
1   3   7   15  31  63  62  60  56  48  49  51  55
55

আপনি দেখতে পাচ্ছেন, প্রথম 1বা -1"পুনরায় সেট করা" আমরা যে মানটি গণনা করছি, এবং ক্রমাগত ক্রমগুলি 1বা তার -1মানে দ্বিগুণ।

উদাহরণ 3:

-1  -1  1   1   -1  -1  -1
-1  -2  1   2   -1  -2  -4
-1  -3  -2  0   -1  -3  -7
-7

কিছু অতিরিক্ত পরীক্ষার কেস কিছু সম্ভাব্য কোণার ক্ষেত্রে অ্যাকাউন্টে।

ইনপুটটি প্রথম লাইনে রয়েছে। আউটপুট দ্বিতীয় হয়।

1
1
-------    
-1
-1
-------
-1   1  -1   1  -1   1  -1   1  -1   1  -1   1
0

এটি তাই প্রতিটি ভাষার সংক্ষিপ্ততম জমাটি জয়লাভ করে।

উত্তর:



6

এমএটিএল , 6 বাইট

Y'Wq*s

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

ইনপুট বিবেচনা করুন [1 1 1 1 1 1 -1 -1 -1 -1 1 1 1]

     % Implicit input
     % STACK: [1 1 1 1 1 1 -1 -1 -1 -1 1 1 1]
Y'   % Run-length encoding
     % STACK: [1 -1 1], [6 4 3]
W    % Exponentiation with base 2, element-wise
     % STACK: [1 -1 1], [64 16 8]
q    % Subtract 1
     % STACK: [1 -1 1], [63 15 7]
*    % Multiply, element-wise
     % STACK: [63 -15 7]
s    % sum of array
     % STACK: 55
     % Implicit display

6

জাপট , 8 6 বাইট

-2 বাইট @ETH প্রোডাক্টস ধন্যবাদ

ò¦ xì2

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

ব্যাখ্যা

অন্তর্নিহিত ইনপুট: [1, 1, 1, -1, -1, -1, -1, 1, 1]

ò¦

òবিভিন্ন ( ¦) উপাদানগুলির মধ্যে পার্টিশন ইনপুট অ্যারে ( ) :
[[1, 1, 1], [-1, -1, -1, -1], [1, 1]]

ì2

বেস- 2অঙ্কগুলির অ্যারে হিসাবে পার্স করা প্রতিটি পার্টিশনকে মানচিত্র করুন ì:[7, -15, 3]

x

xফলাফলযুক্ত অ্যারের যোগফল ( ) পান :-5


চমৎকার কৌশল। আমি বিশ্বাস করি আপনি পরিবর্তন করতে পারেন ®ì2Ãxথেকে xì2দুই বাইট সংরক্ষণ করুন।
ইটিএইচ প্রোডাকশনস

@ ইথ প্রডাকশনস ম্যান, আপনি আমার সমস্ত পোস্টে রয়েছেন। আবার ধন্যবাদ!
জাস্টিন মেরিনার

5

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

W(?\q.p)w.;0.w;/0>I!U-unP(nwUs;q\^q:;^!u?P(w!u+w.;;>2p!u/@Os..sr\

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

        W ( ? \
        q . p )
        w . ; 0
        . w ; /
0 > I ! U - u n P ( n w U s ; q
\ ^ q : ; ^ ! u ? P ( w ! u + w
. ; ; > 2 p ! u / @ O s . . s r
\ . . . . . . . . . . . . . . .
        . . . .
        . . . .
        . . . .
        . . . .

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

এর সংক্ষিপ্ত ব্যাখ্যা হিসাবে:

  • প্রতিটি পূর্ণসংখ্যায় পড়ুন (1 বা -1) এবং এটি পূর্বের সাথে তুলনা করুন। এমন:
    • কাউন্টারের শুরু হিসাবে একইটিকে নীচে টানুন
    • অন্যথায় কাউন্টারকে শীর্ষে আনুন এবং যথাযথ হিসাবে বৃদ্ধি / হ্রাস করুন।
  • ইনপুট শেষ হয়ে গেলে প্রতিটি কাউন্টারকে শীর্ষে আনুন এবং হ্যান্ডলিং নেতিবাচকগুলি 2 ^ কাউন্টার - 1 করুন
  • ফলাফল এবং আউটপুট যোগফল

4

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

a=>a.map(e=>r+=d=d*e>0?d+d:e,r=d=0)&&r

3

আর , 32 বাইট

sum((2^(R=rle(scan()))$l-1)*R$v)

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

এখানে অন্য কয়েকজনের মতো একই পদ্ধতি।

ইনপুট সহ -1 -1 1 1 -1 -1 -1

  • ইনপুটটিতে একটি দৈর্ঘ্য এনকোডিং করুন। দৈর্ঘ্য 2, 2, 3এবং মান সহ ফলাফল-1, 1, -1
  • দৈর্ঘ্যের ক্ষমতাকে 2 করুন - 1. ফলাফল 3, 3, 7
  • আরএলই মান প্রদান করে গুণ করুন -3, 3, -7
  • যোগফলটি ফেরত দিন -7

3

পাইথন 3 , 57 56 বাইট

-1 বাইট @ নটজাগানকে ধন্যবাদ

f=lambda a,*s,m=1:m*a+(s>()and f(*s,m=(m*2)**(a==s[0])))

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


এই বা এই সাথে বাইট ।
notjagan

এটি s>()আমার এক সেকেন্ড সময় নিয়েছে। এটা সত্যিই স্মার্ট।
মরগান থ্রাপ


2

সি ++ 14, 58 বাইট

[](auto v,int&s){int p=s=0;for(auto x:v)s+=p=x*p<1?x:2*p;}

vআর্গুমেন্টের মাধ্যমে ইনপুট নেয় ( std::vectorবা কোনও পুনরাবৃত্ত ধারক), sআর্গুমেন্টের আউটপুট (রেফারেন্স দ্বারা)। প্রতিটি উপাদান vঅবশ্যই হয় 1বা হয় -1

ব্যবহার এবং পরীক্ষার কেসগুলির উদাহরণ।


2

Brachylog , 13 বাইট

ḅ⟨{ȧᵐ~ḃ}×h⟩ᵐ+

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

ব্র্যাচল্যাগ ব্যবহার করে _ পরিবর্তে করে -

ব্যাখ্যা:

?ḅ⟨{ȧᵐ~ḃ}×h⟩ᵐ+. Predicate (implicit ?.)
?               The input
 ḅ              A list where its elements' elements are equal, and when concatenated is ?
            ᵐ   The result of mapping this predicate over ?
  ⟨        ⟩      The result of forking two predicates over ? with a third
   {    }           The result of this predicate on ?
     ᵐ                The result of mapping this predicate over ?
    ȧ                   The absolute value of ?
      ~               An input where the result of this predicate over it is ?
       ḃ                A list that represents the digits of ? in base I (default 2)
          h         An object that is the first element of ?
         ×          A number that is the product of ?
             +  A number that is the sum of ?
              . The output




1

সিজেএম (১৩ বাইট)

{e`{(*2b}%1b}

অনলাইন পরীক্ষা স্যুট । এটি একটি বেনামে ব্লক (ফাংশন) যা স্ট্যাকের ভিতরে একটি অ্যারে নেয় এবং স্ট্যাকের উপর একটি চিহ্ন ফেলে। শেষ পরীক্ষাটি দেখায় যে এটি 0 দিয়ে একটি খালি অ্যারে সঠিকভাবে পরিচালনা করে।

পদ্ধতিটি প্রতিটি রান এবং বেস রূপান্তরটির ম্যানুয়াল রান-দৈর্ঘ্যের ডিকোডের পরে সোজা রান-লেংথ এনকোডিং। রান-লেংথ ডিকোডের জন্য বিল্ট-ইন ব্যবহার করে আমি {e`1/:e~2fb1b}বা এর সাথে আরও একটি বাইট পাই {e`{ae~2b}%1b}



1

হাস্কেল, 54 53 বাইট

k#(a:b:c)=k+last(b:[k*2|a==b])#(b:c)
k#_=k
(#)=<<head

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

একটি সাধারণ পুনরাবৃত্তি যা হয় সঞ্চালককে দ্বিগুণ করে kবা এটিকে পুনরায় সেট করে 1/ -1এবং প্রতিটি পদক্ষেপের মান যোগ করে।





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