নেতিবাচক স্পেস গ্রাফগুলি


13

কার্য

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

অ কারিগরী

গ্রাফটি নোডগুলির একটি সেট যা লাইন দ্বারা সংযুক্ত থাকে। প্রতিটি জোড় পয়েন্ট একটি লাইন বা কোনওটির মাধ্যমে সংযুক্ত হতে পারে। গ্রাফের "পরিপূরক" হ'ল গ্রাফটি নেওয়ার এবং সংযুক্ত নয় এমন সমস্ত নোডকে সংযুক্ত করার এবং সমস্ত নোড যা সংযোগ বিচ্ছিন্ন করার ফলাফল।

একটি স্ব-পরিপূরক গ্রাফ এমন একটি গ্রাফ যার পরিপূরকটি মূল আকারে পুনরায় সাজানো যায়। নীচে একটি স্ব-পরিপূরক গ্রাফের উদাহরণ এবং কীভাবে তার একটি প্রদর্শনের উদাহরণ রয়েছে।

এখানে 5 টি নোড সহ একটি গ্রাফ রয়েছে:

5-নোড গ্রাফ

লাল বিন্দুযুক্ত রেখার সাথে সংযোগগুলি যেতে পারে এমন সমস্ত জায়গাগুলি আমরা হাইলাইট করব:

হাইলাইট গ্রাফ

এখন আমরা লাল এবং কালো প্রান্তটি অদলবদল করে গ্রাফের পরিপূরকটি খুঁজে পাব:

পূরক

এটি মূল গ্রাফের মতো দেখায় না তবে আমরা যদি নোডগুলি এর মতো চারদিকে সরিয়ে নিয়ে যাই (প্রতিটি পদক্ষেপ দুটি নোড বদল করে):

Isomorphism

আমরা আসল গ্রাফ পেতে! গ্রাফ এবং এর পরিপূরক একই গ্রাফ

কারিগরী

একটি স্ব-পরিপূরক গ্রাফ এমন একটি গ্রাফ যা এর পরিপূরকটির জন্য বিস্মৃত হয়।

বিশেষ উল্লেখ

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

এটি এবং আপনার বাইট গণনা হ্রাস করার লক্ষ্য করা উচিত।

পরীক্ষার কেস

নীচে বেশ কয়েকটি এন এর সম্ভাব্য আউটপুটগুলির ছবি রয়েছে

4

5

9


একটি স্ব-পরিপূরক গ্রাফ কেবল তখনই উপস্থিত থাকতে পারে যেখানে সম্পূর্ণ গ্রাফের একাধিক প্রান্ত থাকে। আমরা কি এর গ্যারান্টিযুক্ত?
xnor

@ এক্সনর আমি এটি অন্তর্ভুক্ত করতে ভুলে গেছি। এখনই স্থির।
অ্যাডহক গার্ফ হান্টার

আমাদের কি নেতিবাচক ইনপুটগুলি পরিচালনা করতে হবে?
xnor

@ এক্সনর নং আমি প্রশ্নটি একত্রিত করার জন্য স্থির করব
অ্যাডহক গার্ফ হান্টার

