সুপারস্টার গণনা করুন


18

এখানে আপনার কাজ সহজ:

পূর্ণসংখ্যা সেটগুলির একটি তালিকা দেওয়া, সেট ইউনিয়নটি সন্ধান করুন। অন্য কথায়, পূর্ণসংখ্যার সেটগুলির সংক্ষিপ্ত তালিকাটি সন্ধান করুন যাতে সেটগুলির মূল তালিকার সমস্ত উপাদান রয়েছে (তবে কোনও উপাদান নেই)। উদাহরণ স্বরূপ:

[1,5] and [3,9] becomes [1,9] as it contains all of the elements in both [1,5] and [3,9]
[1,3] and [5,9] stays as [1,3] and [5,9], because you don't want to include 4

সীমাগুলি পরিসীমা স্বরলিপি ব্যবহার করে চিহ্নিত করা হয়: [1,4]মানে পূর্ণসংখ্যা 1,2,3,4। সেটগুলি আনবাউন্ডও করা যায়: [3,]মানে পূর্ণসংখ্যার সবকটি অর্থ >= 3এবং পূর্ণসংখ্যাগুলির [,-1]অর্থ <= -1। এটি গ্যারান্টিযুক্ত যে পরিসরের প্রথম উপাদানটি দ্বিতীয়টির চেয়ে বেশি হবে না।

আপনি স্ট্রিং নোটেশনে সেট নিতে বেছে নিতে পারেন, বা আপনি "অসীম" মান হিসাবে ধ্রুবক অ-পূর্ণসংখ্যার ব্যবহার করে 2-উপাদান টিউপলগুলি ব্যবহার করতে পারেন। অসীম উপরের বাউন্ড এবং অনন্ত নিম্ন সীমাটি উপস্থাপন করতে আপনি দুটি স্বতন্ত্র ধ্রুবক ব্যবহার করতে পারেন। উদাহরণস্বরূপ, জাভাস্ক্রিপ্টে, আপনি সমস্ত পরীক্ষার ক্ষেত্রে যতক্ষণ না ধারাবাহিকভাবে সমস্ত পরীক্ষার ক্ষেত্রে ব্যবহার করেন ততক্ষণ আপনি [3,{}]সমস্ত পূর্ণসংখ্যার নোট করতে ব্যবহার করতে পারেন ।>= 3{}

পরীক্ষার কেস:

[1,3]                     => [1,3]
[1,]                      => [1,]
[,9]                      => [,9]
[,]                       => [,]
[1,3],[4,9]               => [1,9]
[1,5],[8,9]               => [1,5],[8,9]
[1,5],[1,5]               => [1,5]
[1,5],[3,7]               => [1,7]
[-10,7],[1,5]             => [-10,7]
[1,1],[2,2],[3,3]         => [1,3]
[3,7],[1,5]               => [1,7]
[1,4],[8,]                => [1,4],[8,]
[1,4],[-1,]               => [-1,]
[1,4],[,5]                => [,5]
[1,4],[,-10]              => [1,4],[,-10]
[1,4],[,]                 => [,]
[1,4],[3,7],[8,9],[11,20] => [1,9],[11,20]

এটি , তাই আপনার উত্তরটি যতটা সম্ভব সংক্ষিপ্ত করুন!



1
আমি কি Infinityপরিবর্তে ব্যবহার করতে পারি {}?
লুইস ফেলিপ দে জেসুস মুনোজ

আমরা কি [1.0, 3.0]পরিবর্তে ভাসমান মান হিসাবে ইনপুট নিতে পারি [1, 3]?
অ্যাডমবর্কবার্ক

যতক্ষণ আপনি এগুলি পূর্ণসংখ্যা হিসাবে বিবেচনা করবেন, হ্যাঁ। অন্য কথায় [1.0, 3.0], [4.0, 5.0]এখনও হওয়া উচিত[1.0, 5.0]
নাথান মেরিল

যদি আপনার ভাষা গ্রহণ করতে Infinityএবং -Infinityইনপুট হিসাবে না নিতে পারে , তবে এটির পরিবর্তে ( -999999এবং 999999আরও বড় / আরও ছোট) গ্রহণের অনুমতি দেওয়া হচ্ছে কি?
কেভিন ক্রুইজসেন

উত্তর:


7

আর + intervals, 90 87 81 বাইট

function(...)t(reduce(Intervals(rbind(...),type="Z")))+c(1,-1)
library(intervals)

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

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

