অ্যারের উপাদানগুলির মধ্যে সমস্ত অ-অর্ডারযুক্ত জুটি


11

টাস্ক:

একটি অ্যারের উপাদানগুলির মধ্যে সমস্ত সম্ভাব্য জোড়া দিয়ে একটি অ্যারের ফেরত দিন ।

উদাহরণ

a=["a", "b", "c", "d"];প্রত্যাবর্তন থেকে b=[["a","b"],["a","c"],["a","d"],["b","c"],["b","d"],["c","d"]]

যতক্ষণ সম্ভব সমস্ত সংমিশ্রণগুলি অন্তর্ভুক্ত করা হয় এবং স্পষ্টতই ["b","d"]এর সমান হয় ততক্ষণ জোড়গুলি কোনও ক্রমে থাকতে পারে ["d","b"]

ইনপুট

শ্রেণি থেকে চরগুলি নিয়ে গঠিত অনন্য স্ট্রিং উপাদানের অ্যারে [a-z]

আউটপুট

2 ডি অ্যারেতে ইনপুট অ্যারের উপাদানগুলির সমস্ত সম্ভাব্য জোড়া রয়েছে।

পরীক্ষার কেস

input=["a","b","c"];
//output=[["a","b"],["a","c"],["b","c"]]

input=["a","b","c","d","e"];
//output=[["a","b"],["a","c"],["a","d"],["a","e"],["b","c"],["b","d"],["b","e"],["c","d"],["c","e"],["d","e"]]

দ্রষ্টব্য: আমি এই চ্যালেঞ্জটির একটি সদৃশ খুঁজে পাইনি । যদি এখানে থাকে তবে প্রশ্ন ছাড়ার জন্য আমাকে একটি মন্তব্য দিয়ে সতর্ক করুন।


2
যখন ইনপুট মানগুলি পুনরাবৃত্তি হয় বা সাজানো ক্রমে থাকে না তখন আমি কী ঘটছি তা সম্পর্কে আমি পরিষ্কার নই। আরও কিছু সাধারণ পরীক্ষার কেস সেখানে সহায়তা করবে।
xnor

@ অ্যাডম একটি ডুপ নয়, এতে 2 টি তালিকা রয়েছে।
মিঃ এক্সকোডার

এই সমস্যাটি নিজের সাথে কোনও উপাদান যুক্ত করা বাদ দেয় না, আরও ননডুপ্লিকেট।
ক্যালকুলেটরফলাইন

@ এক্সনর মানগুলি পুনরাবৃত্তি করার বিষয়ে ভাবেন নি কারণ আমার কর্মক্ষেত্রে আসল সমস্যাটি ব্যক্তির এক অনন্য সংখ্যার সাথে করা উচিত। আমার ধারণা শর্ত হিসাবে আমার স্বতন্ত্রতা যুক্ত করা উচিত?
alexandros84

@ alexandros84 স্বতন্ত্রতা ঠিক থাকবে। কি ["c","b","a"]ফিরতে হবে?
xnor

উত্তর:


5

আপনি আমাকে নিনজ করেছেন - ÇK€Yফুটারের মতো কিছু ব্যবহার করে আউটপুট প্রিন্ট করুন ।
জোনাথন অ্যালান

@ জোনাথান অ্যালান ওহ, ধন্যবাদ!
হাইপারনিউটারিনো

8

হাস্কেল , 29 বাইট

f(a:b)=map((,)a)b++f b
f _=[]

এটি অনলাইন চেষ্টা করুন! ব্যবহারের উদাহরণ: f ["a","b","c"]ফলন [("a","b"),("a","c"),("b","c")]


পতাকাটির সাহায্যে -XTupleSectionsএটি 27 বাইটে সংক্ষিপ্ত করা যায়, তবে পতাকাটি গণনা করা দরকার:

f(a:b)=map(a,)b++f b
f _=[]

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


আমি মনে করি আপনি বিটি কেসে সংশোধন করে একটি বাইট সংরক্ষণ করতে পারবেন f l=l
ক্রিজ্জেফিটজ

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