3
যে কোনও উত্তরটির ভিত্তিতে ধারণা পাওয়ার আগে GraphData@{"SelfComplementary",{#,1}}&, আমি বিশ্বাস করি যে nওল্ফ্রামের ডাটাবেস থেকে নিম্নের জন্য কয়েকটি উদাহরণ লোড করে, তাই এটি নির্বিচারে বড় ইনপুটগুলির পক্ষে কাজ করবে না।
মার্টিন ইন্ডার

উত্তর:


9

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

f n=[(a,b)|b<-[1..n],a<-[1..b-1],mod n 4<2,mod(a+(last$b:[a|odd n,n==b]))4<2]

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

এটি কোনও প্রান্তটি (a,b)গ্রাফের অন্তর্ভুক্ত কিনা তা নির্ধারণের জন্য সহজেই গণনা করার সুস্পষ্ট মানদণ্ড ব্যবহার করে । 4 মানগুলির মধ্যে ক্রমবর্ধমান সাইক্লিং সহ এই অ্যালগরিদম ইনস্ট্যান্ট করে

4*m -> 4*m+1 -> 4*m+2 -> 4*m+3 -> 4*m

আমরা এমন প্রান্তগুলি অন্তর্ভুক্ত করেছি যার দুটি সমাপ্তি কোণটি 0 বা 1 মডিউল 4 যোগ করে Note দ্রষ্টব্য যে এই ক্রমান্বয়ে অনুসারে সাইক্লিংয়ের শীর্ষগুলি প্রতিটিটির উপরের ভার্টেক্স সমষ্টিতে 2 টি মডেল 4 যুক্ত করে, এবং তাই প্রান্ত এবং অ-প্রান্তগুলি অদলবদল করে। এটি প্রান্তকে পরিপূর্ণ করার জন্য একটি শীর্ষ শিখর দেয়।

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

যদি উল্লম্বের সংখ্যা 0 বা 1 মডিউল 4 না হয় তবে কোনও স্ব-পরিপূরক গ্রাফ সম্ভব হয় না কারণ সম্পূর্ণ গ্রাফের মধ্যে বিজোড় সংখ্যক প্রান্ত রয়েছে

সামগ্রিকভাবে, এখানে শর্তগুলি রয়েছে:

  • যদি ইনপুট এন 0 বা 1 মডিউল 4 না হয় তবে একটি খালি তালিকা আউটপুট করুন
  • অন্যথায় যদি n এমনকি, সব প্রান্ত অন্তর্ভুক্ত (a,b)সঙ্গে a<bএবং a+b0 বা 1 মডিউল 4 এর সমান।
  • অন্যথায় যদি এন বিজোড় হয় তবে একই কাজ করুন, তবে এর পরিবর্তে ফর্মের কিনারা অন্তর্ভুক্ত করুন (a,n)যখন একটি সমান হয়।

কোডটি দ্বিতীয় এবং তৃতীয় কেসগুলিকে একত্রিত করে শর্তটি যখন এবং উভয় mod(a+b)4<2দিয়ে প্রতিস্থাপন করে ।mod(a+a)4<2odd nb==n


5

ব্র্যাচল্যাগ 2 , 24 বাইট

{⟦₁⊇Ċ}ᶠpḍ.(\\ᵐcdl?∨?<2)∧

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

এটি এমন একটি ফাংশন যা দুটি সংলগ্ন তালিকা সমন্বিত একটি জুটি ফেরত দেয়: গ্রাফের জন্য একটি, পরিপূরক গ্রাফের জন্য একটি। (টিআইও-তে ব্র্যাচল্যাগ ইন্টারপ্রেটারে, আপনি Zকমান্ড লাইন আর্গুমেন্ট হিসাবে দেওয়ার মাধ্যমে একটি সম্পূর্ণ প্রোগ্রামের চেয়ে কোনও ফাংশনকে মূল্যায়ন করতে বলতে পারেন )) উদাহরণস্বরূপ, ইনপুটটির আউটপুটটি 5হ'ল:

[[[1,2],[1,3],[1,5],[3,5],[4,5]],[[2,5],[2,3],[2,4],[3,4],[1,4]]]

চিত্রটির মতো দেখতে এটি দেখতে এখানে (দুটি গ্রাফ দেখানো):

একটি গ্রাফ এবং এর 5 টি উপাদানের সমান পরিপূরক

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

ব্যাখ্যা

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

{⟦₁⊇Ċ}ᶠpḍ.(\\ᵐcdl?∨?<2)∧
 ⟦₁                       The range [1, 2, …, ?], where ? is the input
   ⊇                      A subset of that range…
    Ċ                     …which has exactly two elements
{    }ᶠ                   A list of everything that fits the above description
{⟦₁⊇Ċ}ᶠ                   All edges that could exist in a ?-element graph
       p                  Find a permutation of these…
        ḍ                 …so that splitting it into two equal parts…
          (       ∨   )   …either:
               dl?          produces ? distinct elements
           \                after transposing it
            \ᵐ              and transposing its elements
              c             and flattening one level;
                          or:
                   ?<2      ? was less than 2
         .             ∧  Once you've found it, . specifies what to output

ঘটনাক্রমে, আমি পুরো 6 বাইট (প্রোগ্রামের the, চরিত্রগুলি (∨?<2)) 0 এবং 1 এর বিশেষ কেসগুলি নিয়ে কাজ করে শেষ করেছি, হতাশাজনক, তবে এটি বিশেষ মামলার প্রকৃতি।

\\ᵐcdl?অধ্যায় একটু বোঝা কঠিন, তাই এখানে একটি কাজ উদাহরণ নেই। এর উদ্দেশ্য হ'ল কোনও গ্রাফ এবং তার পরিপূরক, গ্রাফের সাথে সম্পর্কিত প্রান্তগুলি সহ তালিকার মধ্যে একই ক্রমে পরিপূরক রয়েছে কিনা তা পরীক্ষা করা। গ্রাফ / পরিপূরক জুটি প্রোগ্রামটির চূড়ান্ত আউটপুট হয়ে যায়। এখানে একটি উদাহরণ কেস:

[[[1,2],[1,3],[1,5],[3,5],[4,5]],[[2,5],[2,3],[2,4],[3,4],[1,4]]]

এটি ট্রান্সপোস করা আমাদের গ্রাফ এবং পরিপূরকগুলির মধ্যে প্রাসঙ্গিক প্রান্তগুলির জোড়া সরবরাহ করে:

[[[1,2],[2,5]],[[1,3],[2,3]],[[1,5],[2,4]],[[3,5],[3,4]],[[4,5],[1,4]]

এর পরে, আমরা তালিকার উপাদানগুলির ভিতরে স্থানান্তর করি এবং এক স্তর সমতল করি; এটি আমাদের গ্রাফ এবং পরিপূরকগুলির মধ্যে জুড়ে সম্পর্কিত উপাদানগুলির জোড়া তালিকা সরবরাহ করে:

[[1,2],[2,5],[1,2],[3,3],[1,2],[5,4],[3,3],[5,4],[4,1],[5,4]]

স্পষ্টতই, আমরা এখানে যা চাই তা হ'ল প্রতিটি উপাদান থেকে 1 টির বেশি জুড়ি নেই (এভাবে প্রমাণিত হয় যে গ্রাফের উপাদানগুলি এবং পরিপূরকগুলি 1-থেকে -1 চিঠিপত্রের মধ্যে রয়েছে)। আমরা প্রায় যাচাই করতে পারি যে কেবলমাত্র তা উল্লেখ করে যে তালিকার ঠিক ?আলাদা আলাদা উপাদান রয়েছে (অর্থাত্ বহুগুলি পৃথকীকরণের সংখ্যার সমান স্বতন্ত্র উপাদান)। এই ক্ষেত্রে, পরীক্ষা সফল হয়; স্বতন্ত্র উপাদানগুলি হ'ল:

[[1,2],[2,5],[3,3],[5,4],[4,1]]

তবে এটি একটি সম্ভাব্য সমস্যার জন্য জায়গা ছেড়ে দেয়; মূল গ্রাফটিতে যদি একটি শীর্ষবিন্দু সম্পূর্ণরূপে সংযোগ বিচ্ছিন্ন হয়ে থাকে, তবে এর চিঠিপত্রের উল্লেখ করা হবে না, অন্য কোনও শীর্ষবিন্দু থেকে নকল চিঠিপত্রের জন্য জায়গা রেখে। এই যদি হয় তাহলে, সম্পূরক গ্রাফ যে প্রান্তবিন্দু মধ্যে একটি প্রান্ত থাকতে হবে (সাধারণত্ব ক্ষতি ছাড়া, এর কথা বলা এটা দিন 1), এবং প্রত্যেক অন্যান্য প্রান্তবিন্দু, এবং তাই সংগতি তালিকা থাকা হবে [1,2], [1,3], ..., [1, ?]। কখন ?বড় হয়, এটি অন্যথায় আমাদের চেয়ে মোট চিঠিপত্রের দিকে নিয়ে যায়, সুতরাং কোনও সমস্যা নেই। কেবলমাত্র ?3 বা তার কম হলেই সমস্যাটি ঘটে থাকে, এক্ষেত্রে আমরা কেবলমাত্র একটি অতিরিক্ত চিঠিপত্র যুক্ত করি (যখন থেকে একটি অপসারণ করা হয়)1ইনপুট প্রদর্শিত হবে না); তবে এটি অনুশীলনে কোনও সমস্যা নয়, কারণ 3-উপাদান গ্রাফে 3 টি সম্ভাব্য প্রান্ত রয়েছে যা একটি বিজোড় সংখ্যা (একইভাবে, 2-উপাদান গ্রাফের 1 টি সম্ভাব্য প্রান্তটিও একটি বিজোড় সংখ্যা), এবং এইভাবে পরীক্ষাটি \ধাপে ব্যর্থ হবে (আপনি একটি র‌্যাগড তালিকাকে স্থানান্তর করতে পারবেন না, যার উপাদানগুলির দৈর্ঘ্য আলাদা)


মধ্যে পার্থক্য zএবং \যে zযার অর্থ, আবর্তনশীল জিপ হয় [[1,2,3],["a"]]হচ্ছে শেষ হয়ে যাবে [[1,"a"],[2,"a"],[3,"a"]]সঙ্গে z, যেহেতু এটি জন্য ব্যর্থ হবে \\এই মুহূর্তে শুধুমাত্র বর্গ ম্যাট্রিকগুলিতে কাজ করে; ভবিষ্যতের বাস্তবায়ন এটি zচক্রীয়ভাবে নয়, যেমন কাজ করবে ।
ফ্যাটালাইজ করুন

আমি আসলে আমি নিজেই পার্থক্যটি বুঝতে পেরেছিলাম, তবে আমি ব্যাখ্যাটি লেখার পরেই। এই নির্দিষ্ট সমাধানটি কেবল আয়তক্ষেত্রগুলিতে কাজ করার উপর নির্ভর করে (যদিও আপনি যদি এই পদক্ষেপের সুবিধা না নিতে পারেন তবে এটি আরও 2 বাইট নেয়)।

2

বিবিসি বেসিক, 161 বাইট

টোকেনাইজড ফাইলাইজ 140 বাইট

Http://www.bbcbasic.co.uk/bbcwin/bbcwin.html এ দোভাষী ডাউনলোড করুন

I.m:IF2ANDm ORm<4P.0:END
r=400n=-2A.m:t=2*PI/n:F.i=1TOn*n:a=i DIVn:b=i MODn:c=b:IFa+b A.2a*=t:b*=t:L.r+r*SINa,r+r*COSa,r+r*SINb,r+r*COSb:IF 1A.m A.c DRAWr*3,0
N.

অবহেলিত কোড

  INPUTm                           :REM get input
  IF2ANDm ORm<4PRINT0:END          :REM if m=4x+2 or 4x+3 or less than 4, print 0 and exit
  r=400                            :REM radius of diagram
  n=-2ANDm                         :REM n = m truncated to an even number
  t=2*PI/n                         :REM t = 1/n turns
  FORi=1TOn*n                      :REM for each combination of vertices
    a=i DIVn                       :REM extract a and b
    b=i MODn                       :REM make a copy of c
    c=b                            :REM if a+b MOD 4 = 2 or 3, convert a and b to angles and draw edge.
    IFa+b AND2 a*=t:b*=t:LINEr+r*SINa,r+r*COSa,r+r*SINb,r+r*COSb:IF 1ANDm ANDc DRAWr*3,0
  NEXT                             :REM if m is odd and c is odd, draw a line to the additional vertex for m=4x+1 input.

ব্যাখ্যা

এটি এক্সনোরের মতো একই অ্যালগরিদম ব্যবহার করে তবে ডায়াগ্রাম্যাটিক আউটপুট তৈরি করে।

কোথায় nফর্ম হল 4x+2বা 4x+3কোন সমাধান হিসাবে প্রান্ত সংখ্যা বিজোড় হয়।

n4x ফর্মের যেখানে আমরা একটি বৃত্তে সমস্ত (a+b) mod 4শীর্ষকোষটি সাজাই এবং গল্ফের কারণে 2 বা 3 (এক্সনরের ক্ষেত্রে যেমন 0 বা 1 নয়) সেই প্রান্তগুলি আঁকি X সুতরাং এটি এক্সনোর প্রদত্ত সমাধানটির পরিপূরক)