সাধারণত অ-মানক গ্রন্থাগার ব্যবহারের অনুরাগী নন তবে এটি মজাদার ছিল। টিআইও intervalsইনস্টল করেনি । আপনি এটি নিজের ইনস্টলেশন বা https://rdrr.io/snippets/ এ চেষ্টা করতে পারেন

intervalsপ্যাকেজ সমর্থন বাস্তব এবং পূর্ণসংখ্যা ( type = "Z") অন্তরাল ও reduceফাংশন একটি বিল্ট-ইন কি চ্যালেঞ্জ চায় কিন্তু আউটপুট তাই হয়, খোলা অন্তর ডিফল্ট বলে মনে হয় জন্য কাঙ্ক্ষিত ফলাফল পেতে প্রয়োজন হয়।close_intervals +c(1,-1)

পুরানো সংস্করণে তালিকার তালিকায় উদাহরণ রয়েছে যা সুবিধাজনক হতে পারে তাই আমি লিঙ্কটি এখানে রেখেছি।


আমি মনে করি আপনি কয়েক বাইট সংরক্ষণ করতে পারেন: function(...)close_intervals(reduce(Intervals(rbind(...),type="Z")))। অথবা আরও ভাল আপনি ওপিতে চেক করতে পারেন যদি তারা কোনও ম্যাট্রিক্সকে ইনপুট হিসাবে অনুমতি দেয় তবে।
জাইসি

1
আমি "রাতে ইনপুট ভেক্টর থেকে একটি ম্যাট্রিক্স করার আরও ভাল উপায় থাকতে পারে" ভেবে আক্ষরিক অর্থে আমি বিছানায় জেগে ছিলাম। আমি মনে করি চ্যালেঞ্জটি ইনপুটটি যেমন রয়েছে তেমনই ভাল। তবে সেখানে থাকা reduceও মজাদার ছিল Reduce
এনজিএম

আমি "ডাবল হ্রাস" জিনিস পছন্দ! যথেষ্ট golfy না;) সম্পর্কে এই মত খোলা অন্তর পরিবর্তন কী: f=function(...)t(reduce(Intervals(rbind(...),type="Z")))+c(1,-1)?
জয়সি

6

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

@ শ্যাগগি
1 কে বাইট ধন্যবাদ সংরক্ষিত @ কেভিন ক্রুইজসেনকে ধন্যবাদ 1 বাইট

+/-Infinityঅসীম মানগুলির প্রত্যাশা ।

a=>(a.sort(([p],[P])=>p-P).map(m=M=([p,q])=>p<M+2?M=q>M?q:M:(b.push([m,M]),m=p,M=q),b=[]),b[0]=[m,M],b)

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

কিভাবে?

আমরা প্রথমে বিরতিগুলিকে তাদের নিম্ন সীমা অনুসারে, সর্বনিম্ন থেকে সর্বোচ্চে বাছাই করি। উপরের সীমানা উপেক্ষা করা হয়।

আমরা তখন বারবার সাজানো অন্তর উপর , যখন বর্তমান আপার এবং লোয়ার বাউন্ড সম্পর্কে অবগত থাকার এবং , এর সক্রিয়া এবং যথাক্রমে।[pn,qn]mMp1q1

প্রতিটি ব্যবধানের জন্য :[pn,qn]

  • যদি : এই বিরতিটি পূর্ববর্তীগুলির সাথে একত্রীকরণ করা যায়। তবে আমাদের একটি নতুন উপরের বাউন্ড থাকতে পারে, তাই আমরা থেকে আপডেট করি ।pnM+1Mmax(M,qn)
  • অন্যথায়: পূর্ববর্তী অন্তর এবং এটির মধ্যে একটি ব্যবধান রয়েছে। আমরা একটি নতুন ব্যবধান তৈরি এবং আপডেট এবং করার এবং যথাক্রমে।[m,M]mMpnqn

প্রক্রিয়া শেষে, আমরা বর্তমান সীমানা সাথে একটি শেষ বিরতি তৈরি করি ।[m,M]

মন্তব্য

a => (                  // a[] = input array
  a.sort(([p], [P]) =>  // sort the intervals by their lower bound; we do not care about
    p - P)              // the upper bounds for now
  .map(m = M =          // initialize m and M to non-numeric values
    ([p, q]) =>         // for each interval [p, q] in a[]:
    p < M + 2 ?         //   if M is a number and p is less than or equal to M + 1:
      M = q > M ? q : M //     update the maximum M to max(M, q)
    : (                 //   else (we've found a gap, or this is the 1st iteration):
      b.push([m, M]),   //     push the interval [m, M] in b[]
      m = p,            //     update the minimum m to p
      M = q             //     update the maximum M to q
    ),                  //
    b = []              //   start with b[] = empty array
  ),                    // end of map()
  b[0] = [m, M], b      // overwrite the 1st entry of b[] with the last interval [m, M]
)                       // and return the final result