ভাল যুক্তি. আমি এটা ভাবিনি।
ক্রিজেফিটজ




5

vim, 50 48

AX<esc>qqYplX@qq@qqrYpllDkxh@rq:g/./norm@r<cr>:g/X/d<cr>dG

ফর্ম ইনপুট লাগে

abcd

এবং ফলাফল হিসাবে

ad
ac
ab
bd
bc
cd

ব্যাখ্যা

প্রথমত, 2-দৈর্ঘ্যের ইনপুট পরিচালনা করতে AX<esc>ইনপুটটিতে একটি সংযোজন Xকরা হয়, যা শীঘ্রই স্পষ্ট হয়ে উঠবে এমন কারণে প্রয়োজনীয়।

তারপরে আসে ফর্মের প্রথম পুনরাবৃত্ত ম্যাক্রো qq...@qq@q। (ম্যাক্রো রেকর্ড করুন q, আবার নিজেকে আবার চালান, রেকর্ডিংটি শেষ করুন, তারপরে একবার নিজেকে চালান)) ম্যাক্রোর শরীরে, Ypবর্তমান লাইনটি নকল করে , ম্যাক্রোটি lভেঙে যদি লাইনটি এখন একটি অক্ষর দীর্ঘ হয়, এবং Xমুছে দেয় লাইনে প্রথম অক্ষর। এটি উত্পাদন শেষ ফলাফল আছে

abcdX
abcX
abX
aX
X
X

Xআপাতত এটিকে উপেক্ষা করা , আমাদের কেবলমাত্র যা করতে হবে তা হল abcdX, উদাহরণস্বরূপ ab / ac / ad / aX। এটি দ্বিতীয় পুনরাবৃত্ত ম্যাক্রো দ্বারা অর্জন করা হয় qr...@rq,।

এই ম্যাক্রোতে আমরা প্রথমে লাইনটি ( Yp) নকল করি , তারপরে ডান দুটি ( ll) সরানো এবং ( ) এর শেষে মুছে ফেলে প্রথম দুটি অক্ষর ব্যতীত সমস্ত কিছুই মুছে ফেলি D। যেহেতু কার্সারটি এখন লাইনের দ্বিতীয় চারকটারে রয়েছে, kxতাই পূর্ববর্তী লাইনটি থেকে দ্বিতীয় অক্ষরটি মুছে ফেলা হবে, যা ঘটেছিল এমনটি যা লাইনের প্রথম অক্ষরটির সাথে কেবল জুটিবদ্ধ ছিল। এই প্রক্রিয়াটি আবার hম্যাক্রোর পুনরাবৃত্ত প্রকৃতির কারণে প্রয়োজনীয় হিসাবে লাইন ( ) এর শুরু থেকে আবার শুরু হয় ।

এটি এখন প্রতিটি লাইনে ম্যাক্রো চালানোর বিষয়, যা দিয়ে এটি অর্জন করা যেতে পারে :g/./norm@r(আমি কেন :%norm@rএটির চেয়ে আলাদাভাবে আচরণ করে তা নিশ্চিত নই , তবে বলা বাহুল্য যে পরবর্তীকাগণটি যেমন ইচ্ছা তেমন কাজ করে না)) এর সাথে লাইনগুলি Xমুছে ফেলা হয় :g/X/d, এবং rম্যাক্রো নির্মাণের ফলাফল হিসাবে শেষে বাম ফাঁকা লাইনগুলি পরিষ্কার করা হয় dG


দুর্দান্ত উত্তর। আমার এর মধ্য দিয়ে যেতে সময় লাগবে।
alexandros84





3

পাইথন, 53 বাইট

2 ক্যালকুলেটরফ্লাইনে ধন্যবাদ বাইট সংরক্ষণ করেছে saved

lambda a:[(x,y)for i,x in enumerate(a)for y in a[:i]]

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


1
a[i+1:]হতে পারেa[:i]
ক্যালকুলেটরফলাইন