আরও পিক্টোরিয়াল অর্থে এটি দেখতে, আমরা প্রতি দ্বিতীয় প্রান্তটি নিয়ে থাকি এবং কান্টিক দিকের দিক দিয়ে 1 এবং 2 স্থান দূরে শীর্ষে শীর্ষে প্রান্তগুলি আঁকি। এটি nসমান্তরাল দিক নির্দেশ করে, মোটের অর্ধেক। তারপরে আমরা এগুলির সাথে সমান্তরালভাবে অন্যান্য সমস্ত প্রান্তগুলিতে যুক্ত করব।

পরিপূরকটি প্রতিটি প্রান্তের স্পেসিফিকেশনে 1 এবং b উভয় যোগ করে বা চিত্রের মাধ্যমে ডায়াগ্রামটি 1/nঘুরিয়ে ঘুরিয়ে খুঁজে পাওয়া যায়।

n4x + 1 ফর্মটি কোথায় রয়েছে আমরা অন্য একটি ভার্টেক্স যুক্ত করব, যা 4x গ্রাফের প্রতিটি দ্বিতীয় প্রান্তের সাথে যুক্ত। এটি কেন্দ্রে স্থাপন করা হলে ডায়াগ্রামের প্রতিসাম্যতা সংরক্ষণ করা হবে, তবে আমি স্পষ্টতার জন্য এটি পয়েন্টের মূল বৃত্তের বাইরে রাখতে পছন্দ করেছি।