p<=M+1হতে পারে p<M+2?
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন আমি পুরোপুরি মিস করেছি ... ধন্যবাদ!
আর্নল্ড

4

পাইথন 2 , 118 113 112 111 106 105 104 101 বাইট

x=input()
x.sort();a=[];b,c=x[0]
for l,r in x:
 if l>c+1:a+=(b,c),;b,c=l,r
 c=max(c,r)
print[(b,c)]+a

মিস্টার এক্সকোডারকে একটি বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে, জনাথন ফ্রেচের একটি ধন্যবাদ এবং ডেড পসুমের জন্য তিনটি ধন্যবাদ।
এটি অনলাইন চেষ্টা করুন!


(b,c),একটি বাইট সংরক্ষণ করে।
মিঃ এক্সকোডার

হু, ভেবেছি আমি ইতিমধ্যে চেষ্টা করেছিলাম।

এর gঅর্থ এই নয় যে আপনার ফাংশনটি fপুনরায় ব্যবহারযোগ্য নয় এবং তাই অবৈধ?
নীল

@ নীল সম্ভবত, তবে এটি পূর্বের প্রচেষ্টা থেকে একটি হোল্ডওভার ছিল।

1
আপনি অন্য বাইট জন্য returnহয়ে যায়print
জোনাথন ফ্রেচ

2

রুবি , 89 76 বাইট

->a{[*a.sort.reduce{|s,y|s+=y;y[0]-s[-3]<2&&s[-3,3]=s.max;s}.each_slice(2)]}

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

অ্যারে বাছাই করুন, তারপরে প্রথমটিতে সমস্ত ব্যাপ্তি যুক্ত করে চ্যাপ্ট করুন: যদি কোনও পরিসীমা পূর্ববর্তীটিকে ওভারল্যাপ করে তবে শেষ 3 থেকে 2 উপাদান বাদ দিন (কেবলমাত্র সর্বোচ্চ রাখা)।

সব শেষে সমাপ্ত করুন।


1

পাস্কাল (এফপিসি) , 367 362 357 বাইট

uses math;type r=record a,b:real end;procedure d(a:array of r);var i,j:word;t:r;begin for i:=0to length(a)-1do for j:=0to i do if a[i].a<a[j].a then begin t:=a[i];a[i]:=a[j];a[j]:=t;end;j:=0;for i:=1to length(a)-1do if a[j].b>=a[i].a-1then begin a[j].a:=min(a[i].a,a[j].a);a[j].b:=max(a[i].b,a[j].b)end else j:=j+1;for i:=0to j do writeln(a[i].a,a[i].b)end;

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

এমন একটি প্রক্রিয়া যা 2 টি ব্যাপ্তির সীমা নিয়ে গঠিত রেকর্ডগুলির একটি গতিশীল অ্যারে নেয় , স্থানে অ্যারেটিকে সংশোধন করে এবং পরে স্ট্যান্ডার্ড আউটপুটে লেখায়, প্রতি লাইনে এক রেঞ্জ। (এই বাঁকানো বাক্যটির জন্য দুঃখিত)) 1/0আনবাউন্ড আপ এবং আনবাউন্ডড -1/0ডাউন এর জন্য ব্যবহার ।

পঠনযোগ্য সংস্করণ

এটা চমৎকার মাত্র উপাদানের সংশোধন নম্বর দিয়ে অ্যারের ফিরে যাওয়ার হতে পারে, কিন্তু গতিশীল অ্যারে ফাংশন / কার্যপ্রণালী প্রেরণ গতিশীল অ্যারে আর হয় না ... প্রথম আমি দেখেছি এই , তারপর এই হল চমৎকার, মন-boggling ব্যাখ্যা

কোডটি সংক্ষিপ্ত করার জন্য এটি আমার সেরা ডাটা স্ট্রাকচার। আপনার যদি আরও ভাল বিকল্প থাকে তবে নির্দ্বিধায় কোনও পরামর্শ দিন।


1

ওল্ফ্রাম ভাষা (গণিত) , 57 বাইট