দীর্ঘ ব্যবহারকারীর নামটি কেবল উল্লিখিত ব্যবহারকারীর উল্লেখ করে সংক্ষিপ্ত মন্তব্যগুলি সহজ করে তোলে।
ক্যালকুলেটরফলাইন

3

অক্টাভা , 49 48 বাইট

@(x)[imag(y=(y=triu(x+j*x',1))(~~y)) real(y) '']

বেনামে ফাংশন যা অন্তর্নির্মিত ( nchoosek) এড়ায় ।

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

ব্যাখ্যা

x+j*x'জটিল সংখ্যার যেখানে বাস্তব এবং কল্পিত অংশের ইনপুট থেকে কোড পয়েন্ট সবকিছুর যুগল হয় একটি ম্যাট্রিক্স গড়ে তুলতে সম্প্রচার ব্যবহার x

y=triu(...,1)উপরের ত্রিভুজাকার অংশটি তির্যক বাদ দিয়ে বাকি উপাদানকে শূন্য করে তোলে। ফলাফলটি ভেরিয়েবলের জন্য বরাদ্দ করা হয় y

y=(...)(~~y)ভেরিয়েবলের জন্য নির্ধারিত কলাম ভেক্টর আকারে ননজারো উপাদানগুলি ধরে রাখে y

imag(...)এবং real(...)আসল এবং কল্পিত অংশগুলি বের করুন।

[... ... ''] আউটপুট তৈরি করতে চরে ফিরে রূপান্তরিত হয়।


নিস! পুরো চ্যালেঞ্জটি সত্যিই আকর্ষণীয়। আমার এস 5 কোডটি (নীচে বৈশিষ্ট্যযুক্ত) নিয়ে আসতে আমার প্রায় দেড় ঘন্টা সময় লেগেছে। আমি আনন্দিত এটি এত আকর্ষণীয় উত্তর উত্পন্ন করেছে ..
alexandros84





2

পাইথ , 7 4 বাইট

-3 বাইট ধন্যবাদ লিকি নুনকে !

.cQ2

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



@ ল্যাকইনুন আমি শপথ করতে পারতাম এমন একটি অনুষ্ঠান ছিল যা এই চ্যালেঞ্জের প্রয়োজন মতো করেছিল তবে আমি কেবলমাত্র .Cতালিকাটি দেখার সময় দেখেছি । চমৎকার ধরা!
notjagan


1

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

a=>a.map((x,i)=>a.slice(0,i).map(y=>[x,y])).slice(1)

যদি এমন flatMapকিছু হত যা প্রচুর বাইট সংরক্ষণ করতে পারে।


আরে সুন্দর উত্তর! আপনি চাইলে আমি আপনার অধ্যয়নকালে আমার এসএলের উত্তরটি পরীক্ষা করে দেখুন। কোন প্রতিক্রিয়া প্রশংসা করা হবে (ইতিবাচক / গঠনমূলক haha)
alexandros84

1
ফায়ারফক্স 30 এর অ্যারে comprehensions একটি ফ্ল্যাট মানচিত্র যেমন ভান করতে পারেন a=>[for(x of[...a])for(y of(a.shift(),a))[x,y]]
নিল

@ নীল, সেখানে কিছু সত্যিকারের উন্নত বাক্য গঠন ... আপনার অভিব্যক্তি বোঝার জন্য আমাকে কমপক্ষে তিনটি জিনিস গুগল করতে হবে। যথা স্প্রেড অপারেটর, অ্যারে বোধগম্যতা কী এবং শেষ [x, y] কী (এখনও তার উত্তর খুঁজে পায়নি)।
alexandros84

1
@ আলেকজান্দ্রো 84 এই শেষটি [x,y]সহজ বিট, এটি কেবল একটি অ্যারে আক্ষরিক।
নিল

1
এছাড়াও স্প্রেড অপারেটর কেবল অ্যারে অনুলিপি করতে পারে, যেহেতু আমি এটিকে লুপের অভ্যন্তরে পরিবর্তন করছি।
নিল

1

পাইথন , 55 বাইট

f=lambda s:[(s[0],j)for j in s[1:]]+f(s[1:])if s else[]

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

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


যাচাই করার জন্য সময় নেই, আমি আশা করি সত্যই ভিন্ন কৌশলটি কারণ আমি উত্সাহিত হয়েছি।
alexandros84

আমি মনে করি এটি @ ovs এর পাইথন 3 উত্তরের একটি খুব অনুরূপ পন্থা।
নিল




1

Clojure, 42 বাইট

#(set(for[i % j(remove #{i}%)](set[i j])))

সেটগুলির সেট ফেরত দেয় :)


1

পাইথন, 74 বাইট

f=lambda a:[(c,d) for i,c in enumerate(a) for j,d in enumerate(a) if i<j]

1
পিপিসিজিতে আপনাকে স্বাগতম! আপনি এটিকে গল্ফ করতে পারেন: 1) 2-চর ভেরিয়েবলের নাম 1-চর 2 দিয়ে প্রতিস্থাপন করুন) অপ্রয়োজনীয় সাদা স্থান 3 সরান) এটি একটি স্নিপেট, আপনার এটি একটি ল্যাম্বডা, ফাংশন বা সম্পূর্ণ প্রোগ্রামে তৈরি করা দরকার
এরিক দি আউটগলফার