আউটপুট

নিম্নলিখিত 4x + 1 এর জন্য প্রথম কয়েকটি ক্ষেত্রে রয়েছে। 4x কেসগুলি নীচের ডানদিকে এবং এর সাথে সম্পর্কিত প্রান্তগুলিটি ভার্টেক্স মুছে ফেলে দেখা যায়।

এখানে চিত্র বর্ণনা লিখুন


1

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

f=(n,a=[],v=n*~-n/4)=>v%1?0:eval(n>5?f(n-=4,a)&&'for(i=0;i<n;)a.push([i,n+1],[i++,n+2]);a.push([n,++n],[n,++n],[n,++n])-v':'for(l=x=0;x<n;x++)for(y=x;y<n;y++)l<v&y>>x&1?l=a.push([x,y]):a')||a

এই ফাংশনটি একটি সংলগ্ন তালিকা প্রদান করে। এটি দুটি অ্যালগরিদম ব্যবহার করে এবং খালি পরিপূরক গ্রাফ এবং অ-আউটপুটগুলির মধ্যে পার্থক্য করে যখন কোনটিই উপস্থিত না হয়ে তার 0পরিবর্তে ফিরে আসে []। প্রথম অ্যালগরিদম বিআইডি প্রিকেট ব্যবহার করে নির্মিত রেডিও গ্রাফগুলির উপর ভিত্তি করে তৈরি হয় এবং বৈধ 0-, 1-, 4- এবং 5-অর্ডার পরিপূরক গ্রাফ তৈরি করে। অন্যান্য অ্যালগরিদম, গণিতে আমাদের বন্ধুদের দ্বারা পাওয়া যায় , একটি বৈধ ভি + শীর্ষস্থানীয় পরিপূরক গ্রাফের জন্য একটি 4-পাথ সংযোজন করে একটি বৈধ ভি + 4 ভার্টেক্স পরিপূরক গ্রাফ তৈরি করে ।