List@@(#-{0,1}&/@IntervalUnion@@(Interval[#+{0,1}]&/@#))&

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

{a,b}ব্যবধান প্রতিনিধিত্ব করে তালিকার একটি তালিকা হিসাবে ইনপুট নেয় [a,b], যেখানে aহতে পারে -Infinityএবং bহতে পারে Infinity

অন্তর্নির্মিত ব্যবহার করে IntervalUnionতবে অবশ্যই আমাদের প্রথমে অন্তরগুলি আকারে ম্যাসেজ করতে হবে। অন্তরগুলি পূর্ণসংখ্যার ভান করার জন্য, আমরা উপরের সীমানায় 1 যুক্ত করি (এটি নিশ্চিত করে যে মিলিত হয়েছে [1,3]এবং [4,9]এটি রয়েছে [1,9])। শেষে, আমরা এই অপারেশনটি পূর্বাবস্থায় ফিরিয়ে আছি, এবং ফলাফলটিকে তালিকার তালিকায় ফিরিয়ে আছি।

একটি সম্পূর্ণ ভিন্ন পদ্ধতিরও রয়েছে, যা by৩ বাইটে আটকে রয়েছে :

NumericalSort@#//.{x___,{a_,b_},{c_,d_},y___}/;b+1>=c:>{x,{a,b~Max~d},y}&

এখানে, অন্তরগুলি বাছাই করার পরে, আমরা কেবল তাদের ইউনিয়ন দ্বারা টানা দুটি অন্তর প্রতিস্থাপন করি যখনই এটি একক বিরতি হতে পারে, এবং এমন কোনও অপারেশন সম্পন্ন না হওয়া অবধি পুনরাবৃত্তি করি।


1

05AB1E (উত্তরাধিকার) , 88 79 78 বাইট

g≠i˜AKïDW<UZ>VIøεAXY‚Nè:}ïø{©˜¦2ôíÆ1›.œʒíεćsO_*}P}н€g®£εø©θàDYQiA}V®нßDXQiA}Y‚

অনন্ত হ'ল ছোট হাতের বর্ণমালা ( 'abcdefghijklmnopqrstuvwxyz') হিসাবে ইনপুট ।

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

গুরুত্বপূর্ণ দ্রষ্টব্য: যদি আসলটি থাকে Infinityএবং -Infinityএটির পরিবর্তে এটি 43 42 বাইট হত। প্রায় 30 % এর কাছাকাছি খুব কমই অভাবের জন্য প্রায় কাজ হিসাবে Infinity..

{©Dg≠i˜¦2ôíÆ1›.œʒíεćsO_*}P}н€g®£εø©θàV®нßY‚

এটি অনলাইনে চেষ্টা করুন (এর সাথে Infinityপ্রতিস্থাপিত 9999999999এবং -Infinityপ্রতিস্থাপন সহ -9999999999)।

স্পষ্টতই যথেষ্ট পরিমাণে গল্ফ করা যেতে পারে। শেষ পর্যন্ত এটি খুব, খুব কুরুচিপূর্ণ workaround পূর্ণ পরিণত। তবে আপাতত আমি আনন্দিত যে এটি কাজ করছে।

ব্যাখ্যা:

Dgi          # If the length of the implicit input is NOT 1:
              #   i.e. [[1,3]] → length 1 → 0 (falsey)
              #   i.e. [[1,4],["a..z",-5],[3,7],[38,40],[8,9],[11,20],[25,"a..z"],[15,23]]
              #    → length 8 → 1 (truthy)
    ˜         #  Take the input implicit again, and flatten it
              #   i.e. [[1,4],["a..z",-5],[3,7],[38,40],[8,9],[11,20],[25,"a..z"],[15,23]]
              #    → [1,4,"a..z",-5,3,7,38,40,8,9,11,20,25,"a..z",15,23]
     AK       #  Remove the alphabet
              #   i.e. [1,4,"a..z",-5,3,7,38,40,8,9,11,20,25,"a..z",15,23]
              #    → ['1','4','-5','3','7','38','40','8','9','11','20','25','15','23']
       ï      #  Cast everything to an integer, because `K` turns them into strings..
              #   i.e. ['1','4','-5','3','7','38','40','8','9','11','20','25','15','23']
              #    → [1,4,-5,3,7,38,40,8,9,11,20,25,15,23]
        D     #  Duplicate it
         W<   #  Determine the min - 1
              #   i.e. [1,4,-5,3,7,38,40,8,9,11,20,25,15,23] → -5
           U  #  Pop and store it in variable `X`
         Z>   #  Determine the max + 1
              #   i.e. [1,4,-5,3,7,38,40,8,9,11,20,25,15,23] → 40
           V  #  Pop and store it in variable `Y`