10 বাইট বন্ধ গল্ফিং: 64 বাইট
জনাব এক্সকডার

1

জাভাস্ক্রিপ্ট (ইএস 5), 108 থেকে 78 বাইট পর্যন্ত

আমি আজ আমার উত্তর পোস্ট করি তবে আমি অবশ্যই আমার নিজের উত্তরটি গ্রহণ না করার প্রতিশ্রুতি দিচ্ছি:

x=input;
a=[];

for(n=0;n<(x.length-1);n++){for(i=n+1;i<(x.length);i++){a.push([x[n],x[i]]);}}

1
পিপিসিজিতে আপনাকে স্বাগতম; আমরা অপ্রয়োজনীয় সাদা স্থান অপসারণ সহ সাবমিশনগুলি গল্ফ হওয়ার আশা করি
HyperNeutrino

Ty। আমি এটিও ভাবছিলাম: আমি x = ইনপুট অন্তর্ভুক্ত করা উচিত ছিল; একটি = []; আমার উত্তরে নাকি? আমি আগামীকাল সম্পাদনা করব।
অ্যালেক্সান্দ্রস

আপনি হয় কেবল একটি ফাংশন জমা দিতে বা একটি সম্পূর্ণ প্রোগ্রাম করতে পারেন। যেহেতু আপনি ব্যবহার করেন তাই আপনার aএটি সংজ্ঞায়িত করা দরকার তবে আপনি এর একটি ক্রিয়াকলাপ তৈরি করতে পারেন x
হাইপার নিউট্রিনো

@ হাইপার নিউট্রিনো এখন অনেক ভাল
alexandros84

1
আমি মনে করি আপনি কিছু স্থান বাঁচাতে কিছু সেমিকোলন এবং খালি লাইন বাদ দিতে পারেন। আমিও মনে করি আপনি পরিবর্তন করতে পারেন for(i=n+1;i<(x.length);i++)থেকে for(i=n;++i<x.length;)। অনুরূপভাবে, আপনি পরিবর্তন করতে পারেন n<(x.length-1);n++থেকেn++<x.length-1
musicman523

0

জে , 17 বাইট

({~$#:I.@,)#\</#\

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

ব্যাখ্যা

({~$#:I.@,)#\</#\  Input: string S
               #\  Get the length of each prefix of S
           #\      Get the length of each prefix of S again
             </    Test using greater than (<) between each
         ,         Flatten
      I.@          Find the indices where the value is 1
   $               Shape of that table
    #:             Convert the indices to the base represented by the shape
 {~                Index into S at those values
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.