সংলগ্ন ডুপ্লিকেটগুলি সঙ্কুচিত করুন


22

চ্যালেঞ্জ

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

নোট করুন যে আপনার যদি সমান সংখ্যার বিজোড় দৈর্ঘ্যের রান থাকে তবে তাদের মধ্যে একটি জুড়ি অংশ না হয়েই থাকবে।

উদাহরণ:

[0, 0, 0, 1, 2, 4, 4, 2, 1, 1, 0]

প্রথমে আপনি মুছে ফেলা আবশ্যক 0, 0, 4, 4এবং 1, 1পেতে:

[0, 1, 2, 2, 0]

এখন, আপনার অপসারণ করা উচিত 2, 2:

[0, 1, 0]

এবং এটিই চূড়ান্ত ফলাফল।

পরীক্ষার মামলা

[] -> []
[1] -> [1]
[1, 1] -> []
[১, ২] -> [১, ২]
[১১, ১১, ১১] -> [১১]
[1, 22, 1] -> [1, 22, 1]
[-31, 46, -31, 46] -> [-31, 46, -31, 46]
[1, 0, 0, 1] -> []
[5, 3, 10, 10, 5] -> [5, 3, 5]
[5, 3, 3, 3, 5] -> [5, 3, 5]
[0, -2, 4, 4, -2, 0] -> []
[0, 2, -14, -14, 2, 0, -1] -> [-1]
[0, 0, 0, 1, 2, 4, 4, 2, 1, 1, 0] -> [0, 1, 0]
[3, 5, 4, 4, 8, 26, 26, 8, 5] -> [3]
[-89, 89, -87, -8, 8, 88] -> [-89, 89, -87, -8, 8, 88]

স্কোরিং

এটি , তাই প্রতিটি ভাষার সংক্ষিপ্ত উত্তরটি জিতে যায়!


যারা মুছে ফেলা পোস্টগুলি দেখতে পাবেন তাদের জন্য স্যান্ডবক্স
musicman523

এতে কিছু যায় আসে না, তারা সবাই সমান। এই শব্দগুচ্ছ অর্থ যে [14, 14, 14]করতে ধস[14]
musicman523

চ্যালেঞ্জটি ভুল করে পড়ুন, দুঃখিত। ভেবেছিলাম তুমি সবকিছুর যুগল (1 দ্বারা বৃদ্ধি সংখ্যার মুছে ফেলার জন্য ছিল 1,2, 11,12ইত্যাদি)
স্টিফেন

আমরা কি সীমানাযুক্ত স্ট্রিং হিসাবে ইনপুট নিতে পারি?
শেগি

2
আপনি যেমন একটি পরীক্ষার কেস যুক্ত করতে পারেন -89,89,-87,-8,-88? আমার (আনপোস্টেড) উভয়ই জ্যাপ্ট দ্রবণ এবং ফ্রাইয়ের রেটিনা দ্রবণ সেখানে আউটপুট করে ব্যর্থ হয় --87,8
শেগি

উত্তর:


5

জেলি , 10 বাইট

Œgœ^/€FµÐL

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

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

Œgœ^/€FµÐL  Main link. Argument: A (array)

       µ    Combine all links to the left into a chain.
Œg              Group all adjacent equal items.
    /€          Reduce each group by...
  œ^                symmetric multiset difference.
                In each step, this maps ([], n) to [n] and ([n], n) to [], so the
                group is left with a single item if its length is odd, and no items
                at all if its length if even.
      F         Flatten the resulting array of singleton and empty arrays.
        ÐL  Apply the chain until the results are no longer unique. Return the last
            unique result.

পরিবর্তে ব্যবহার করা Fআপনাকে আপনার তালিকায় তালিকা সমর্থন করতে সক্ষম করবে।
এরিক দি আউটগল্ফার

না, œ^এখানে পূর্ণসংখ্যার থেকে অ্যারে প্রচারের উপর নির্ভর করে। যেহেতু 1D অ্যারে 2D অ্যারে পদোন্নতি পায় না, এটি সংখ্যার অ্যারে ব্যতীত কোনও কিছুর জন্য কাজ করবে না।
ডেনিস