এটি বৈধ পরিপূরক গ্রাফ (ব্যবহার করে n*~-n/4%1) এর অস্তিত্ব নিশ্চিত করতে ইনপুটটিকে বৈধতা দিয়ে শুরু হয় এবং যদি এটি ব্যর্থ হয় তবে ফিরে আসে 0। এটি তখন বৈধ নিম্নতর সমাধান সমাধান তৈরির ক্ষেত্রে n>5কেসটি পুনরুক্ত করে কিনা তা যাচাই করে n-4, তারপরে পুনরাবৃত্তি শৃঙ্খলার ব্যাক আপ করার পথে প্রত্যাবর্তিত সংলগ্ন তালিকার 4-সংযোজন প্রয়োগ করে। সর্বশেষে, যদি n>5সত্য নয়, তা থেকে iterates 0করার n-1জন্য xএবং yচেক, এবং যদি (y>>x)&1সত্য। যদি তা হয় তবে সেই নোডগুলি জোড় করা।

এখানে ফাংশনের আরও পঠনযোগ্য ফর্ম্যাটটি রয়েছে, টের্নারি অপারেটরগুলি যদি অন্য বিবৃতিতে প্রসারিত হয় এবং eval()এর ইনলাইনড থাকে:

// precalculate amount of required vertices in v
f = (n, a = [], v = n*~-n / 4) => {
  // if amount is non-integer
  if (v % 1) {
    // no valid complementary graph
    return 0;
  } else {
    if (n > 5) {
      // generate valid (n-4)-order complementary graph
      f(n -= 4, a);
      // apply 4-path addition
      for (i = 0; i < n;)
        a.push([i, n+1],[i++, n+2]);
      a.push([n, ++n], [n, ++n], [n, ++n]);
    } else {
      // construct Rado graph using BIT predicate
      for(l = x = 0; x < n; x++)
        for(y = x; y < n; y++)
          // if amount of pairs is less than required and xth bit of y is high
          if (l < v && (y>>x & 1))
            // vertices x and y should be paired
            a.push([x,y]);
    }
    return a;
  }
};

ডেমো

f=(n,a=[],v=n*~-n/4)=>v%1?0:eval(n>5?f(n-=4,a)&&'for(i=0;i<n;)a.push([i,n+1],[i++,n+2]);a.push([n,++n],[n,++n],[n,++n])-v':'for(l=x=0;x<n;x++)for(y=x;y<n;y++)l<v&y>>x&1?l=a.push([x,y]):a')||a
<input type="number" onchange="o.textContent=JSON.stringify(f(this.value))"><pre id="o"></pre>

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