Iø            #  Take the input again, and transpose/zip it (swapping rows and columns)
              #   i.e. [[1,4],["a..z",-5],[3,7],[38,40],[8,9],[11,20],[25,"a..z"],[15,23]]
              #    → [[1,'a..z',3,38,8,11,25,15],[4,-5,7,40,9,20,'a..z',23]]
  ε       }   #  Map both to:
   A          #   Push the lowercase alphabet
    XY       #   Push variables `X` and `Y`, and pair them into a list
       Nè     #   Index into this list, based on the index of the mapping
         :    #   Replace every alphabet with this min-1 or max+1
              #   i.e. [[1,'a..z',3,38,8,11,25,15],[4,-5,7,40,9,20,'a..z',23]]
              #    → [['1','-6','3','38','8','11','25','15'],['4','-5','7','40','9','20','41','23']]
ï             #  Cast everything to integers again, because `:` turns them into strings..
              #   i.e. [['1','-6','3','38','8','11','25','15'],['4','-5','7','40','9','20','41','23']]
              #    → [[1,-6,3,38,8,11,25,15],[4,-5,7,40,9,20,41,23]]
 ø            #  Now zip/transpose back again
              #   i.e. [[1,-6,3,38,8,11,25,15],[4,-5,7,40,9,20,41,23]]
              #    → [[1,4],[-6,-5],[3,7],[38,40],[8,9],[11,20],[25,41],[15,23]]
  {           #  Sort the pairs based on their lower range (the first number)
              #   i.e. [[1,4],[-6,-5],[3,7],[38,40],[8,9],[11,20],[25,41],[15,23]]
              #    → [[-6,-5],[1,4],[3,7],[8,9],[11,20],[15,23],[25,41],[38,40]]
   ©          #  Store it in the register (without popping)
˜             #  Flatten the list
              #   i.e. [[-6,-5],[1,4],[3,7],[8,9],[11,20],[15,23],[25,41],[38,40]]
              #    → [-6,-5,1,4,3,7,8,9,11,20,15,23,25,41,38,40]
 ¦            #  And remove the first item
              #   i.e. [-6,-5,1,4,3,7,8,9,11,20,15,23,25,41,38,40]
              #    → [-5,1,4,3,7,8,9,11,20,15,23,25,41,38,40]
  2ô          #  Then pair every two elements together
              #   i.e. [-5,1,4,3,7,8,9,11,20,15,23,25,41,38,40]
              #    → [[-5,1],[4,3],[7,8],[9,11],[20,15],[23,25],[41,38],[40]]
    í         #  Reverse each pair
              #   i.e. [[-5,1],[4,3],[7,8],[9,11],[20,15],[23,25],[41,38],[40]]
              #    → [[1,-5],[3,4],[8,7],[11,9],[15,20],[25,23],[38,41],[40]]
     Æ        #  Take the difference of each pair (by subtracting)
              #   i.e. [[1,-5],[3,4],[8,7],[11,9],[15,20],[25,23],[38,41],[40]]
              #    → [6,-1,1,2,-5,2,-3,40]
      1      #  Determine for each if they're larger than 1
              #   i.e. [6,-1,1,2,-5,2,-3,40] → [1,0,0,1,0,1,0,1]
            #  Create every possible partition of these values
              #   i.e. [1,0,0,1,0,1,0,1] → [[[1],[0],[0],[1],[0],[1],[0],[1]],
              #                             [[1],[0],[0],[1],[0],[1],[0,1]],
              #                             ...,
              #                             [[1,0,0,1,0,1,0],[1]],
              #                             [[1,0,0,1,0,1,0,1]]]
  ʒ         } #  Filter the partitions by:
   í          #   Reverse each inner partition
              #    i.e. [[1],[0,0,1],[0,1],[0,1]] → [[1],[1,0,0],[1,0],[1,0]]
    ε     }   #   Map each partition to:
     ć        #    Head extracted
              #     i.e. [1,0,0] → [0,0] and 1
              #     i.e. [1] → [] and 1
              #     i.e. [1,0,1] → [1,0] and 1
      s       #    Swap so the rest of the list is at the top of the stack again
       O      #    Take its sum
              #     i.e. [0,0] → 0
              #     i.e. [] → 0
              #     i.e. [1,0] → 1
        _     #    And check if it's exactly 0
              #     i.e. 0 → 1 (truthy)
              #     i.e. 1 → 0 (falsey)
         *    #    And multiply it with the extracted head
              #    (is only 1 when the partition has a single trailing 1 and everything else a 0)
              #     i.e. 1 and 1 → 1 (truthy)
              #     i.e. 1 and 0 → 0 (falsey)
           P  #   And check if all mapped partitions are 1