হেই ... মানে আপনি সবেমাত্র ব্যবহার করতে পারতেন ŒgWẎ$œ^/$€ẎµÐL... ওহ অপেক্ষা করুন এটি খুব নির্বোধ। : পি
এরিক দি আউটগল্ফার

4

রেটিনা ,17 15 বাইট

+m`^(.+)¶\1$¶?

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

নীল এবং মার্টিনের জন্য 2 বাইট সংরক্ষণ করা!

প্রতিটি জুটির সংখ্যাকে কিছুই না করে প্রতিস্থাপন করে। কোনও পরিবর্তন না করা পর্যন্ত এই প্রক্রিয়াটি লুপ হয়।


এটি স্পট করার আগে জাপটে অভিন্ন সমাধান তৈরি করেছেন। দুর্ভাগ্যক্রমে, আমরা উভয় যেমন ইনপুট যেমন ব্যয় -89 89 -87 -88 -88, ব্যর্থ --87
শেগি

1
@ শেগি ধন্যবাদ, আমি একটি বাউন্ডারি চেক যুক্ত করে এবং _নেতিবাচকতা বোঝাতে ব্যবহার করে এটি সংশোধন করেছি , যেমনটি কিছু ভাষায় প্রচলিত রয়েছে।
FryAmTheEggman

আমি তখন থেকেই আবিষ্কার করেছি যে এটি _89 89 _87 _8 _88আউটপুটিংয়েও ব্যর্থ হবে _89 89 _87 8। দুঃখিত: \
শেগি

@ শেগি দুঃখিত না! সমস্যাটি সন্ধানের জন্য ধন্যবাদ! আমি এই কেসটি ঠিক করতে আরও একটি বাউন্ডারি চেক যুক্ত করেছি।
FryAmTheEggman

1
@FryAmTheEggman না নিশ্চিত কিনা কী নিল বোঝানো কিন্তু আপনি তারপর এছাড়াও ব্যবহার করতে পারে mমোড় \bমধ্যে গুলি ^এবং $
মার্টিন ইন্ডার

3

গণিত 29 বাইট

এটি বার বার সমান সংলগ্ন উপাদানগুলির জোড়া সরিয়ে ফেলবে, a_,a_যতক্ষণ না কোনও অবশিষ্ট থাকে না।

#//.{b___,a_,a_,c___}:>{b,c}&

3

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

r=[]
for x in input():r+=x,;r[-2:]*=r[-2:-1]!=[x]
print r

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

স্বতঃস্ফূর্তভাবে পরবর্তী উপাদান যুক্ত করে আউটপুট তালিকা তৈরি করে, তারপরে সংযোজনকারী উপাদানটি এর আগে যেটির সমান হয় তার সমাপ্তি কেটে ফেলুন। দ্বিতীয় থেকে শেষ উপাদানটি পরীক্ষা r[-2:-1]!=[x]করা বিশ্রী হয়ে ওঠে কারণ এটি সম্ভব হয় যে তালিকার দৈর্ঘ্য কেবল 1 টি।


দুর্দান্ত উত্তর, খুব ভাল হয়েছে :)
musicman523

2

জেলি , 15 বাইট

Œr;ṪḂ$$€x/€FµÐL

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

ব্যাখ্যা

Œr;ṪḂ$$€x/€FµÐL  Main Link
Œr               Run-length encode
  ;              Concatenate (?)
       €         For each element
   ṪḂ$$          Is the last element odd?
          €      For each element    // Non-breaking alternative
        x/       Reduce by repeating // for run-length decode
           F     Flatten
            µ    (New monadic link)
             ÐL  Repeat until results are no longer unique

-1 বাইট মাইল ধন্যবাদ, এবং স্থির :)


নিবন্ধন করুন ধন্যবাদ!
হাইপারনিউটারিনো

আমি নিশ্চিত না যে কোনও ত্রুটি ছুঁড়ে ফেলেছে এবং সঠিক সমাধান হিসাবে আউটপুটকে খালি গণনা হিসাবে রেখে দিচ্ছি। আপনি প্রোগ্রাম ValueError: not enough values to unpack (expected 2, got 0)পরীক্ষার জন্য নিক্ষেপ [1,2,2,1]। এছাড়াও লক্ষ করুন যে খালি আউটপুট পৃথক []এবং 2পৃথক [2]

সাথে 13 বাইট Œr;ṪḂ$$€ŒṙµÐL। ত্রুটি এড়াতে, রান-লেংথ ডিকোডের Œṙসাথে প্রতিস্থাপন করুন x/€Fখালি তালিকা দেওয়ার পরে একটি ত্রুটি নিক্ষেপ করছে। তালিকা হিসাবে আউটপুটটি দেখতে, টে্যাকিং ŒṘএটি প্রদর্শন করবে।
মাইল 23

@PirateBay জেলির খালি তালিকার উপস্থাপনা হ'ল - খালি, একটি আইটেমের - কেবলমাত্র সেই আইটেমের এবং একাধিক আইটেমের - একটি বন্ধনীযুক্ত এবং কমা দ্বারা পৃথক তালিকা। জমাটি কোনও লিঙ্কের (ফাংশন) কোনও সম্পূর্ণ প্রোগ্রাম নয় (অনেকটা ল্যাম্বডা পাইথনে হবে) - ÇŒṘশেষ লিঙ্কটি কল করার জন্য ফুটারে আরও একটি "সাধারণ" দেখার জায়গা দেখার জন্য ( Ç) এবং পাইথনের উপস্থাপনা মুদ্রণ ( ŒṘ) । ত্রুটিটি অবশ্য গ্রহণযোগ্য হবে না।
জোনাথন অ্যালান

@JonathanAllan। ঠিক আছে, আমি বুঝতে পেরেছিলাম যে জেলি এর একটি স্ট্রিংয়ের একটি প্রতিনিধিত্বযোগ্যতা গ্রহণযোগ্য। আমার প্রথম মন্তব্যের মূল বক্তব্যটি উল্লেখ করা উচিত যে তালিকাটি খালি হয়ে গেলে ত্রুটি নিক্ষেপ করা হয়।

2

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

@ দ্য পাইরেটবেকে ধন্যবাদ 1 বাইট সংরক্ষণ করা হয়েছে

f=a=>1/a.find(q=>q==a[++i],i=-2)?f(a,a.splice(i,2)):a

নিষ্পাপ পুনরাবৃত্ত সমাধান, অসম্পূর্ণ হতে পারে।


আপনি বর্তমান এবং পরেরটির পরিবর্তে বর্তমান এবং পূর্ববর্তী উপাদানগুলি চেক করতে পারেন, যাতে আপনি মোট -1 বাইট i=0সহ i=-2এবং এর i-1সাথে প্রতিস্থাপন করতে পারেন i

@ গেস্ট44851 ধন্যবাদ, তবে ... এর অর্থ কি আমার এটিকে বদলাতে হবে i+1? (আমি আগেও এটি চেষ্টা ++করেছি এবং এটি বের করতে পারি না, যদিও আমার এটি করতে প্রায় এক মিনিট সময় ছিল)
ETH প্রোডাকশনস

আপনি এটি দেখতে পারেন যে এটি সঠিকভাবে কাজ করে

@ দি পাইরেটবে বে গলির কথায়, আপনি ঠিক বলেছেন! কিন্তু কিভাবে?
ইটিএইচ প্রডাকশনগুলি

2

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

যেহেতু আমার মন্তব্য করার মতো খ্যাতি নেই: আমি একটি বাইট সংরক্ষণের জন্য লেন (আর) এর পরিবর্তে @Fficialaimm এর উত্তর ব্যবহার করার জন্য উত্তরটি পরিবর্তন করেছি! = [] আপনার কাছে খুব চতুর সমাধান, @Fifialaimm!

r=[]                            # create list that will hold final results. A new list is important because it needs to be removable.
for i in input():               
 if r!=[]and r[-1]==i:r.pop()   # Ensure that we have at least 1 char added to the list (r!=[])... or that the last character of our final result isn't the current character being scanned. If that is, well, remove it from the final list because we do not want it anymore
 else:r+=[i]                    # Shorthand for r.append(i). This adds i to the final result
print r

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

এখন আবার অনেক দেরি হয়ে গেছে ... কেন আমি এখনও উঠে আছি?



2

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

t"Y'oY"

কিছু পরীক্ষার ক্ষেত্রে যেখানে ফলাফল খালি থাকে ত্রুটি সহ প্রোগ্রামটি বের হয় তবে যে কোনও ক্ষেত্রে এটি সঠিক (খালি) আউটপুট দেয়।

এটি অনলাইন চেষ্টা করুন! অথবা খালি খালি আউটপুট দিয়ে পরীক্ষার কেসগুলি যাচাই করুন

ব্যাখ্যা

t     % Implicit input. Duplicate
"     % For each (i.e. do as many times as input size)
  Y'  %   Run-length encode. Gives array of values and array of run lengths
  o   %   Parity, element-wise. Reduces run-lengths to either 0 or 1
  Y"  %   Run-length decode. Gives array of values appearing 0 or 1 times;
      %   that is, removes pairs of consecutive values
      % Implicit end. Implicit display

ইনপুট বিবেচনা করুন

0 0 0 1 2 4 4 2 1 1 0

প্রতিটি পুনরাবৃত্তি একটানা জোড়া জোড়া সরিয়ে দেয়। প্রথম পুনরাবৃত্তি অ্যারে হ্রাস করে

0 1 2 2 0

দুটি মান 2যা এখন সংলগ্ন হয় প্রাথমিক অ্যারেতে সংলগ্ন ছিল না। এজন্য দ্বিতীয় পুনরাবৃত্তি প্রয়োজন, যা দেয়:

0 1 0

আরও পুনরাবৃত্তি এটিকে অপরিবর্তিত রাখবে। প্রয়োজনীয় পুনরাবৃত্তির সংখ্যা ইনপুট আকার দ্বারা উপরের-সীমিত হয়।

একটি খালি মধ্যবর্তী ফলাফল রজ-দৈর্ঘ্যের ডিকোডিং ফাংশনকে ( Y") ভাষার বর্তমান সংস্করণে ত্রুটির কারণ করে; প্রয়োজন হিসাবে খালি খালি।


আপনি একটি ব্যাখ্যা যোগ করতে পারেন? আমি বুঝতে চাই আপনি কীভাবে আমাকে এত জোরে মারলেন। : পি
ডেনিস

@ ডেনিস শিওর! আমি ভুলেগেছি. সম্পন্ন :-)
লুইস মেন্ডো

1
আহ, আরএলই দুটি অ্যারে ঠেলাচ্ছে । এটা দরকারী।
ডেনিস

2

x86 মেশিন কোড (32-বিট সুরক্ষিত মোড), 36 বাইট

52
8B 12
8D 44 91 FC
8B F9
8D 71 04
3B F0
77 10
A7
75 F9
83 EF 04
4A
4A
A5
3B F8
75 FB
97
EB E7
58
89 10
C3

মেশিন কোডের উপরের বাইটগুলি একটি ফাংশন সংজ্ঞায়িত করে যা কোনও অ্যারে ইনপুট হিসাবে গ্রহণ করে, সংলগ্ন সদৃশটিকে জায়গায় জায়গায় ধসে পড়ে এবং কোনও ফলাফল না দিয়ে কলারে ফিরে আসে। এটি __fastcallকলিং কনভেনশন অনুসরণ করে , যথাক্রমে ECXএবং নিবন্ধগুলিতে দুটি পরামিতি EDXপেরিয়ে।

প্রথম পরামিতি ( ECX) হ'ল 32-বিট পূর্ণসংখ্যার অ্যারেতে প্রথম উপাদানটির একটি পয়েন্টার (যদি অ্যারেটি খালি থাকে তবে এটি মেমরির যে কোনও জায়গায় পয়েন্ট করতে পারে)। দ্বিতীয় প্যারামিটার ( EDX) হ'ল একটি 32-বিট পূর্ণসংখ্যার পয়েন্টার যা অ্যারের দৈর্ঘ্য ধারণ করে।

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

অবহেলিত সমাবেশ মেমোনমিক্স:

; void __fastcall CollapseAdjacentDuplicates(int * ptrArray, int * ptrLength);
; ECX = ptrArray              ; ECX = fixed ptr to first element
; EDX = ptrLength
   push  edx                  ; save pointer to the length
   mov   edx, [edx]           ; EDX = actual length of the array
   lea   eax, [ecx+edx*4-4]   ; EAX = fixed ptr to last element 

FindAdjacentPairs:
   mov   edi, ecx             ; EDI = ptr to element A
   lea   esi, [ecx+4]         ; ESI = ptr to element B
FindNext:
   cmp   esi, eax             ; is ptr to element B at end?
   ja    Finished             ; if we've reached the end, we're finished
   cmpsd                      ; compare DWORDs at ESI and EDI, set flags, and increment both by 4
   jne   FindNext             ; keep looping if this is not a pair

; Found an adjacent pair, so remove it from the array.
   sub   edi, 4               ; undo increment of EDI so it points at element A
   dec   edx                  ; decrease length of the array by 2
   dec   edx                  ;  (two 1-byte DECs are shorter than one 3-byte SUB)
RemoveAdjacentPair:
   movsd                      ; move DWORD at ESI to EDI, and increment both by 4
   cmp   edi, eax             ; have we reached the end?
   jne   RemoveAdjacentPair   ; keep going until we've reached the end
   xchg  eax, edi             ; set new end by updating fixed ptr to last element
   jmp   FindAdjacentPairs    ; restart search for adjacent pairs from beginning

Finished:
   pop   eax                  ; retrieve pointer to the length
   mov   [eax], edx           ; update length for caller
   ret

বাস্তবায়নটি আমার সি ++ 11 উত্তর দ্বারা অনুপ্রাণিত হয়েছিল , তবে আকারের জন্য অনুকূল হয়ে সাবধানতার সাথে অ্যাসেমব্লিতে পুনরায় লেখা হয়েছিল। সমাবেশ একটি আরও ভাল গল্ফ ভাষা। :-)

দ্রষ্টব্য: যেহেতু এই কোডটি স্ট্রিং নির্দেশাবলী ব্যবহার করেছে, তা কি ধরে নিয়েছে যে দিকের পতাকাটি পরিষ্কার ( DF== 0)। এটি বেশিরভাগ অপারেটিং পরিবেশে একটি যুক্তিসঙ্গত অনুমান, কারণ এআইবিআইয়ের সাধারণত ডিএফ পরিষ্কার হওয়া দরকার। যদি এটির গ্যারান্টি দেওয়া যায় না, তবে কোডের শীর্ষে একটি 1 বাইট CLDনির্দেশ ( 0xFC) needs োকানো দরকার।

এটি যেমন উল্লেখ করা হয়েছে, 32-বিট সুরক্ষিত মোড ধরে নিয়েছে - বিশেষত একটি "ফ্ল্যাট" মেমরি মডেল, যেখানে অতিরিক্ত বিভাগ ( ES) ডেটা বিভাগ ( DS) হিসাবে একই ।


1

ব্যাচ, 133 বাইট

@set s=.
:l
@if "%1"=="%2" (shift/1)else set s=%s% %1
@shift/1
@if not "%1"=="" goto l
@if not "%s:~2%"=="%*" %0%s:~1%
@echo(%*

আমি সেট করেছিলাম .কারণ ব্যাচটি যদি কেবল নকল থাকে তবে বিভ্রান্ত হয়। আমাকে আরও ব্যবহার করতে হবে shift/1যাতে আমি %0%s:~1%যুক্তি তালিকাটি নতুন অ্যারে এবং লুপে সেট করতে পারি ।


আমাকে জিজ্ঞাসা করতে হবে ... কেন? ভাল উত্তর ... তবে কেন?
জাকারি

@ জ্যাচারý কারণ এটি আছে।
নিল

1
@ Zachary সালে অংশ, অ golfing ভাষায় গল্ফ একটি ভাল কারণ কারণ আসলে এই হতে পারে দরকারী । এটি করার জন্য কেউই বাস্তব জীবনে জেলি দোভাষীকে গুলি চালাচ্ছে না, তবে তাদের এটি ব্যাচের একটি ফাইলের মধ্যে করার প্রয়োজন হতে পারে!
কোডি গ্রে

উহু. এটা বোধগম্য.
জাকারি

1

জেলি , 12 বাইট

ŒgṁLḂ$$€ẎµÐL

সংখ্যার তালিকাগুলি নেওয়া এবং প্রত্যাবর্তনের একটি মোনাডিক লিঙ্ক।

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

কিভাবে?

ŒgṁLḂ$$€ẎµÐL - Link: list
         µÐL - perform the chain to the left until no changes occur:
Œg           -   group runs (yield a list of lists of non-zero-length equal runs)
      $€     -   last two links as a monad for €ach run:
     $       -     last two links as a monad:
   L         -       length (of the run)
    Ḃ        -       modulo 2 (1 if odd, 0 if even)
  ṁ          -     mould (the run) like (1 or 0) (yields a list of length 1 or 0 lists)
        Ẏ    -   tighten (make the list of lists into a single list)

ṁLḂ$$€সমতূল্য থেকে ḣLḂ$$€যা সমতুল্য হয় ṫḊ¿€3$যা আপনার সাথে প্রতিস্থাপন করতে পারেন ṫḊ¿€3একটি যুগল / nilad যুগল গঠনের এখানে।
এরিক দি আউটগল্ফার

এটি উদাহরণস্বরূপ, দৈর্ঘ্যের একটি রান সহ একটি ইনপুট 4 সাথে কাজ করে না 4 যখন লুপের প্রতিটি পুনরাবৃত্তিতে ডিকুইয়ের ইনপুটটি কী?
জোনাথন অ্যালান

আপনার 0 বা 1 টি উপাদান সহ একটি তালিকা রেখে যাওয়ার কথা রয়েছে। তাহলে লেন (x) এর == 1, তারপর ফিরে আসবে []যখন যদি লেন (x) এর == 0 ফিরে আসবে 0, উভয় হচ্ছে falsy মান। ইনপুটটি অবশ্যই বর্তমান মান এবং এর বাম আর্গুমেন্ট এবং 3ডান হিসাবে বর্তমান মান থাকবে । লেন (x) এর == 4 ফেলেন, তাহলে এটি হিসাবে একই হবে ṫ3ṫ3বা ṫ5আপনার সাথে যাব []
এরিক দি আউটগল্ফার

আমি এটি যা করার কথা তা দেখতে পাচ্ছি, তবে xআপনার বর্ণনায় আসলেই কি বর্তমান মান আছে? ব্যবহার করে দেখুন এই আকার জন্য বাইরে।
জোনাথন অ্যালান

সত্যি কথা বলতে কি আমি জানি না যে এটি কোড বা একটি বাগ :)
জোনাথন অ্যালান

1

জাপট , 34 বাইট

ó¥ k_l vîò k_l É}Ãc
ó¥ l ¥Ul ?U:ß

অবিচ্ছিন্নভাবে সমান সংখ্যার জোড়া মুছে ফেলা হয় যতক্ষণ না কারও অস্তিত্ব থাকে।

এটি অনলাইন চেষ্টা করুন! সাথে-Qআউটপুট অ্যারে বিন্যাস পতাকা ।

আমার ডাব্লুআইপি কোডপেন ব্যবহার করে সমস্ত পরীক্ষার কেস চালান


1

05 এ বি 1 ই , 15 বাইট

[γʒgÉ}€нÐγ‚€gË#

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

ব্যাখ্যা

[γʒgÉ}€нÐγ‚€gË#
[               # Start infinite loop
 γ              # Group Array into consecutive equal elements
  ʒgÉ}          # Keep the subarrays with an uneven amount of elements
      €н        # Keep only the first element of each subarray
        Ð       # Triplicate the result on the stack
         γ      # Group the top element into consecutive equal elements
          ‚     # Wrap the top two items of the stack in an array
           €g   # Get the length of each subarray
             Ë# # Break if they are equal
                # Implicit print          



1

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

  • ধন্যবাদ @ স্টেটামিরুটটি 4 বাইটের জন্য: rপরিবর্তেlen(r) তালিকার শূন্যতা / স্ট্যাক পরীক্ষা করতে যথেষ্ট।
  • ধন্যবাদ @ ওওএসকে 4 বাইটের জন্য: শর্ত থাকলে আরও ভাল [i]==r[-1:]

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

r=[]
for i in input():
 if[i]==r[-1:]:r.pop()
 else:r+=[i]
print r

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


1
যদি উদ্দেশ্যটি len(r)কেবল খালি তালিকাটি খালি আছে কিনা তা খতিয়ে দেখার জন্য, আপনি কি কেবলমাত্র এটি দ্বারা প্রতিস্থাপন করতে সক্ষম হবেন r, আমি মনে করি?
বাষ্পযুক্ত রুট

ওহ হ্যাঁ, ধন্যবাদ
অফিসিয়ালাইম


@ovs অনেক ধন্যবাদ, এটি দুর্দান্ত! (y)
অফিসিয়ালাইম

1
বিকল্প 66 বাইট দীর্ঘ সংস্করণ , যদিও কেবল তিনটি লাইনের প্রয়োজন।
জোনাথন ফ্রেচ

0

ক্লোজার, 100 বাইট

#(loop[i % j[]](if(= i j)i(recur(mapcat(fn[p](repeat(mod(count p)2)(last p)))(partition-by + i))i)))

নিশ্চিত যে এটি যদি সবচেয়ে সংক্ষিপ্ততম হয় কিনা Not


0

বাশ, 82 বাইট

cat>b
while cat b>a
perl -pe 's/(\d+) \1( |$)//g' a>b
! diff a b>c
do :
done
cat a

এই সমস্তগুলির বাইরে যাওয়ার সম্ভবত একটি উপায় আছে cat, তবে আমি এটি জানি না।




0

ভি , 10 বাইট

òͨ.«©î±î*

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

কম্প্রেস Regex: :%s/\(.\+\)\n\1\n*। Alচ্ছিক নিউলাইনটি যাতে এটি ফাইলের শেষেও কাজ করে। যদি আমি ধরে নিই যে শেষের পরে একটি নতুন লাইন রয়েছে তবে এটি 8 বাইট হবে ... তবে এটি একটি প্রসারিতের মতো বলে মনে হচ্ছে


0

ডিসি , 84 78 বাইট

[L.ly1-dsy0<A]sA[LtLtS.ly1+sy]sP[dStrdStr!=Pz1<O]sO[0syzdsz1<Oly0<Azlz>M]dsMxf

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

এটিকে কিছুটা আনপ্যাক করা, স্বচ্ছতার কিছু চেষ্টাতে অর্ডারের বাইরে:

  • [0syzdsz1<Olydsx0<Alx1+lz>M]dsMxfপ্রধান ম্যাক্রো 0 টির সাথে Mপুনরায় সেট yকরে, স্ট্যাকের আইটেমের সংখ্যা পুনরুদ্ধার করে, এটি রেজিস্টারে সংরক্ষণ করে z, তারপর Oস্ট্যাকের মধ্যে কমপক্ষে দুটি আইটেম থাকলে ম্যাক্রো চালায় । একবার Oশেষ হয়ে গেলে , এটি কাউন্টার লোড করেy হয়ে যায় এবং ননজারো (অর্থাত্ স্ট্যাকের ডেটা রয়েছে) তা xপরীক্ষা করার আগে এটি রেজিস্টারে অনুলিপি করে । যদি এটি হয় তবে এটি ম্যাক্রো চালায় । শেষ পর্যন্ত এটি খালি স্ট্যাকের আকারটি বর্তমান স্ট্যাকের আকারের চেয়ে বড় কিনা এবং তা যদি আবার পুনরায় চালু হয় তবে তা পরীক্ষা করে। এটি শেষ হয়ে গেলে এটি স্ট্যাকটি মুদ্রণ করে ।y.Af
  • [dStrdStr!=Pz1<O]sOম্যাক্রো Oসাময়িকভাবে শীর্ষ স্ট্যাকের মধ্যে স্ট্যাক দুটি আইটেম সঞ্চয় করে t। এরপরে এটি শীর্ষ দুটি আইটেমের সাথে তুলনা করে এবং Pতারা সমান না হলে ম্যাক্রো চালায় । অবশেষে এটি স্ট্যাকের অন্তত দুটি আইটেম রয়েছে কিনা তা যাচাই করে এবং যদি তা হয় তবে নিজেই চালায় runs
  • [LtLtS.ly1+sy]sPম্যাক্রো Pদুটি স্ট্যাক থেকে নেওয়াt , উপরেরটিকে পিছনে মূল স্ট্যাকের দিকে ঠেলে দেয় এবং নীচেরটিকে স্ট্যাকের দিকে ঠেলে দেয় .। এটি তখন পাল্টা পাল্টা দেয় y
  • [L.ly1-dsy0<A]sAম্যাক্রো Aস্ট্যাক লাগে. এবং এটিকে প্রাথমিক স্ট্যাকের দিকে ফিরিয়ে দেয়। এটি তা করে, হ্রাসকারী কাউন্টার yযতক্ষণ না ধাক্কা দেওয়ার কিছুই বাকি নেই।

ব্যাখ্যার জন্য সম্পাদিত, এবং 6 বাইট বন্ধ করে দেওয়া কারণ আমি স্ট্যাকের আকারটি অকারণে সঞ্চয় করেছিলাম।


0

সি ++ 11, 161 বাইট

#include<vector>
#include<algorithm>
using V=std::vector<int>;void f(V&v){V::iterator i;while((i=std::adjacent_find(v.begin(),v.end()))!=v.end())v.erase(i,i+2);}

উপরের কোডটি একটি ফাংশন সংজ্ঞায়িত করে f, যা std::vector<int>রেফারেন্স অনুসারে গ্রহণ করে, স্পেসিফিকেশন অনুসারে সংলগ্ন সদৃশগুলি ভেঙে ফেলার জন্য এটি জায়গায় পরিবর্তন করে এবং তারপরে ফিরে আসে।

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

আমি বাইট গণনা যাচাই করার আগে, আমি ভেবেছিলাম এটি বেশ সোভেল কোড। দেড়শো বাইটের ওপরে, তবে এতটা ভাল নয়! হয় আমি গল্ফ করাতে খুব একটা ভাল না, বা সি ++ খুব ভাল গল্ফিং ভাষা নয় ...

Ungolfed:

#include <vector>
#include <algorithm>

using V = std::vector<int>;

void f(V& v)
{
   V::iterator i;

   // Use std::adjacent_find to search the entire vector for adjacent duplicate elements.
   // If an adjacent pair is found, this returns an iterator to the first element of the
   // pair so that we can erase it. Otherwise, it returns v.end(), and we stop.
   while ((i=std::adjacent_find(v.begin(), v.end())) != v.end())
   {
        v.erase(i, i+2);   // erase this adjacent pair
   }
}

সি ++ সেরা গল্ফিং ভাষা নয়। ভাল ব্যবহার std::adjacent_find! আমি ভাবছি যদি আপনি এই ফাংশন নিজেকে বাস্তবায়িত হলে খাটো হবে, আপনি অপসারণ করতে পারেন যেহেতু #include <algorithm>পাশাপাশি
musicman523

@ musicman523 আমার প্রথম প্রচেষ্টা করেনি , হাতে তা বাস্তবায়ন যদিও আমি একটু ভিন্ন আলগোরিদিম বিট ব্যবহৃত। আমার std::uniqueযা প্রয়োজন তা বাস্তবায়নের জন্য আমি রূপান্তর করছি। তবে সমস্ত যুক্তিটি করার জন্য অনেক কোড দরকার, এবং যখন আমি জুড়ে গেলাম তখন std::adjacent_findএটি স্পষ্টতই স্পষ্ট ছিল যে কোড আকারের ক্ষেত্রে এটি একটি বিজয়ী।
কোডি গ্রে

0

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

function c(&$a){foreach($a as$k=>$v)$a[$k+1]===$v&&array_splice($a,$k,2);}

অ্যারে হ্রাস করতে রেফারেন্স দ্বারা ফাংশন সি কলগুলি। এটি অনলাইনে চেষ্টা করুন

মজার বিষয় হল এটি Php5.6 এ কাজ করে তবে 7 নয় 7





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