н             #  Take the head (there should only be one valid partition left)
              #   i.e. [[[1],[0,0,1],[0,1],[0,1]]] → [[1],[0,0,1],[0,1],[0,1]]
 g           #  Take the length of each inner list
              #   i.e. [[1],[0,0,1],[0,1],[0,1]] → [1,3,2,2]
   ®          #  Push the sorted pairs we've saved in the register earlier
    £         #  Split the pairs into sizes equal to the partition-lengths
              #   i.e. [1,3,2,2] and [[-6,-5],[1,4],[3,7],[8,9],[11,20],[15,23],[25,41],[38,40]]
              #    → [[[-6,-5]],[[1,4],[3,7],[8,9]],[[11,20],[15,23]],[[25,41],[38,40]]]
ε             #  Map each list of pairs to:
 ø            #   Zip/transpose (swapping rows and columns)
              #    i.e. [[1,4],[3,7],[8,9]] → [[1,3,8],[4,7,9]]
              #    i.e. [[25,41],[38,40]] → [[25,38],[41,40]]
  ©           #   Store it in the register
   θ          #   Take the last list (the ending ranges)
              #    i.e. [[25,38],[41,40]] → [41,40]
    à         #   And determine the max
              #    i.e. [41,40] → 41
     DYQi }   #   If this max is equal to variable `Y`
              #     i.e. 41 (`Y` = 41) → 1 (truthy)
         A    #    Replace it back to the lowercase alphabet
           V  #   Store this max in variable `Y`
  ®           #   Take the zipped list from the register again
   н          #   This time take the first list (the starting ranges)
              #    i.e. [[25,38],[41,40]] → [25,38]
    ß         #   And determine the min
              #    i.e. [25,38] → 25
     DXQi }   #   If this min is equal to variable `X`
              #     i.e. 25 (`X` = -6) → 0 (falsey)
         A    #    Replace it back to the lowercase alphabet
           Y #   And pair it up with variable `Y` (the max) to complete the mapping
              #    i.e. 25 and 'a..z' → [25,'a..z']
              #  Implicitly close the mapping (and output the result)
              #   i.e. [[[-6,-5]],[[1,4],[3,7],[8,9]],[[11,20],[15,23]],[[25,41],[38,40]]]
              #    → [['a..z',-5],[1,9],[11,23],[25,'a..z']]
              # Implicit else (only one pair in the input):
              #  Output the (implicit) input as is
              #   i.e. [[1,3]]

1

সি (ঝনঝন) , 346 342 বাইট

কম্পাইলার পতাকা -DP=printf("(%d,%d)\n", -DB=a[i+1]এবং-DA=a[i]

typedef struct{int a,b;}t;s(t**x,t**y){if((*x)->a>(*y)->a)return 1;else if((*x)->a<(*y)->a)return -1;}i;f(t**a){for(i=0;A;)i++;qsort(a,i,sizeof(t*),s);for(i=0;B;i++){if(B->a<=A->b+1){A->b=B->b;if(B->a<A->a)A->a=B->a;else B->a=A->a;}}for(i=0;A;i++){if(!B)break;if(A->a!=B->a)P,A->a,A->b);}P,A->a,A->b);}

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


আমি মনে করি আপনি iবিশ্বব্যাপী মানের উপর নির্ভর করছেন ।
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচের অর্থ কী তা হ'ল বিশ্ব-স্তরে তার ডিফল্ট মানটি ব্যবহার না করে এটি যখন লুপ-এ ব্যবহার করার আগে স্পষ্টভাবে সেট while(A)i++;করা উচিত । আর কেন তা নিশ্চিত নয়, তবে এটি মেটা বিধি অনুসারে প্রয়োজনীয়। মূলত কারণগুলি পদ্ধতি কল, আইআইআরসি-র মধ্যে বৈশ্বিক মানগুলি পুনরায় সেট না করেই পদ্ধতিগুলি স্বয়ংসম্পূর্ণ / পুনরায় ব্যবহারযোগ্য হবে। for(i=0;A;)i++;i=00
কেভিন ক্রুইজসেন

বৈশ্বিক iমানের উপর স্থির নির্ভরতা
লোজার্ন



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