এনপি করুন: বৃহত্তম চক্রটি সন্ধান করুন


22

পটভূমি

এটি লেখার সময়, পি বনাম এনপি সমস্যাটি এখনও সমাধান হয়নি, তবে আপনি নরবার্ট ব্লামের নতুন কাগজ শুনেছেন শুনেছেন যে পি! = এনপি, যা ইতিমধ্যে ভুল বলে সন্দেহ করেছে (তবে আমরা দেখতে পাব)।

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

কাজটি

ধরুন আমাদের প্রচুর ছাত্র-ছাত্রী নিয়ে একটি বিশাল স্কুল রয়েছে। এই বিদ্যালয়ের প্রত্যেকেরই কিছু না কিছু বন্ধু রয়েছে। একটি চক্র শিক্ষার্থীদের শুধুমাত্র ছাত্র যারা বন্ধুদের সঙ্গে নিয়ে গঠিত একটি গ্রুপ একে অপরের সদস্য

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

আপনি যদি গাণিতিক শর্তগুলি পছন্দ করেন তবে এর অর্থ আপনাকে দুটি পুনঃনির্দেশিত গ্রাফের কিনারা খাওয়ানো হচ্ছে, প্রতিটি দুটি নোড দ্বারা চিহ্নিত করা হয়েছে।

ইনপুট

আপনার ইনপুটটি ইতিবাচক পূর্ণসংখ্যার জোড়ার একটি খালি খালি তালিকা হবে [[1,2],[2,5],[1,5]]। আপনি এই ইনপুটটি যে কোনও সংবেদনশীল আকারে নিতে পারেন, যেমন অ্যারের অ্যারে হিসাবে, প্রতিটি সংখ্যার দুটি সংখ্যাযুক্ত পাঠ্য রেখার মতো ...

আউটপুট

প্রত্যাশিত আউটপুটটি একটি একক সংখ্যা n >= 2: বৃহত্তম চক্রের আকার। উপরোক্ত উদাহরণে ইনপুট দিয়ে, ফলে হবে 3, যেমন সব ছাত্র ( 1, 2এবং 5) বন্ধুদের একে অপরের সাথে হয়।

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

[[1,2]]
=> 2

[[1,2],[3,1],[3,4]]
=> 2

[[1,2],[2,5],[1,5]]
=> 3

[[2,5],[2,3],[4,17],[1,3],[7,13],[5,3],[4,3],[4,1],[1,5],[5,4]]
=> 4 (the largest clique is [1,3,4,5])

[[15,1073],[23,764],[23,1073],[12,47],[47,15],[1073,764]]
=> 3 (the largest clique is [23,764,1073])

[[1296,316],[1650,316],[1296,1650],[1296,52],[1650,711],[711,316],[1650,52],
 [52,711],[1296,711],[52,316],[52,1565],[1565,1296],[1565,316],[1650,1565],
 [1296,138],[1565,138],[1565,711],[138,1650],[711,138],[138,144],[144,1860],
 [1296,1860],[1860,52],[711,1639]]
=> 6 (the largest clique is [52,316,711,1296,1565,1650])

অন্যান্য পরীক্ষার মামলার ফলাফল যাচাইয়ের জন্য আপনি এটি (বোকা) রেফারেন্স বাস্তবায়ন ( -dপতাকা সহ অতিরিক্ত আউটপুট প্রিন্ট করে ) ব্যবহার করতে পারেন ।

নিয়ম

  1. আপনার প্রোগ্রামটির অবৈধ ইনপুটটিতে কোনও সংজ্ঞায়িত ফলাফলের দরকার নেই। সুতরাং আপনি ধরে নিতে পারেন:
    • আপনি সর্বদা কমপক্ষে একটি জোড়া আইডি পাবেন
    • প্রতিটি জুটি দুটি পৃথক আইডি নিয়ে গঠিত
    • কোনও জুড়ি দু'বার উপস্থিত হয় না (আইডিগুলির জায়গাগুলি অদলবদল করা এখনও একই জোড় হবে)
  2. আপনার অ্যালগরিদম ইনপুট আকারের উপরের বাউন্ড সেট করার অনুমতি নেই। আপনার ভাষা / পরিবেশের দ্বারা নির্ধারিত খাঁটি প্রযুক্তিগত সীমাবদ্ধতা এবং সীমাবদ্ধতাগুলি (স্ট্যাকের আকার, গণনার সময় ইত্যাদি) অবশ্যই অনিবার্য।
  3. স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  4. এটি , তাই সংক্ষিপ্ততম কোড, বাইটে পরিমাপ করা হয়, জিততে পারে।
  5. যদি আপনার অ্যালগরিদমের বহুপদী সময় জটিলতা থাকে তবে আপনি -1আপনার কোডের আকার নির্বিশেষে তত্ক্ষণাত্ স্কোর করেন তবে সেই ক্ষেত্রে আপনি নিজের সমাধান অন্য কোথাও জমা দিতে চাইতে পারেন। ;)

4
আমি প্রায় গ্যারান্টি দিতে পারি যে এমন কেউ আছেন যিনি এটি করবেন (বা চেষ্টা করবেন), তাই এটি অপসারণ করা সহজতর হবে। আপনি এটা করছেন জন্য মানুষ পুরস্কৃত করতে চান তাহলে, আপনি একটি অফার করতে পারেন খয়রাত সবচেয়ে কম উত্তর হবে যে তা বহুপদী সময় আছে করতে।
শে

4
@Cairdcoinheringaahing যদি কেউ এটি করে থাকে তবে -1তা ভালভাবে প্রাপ্য ;)
ফেলিক্স পামেন

13
@Cairdcoinheringaahing যদি কেউ প্রমাণ করে যে পি = এনপি পরিচালিত করে, তাদের একটি কোড গল্ফের সমস্যাটিতে স্বয়ংক্রিয়ভাবে সর্বনিম্ন স্কোর হওয়া আমাদের উদ্বেগের মধ্যে সবচেয়ে কম। এটি বলেছে যে, বিধি 5 তত্পরতা চ্যালেঞ্জের পক্ষে খুব বেশি অবদান রাখে না, তাই আমি সম্মত হই যে এটি অপসারণ করা উচিত।
মেগো

11
@ মেগো এটি সিএমআই দ্বারা প্রদত্ত 1 এম এর জন্য একটি রসিকতা এবং একটি ছোট বোনাসকে কেবল অবদান রাখে ।
ফেলিক্স Palmen

30
ঠিক আছে, আমি কিছু লোকের পক্ষে "বৈজ্ঞানিক রসিকতা" অনুভূতি পোষণ করব না। দয়া করে এ সম্পর্কে আরও পরামর্শ মন্তব্য করবেন না, ধন্যবাদ :)
ফেলিক্স Palmen

উত্তর:


6

জেলি ,  15 18  16 বাইট

আমার পদ্ধতিতে বাগগুলি ঠিক করতে +3 বাইট
মাইলে -২ বাইট ধন্যবাদ (যে এন × (n-1) ÷ 2 = nC2 লক্ষ করে )

ẎQL©c2⁼Lȧ®
ŒPÇ€Ṁ

একটি মোনাডিক লিঙ্ক বন্ধুত্বের তালিকা (প্রান্তগুলি) নিয়ে এবং পূর্ণসংখ্যা ফেরত।

এটি অনলাইন চেষ্টা করুন! প্রান্তের পাওয়ার-সেটটি স্মৃতিতে গঠন করে তাই স্থান এবং সময় উভয়ই অকার্যকর (হ্যাঁ, ও ও (2 এন ) ভাবেন)!

কিভাবে?

ẎQL©c2⁼Lȧ® - Link 1, isClique?: list, edges  e.g. [[1,3],[2,3],[3,4],[4,1],[4,2],[2,1]]
Ẏ          - tighten                              [ 1,3 , 2,3 , 3,4 , 4,1 , 4,2 , 2,1 ]
 Q         - de-duplicate (gets unique ids)          [1,3,2,4]
  L        - length (get number of people involved)  4
   ©       - (copy to the register)
    c2     - combinations of 2 (z-choose-2)          6
       L   - length (of edges)                       6
      ⁼    - equal?                                  1
         ® - recall value from register              4
        ȧ  - logical and                             4
           - (Note: the number of edges of a clique of size n is n*(n-1) and we're
           -  guaranteed no repeated edges and that all edges are two distinct ids)

ŒPÇ€Ṁ - Link: list of lists, edges
ŒP    - power-set (all possible sets of edges (as lists))
  Ç€  - call last link (1) as a monad for €ach
    Ṁ - maximum

বাহ, আপনার কাছে সময় থাকলে ব্যাখ্যা করুন
মিঃ এক্সকোডার

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



@ মাইলস - দুর্দান্ত, আমি এর থেকে ১৫ টি পাওয়ার চেষ্টা করে কিছুটা সময় কাটিয়েছি, আমার মনে হচ্ছে এটি সম্ভব হওয়া উচিত!
জোনাথন অ্যালান

13

গণিত, 34 বাইট

Tr[1^#&@@FindClique[#<->#2&@@@#]]&  

মূলত ফাইন্ডক্লিক কাজটি করে এবং "গ্রাফের মধ্যে একটি বৃহত চক্র খুঁজে বের করে।"
অন্যান্য সমস্ত জিনিস ইনপুট-তালিকাটিকে গ্রাফে রূপান্তর করছে

ইনপুট

[{{2, 5}, {2, 3}, {4, 17}, {1, 3}, {7, 13}, {5, 3}, {4, 3}, {4, 1}, {1, 5}, {5, 4}}]

আউটপুট

4

ইনপুট

[{1296, 316}, 1650, 316}, {1296, 1650}, {1296, 52}, {1650, 711}, {711, 316}, 1650, 52}, {52, 711}, {1296, 711}, {52, 316}, {52, 1565}, {1565, 1296}, {1565, 316}, 1650, 1565}, {1296, 138}, 1565, 138}, {1565 , 711}, {138, 1650}, {711, 138}, 8 138, 144}, {144, 1860}, {1296, 1860}, {1860, 52}, {711, 1639}}]

আউটপুট

6

থ্যানেক্স @ কেলি লোডার -10 বাইটের জন্য


23
অবশ্যই ম্যাথামেটিকার জন্য এটি একটি বিল্টিন রয়েছে।
এরিক দি আউটগল্ফার

1
10 বাইট দিয়ে শেভ করুনTr[1^#&@@FindClique[#<->#2&@@@#]]&
কেলি লোডার

12
FindCliqueಠ ___ ಠ
মিঃ এক্সকোডার

6

জেলি , 20 বাইট

ŒPẎ€µQL’=ċЀ`ẠµÐfṪQL

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

অবশ্যই এটি মিলিয়ন প্রাপ্য নয়: পি

এটি পাইথকে হারিয়ে ফেলবে, যদি না µ(...)µও 2-বাইটের জন্য না হয় Ðf


অ্যামেজিং। আমি পাশাপাশি ছেড়ে দিতে পারেন।
মার্ক থমাস

@ ফেলিক্সপ্যালম্যান নৃশংস বাহিনী: পি
এরিক আউটগলফার

@ এরিকথ আউটগল্ফার আমি কোডের রানটাইম বোঝাতে চাইনি;)
ফেলিক্স প্যালম্যান

@ ফেলিক্স প্যালম্যান আমার অর্থ, নিষ্ঠুর শক্তি প্রয়োগের খুব বেশি চিন্তাভাবনার দরকার নেই: পি
এরিক দ্য আউটগল্ফার

বৃহত্তম টেস্ট- কেসের সাথে একটি স্মৃতিশক্তি দেয় :( অবশ্যই এখনও বৈধ, এটি একটি "প্রযুক্তিগত সীমাবদ্ধতা" - তবে কৌতূহলের বাইরে, জেলি সহ উপলভ্য সংস্থানগুলি বাড়ানোর কোনও উপায় আছে কি?
ফেলিক্স প্যালম্যান

3

জে , 36 বাইট

[:>./](#(]*[=2!])#@~.@,)@#~2#:@i.@^#

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

(2 এন ) সময়ে সঞ্চালিত হয় যেখানে n জোড়গুলির সংখ্যা।

65 বাইটের জন্য একটি দ্রুত সমাধান

3 :'$>{._2{~.@((+.&(e.&y)&<|.)@(-.,-.~)&>/#&,/:~@~.@,&.>/)~^:a:y'

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

ব্যাখ্যা

[:>./](#(]*[=2!])#@~.@,)@#~2#:@i.@^#  Input: list of pairs
                                   #  Length
                           2      ^   2^n
                               i.@    Range [0, 2^n)
                            #:@       Binary
                         #~           Copy
      (                )@             For each
                      ,                 Flatten
                   ~.@                  Unique
                 #@                     Length
        (       )                       Dyad with RHS at previous and LHS as next
               ]                          Get RHS
             2!                           Binomial coefficient, choose 2
            =                             Equals
           [                              Get LHS
          *                               Times
         ]                                Get RHS
       #                                Length
[:>./                                 Reduce using maximum


2

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

G=input()
m=0
L=len
for i in range(2**L(G)):
 u=[];p=sum([G[j]for j in range(L(G))if 2**j&i],u)
 for j in p:u+=[j][j in u:]
 m=max(m,L(u)*all(p.count(j)==L(u)-1for j in u))
print m

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

শুকিকে ধন্যবাদ ।
-১ মিঃ এক্সকোডারকে ধন্যবাদ ।
-3 পুনরাবৃত্তি করার জন্য ধন্যবাদ ।


আপনি lenএকটি ভেরিয়েবল বরাদ্দ করে দুটি বাইট সংরক্ষণ করতে পারেন
shooqie

183 বাইট(x not in y)মানে 0**(x in y)
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার আমি জানতাম এটি ছোট করার একটি উপায় আছে! ধন্যবাদ!
এরিক আউটগল্ফার

আমি এর আগে কখনও ব্যবহার করি নি, দু'দিন আগে আমার মনের ভাবটি পেরিয়েছিল এমন একটি কৌশল কিন্তু এখনও এর ব্যবহার খুঁজে পেল না।
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার কোন ব্যাপার না, যদি এটি কাজ করে তবে কেন নয়? : ডি বিটিডাব্লু আপনি এর 0**সাথে প্রতিস্থাপন করতে পারেন -~-
এরিক আউটগল্ফার

1

পাইথ, 28 বাইট

l{sSef<T.{SMQm.{ft{T.Cd2yS{s

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

ব্যাখ্যা

l{sSef<T.{SMQm.{ft{T.Cd2yS{s
                         S{sQ  Get the distinct nodes in the (implicit) input.
                        y      Take every subset.
             m      .Cd2       Get the pairs...
                ft{T           ... without the [x, x] pairs...
              .{               ... as sets.
     f<T                        Choose the ones...
        .{  Q                   ... which are subsets of the input...
          SM                    ... with edges in sorted order.
    e                           Take the last element (largest clique).
l{sS                            Get the number of distinct nodes.

1

পাইথন 3 , 162 159 বাইট

lambda x,f=lambda x:{i for s in x for i in s}:len(f(x))if all([(y,z)in x or(z,y)in x for y in f(x)for z in f(x)if y<z])else max(c(x.difference({y}))for y in x)

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

ফাংশন সি সাজানো টিপলস ( set (x, y), ...} যেখানে x এর চেয়ে কম হয়) এর সেট আকারে শীর্ষে অবস্থান করে takes "এন্ট্রি" নামে একটি ফাংশন টিআইও শিরোনামে অরসোর্টড তালিকাগুলির ফর্ম্যাটের তালিকায় ডাটা সহ পরীক্ষা করার জন্য রয়েছে । যদি চক্র, দৈর্ঘ্য দেয়। যদি চক্র না হয় তবে শীর্ষ চূড়ায় সর্বোচ্চ চক্রের আকার প্রদান করে, প্রতিটি শীর্ষে শীর্ষে বিয়োগফলকে মাইনাস করে। টিআইওতে সর্বশেষ পরীক্ষার মামলার সময় অতিক্রম করে

আপডেট: "বা (জেড, ওয়াই) x" অংশে বাছাইয়ের উপর নির্ভরতা অপসারণের জন্য যোগ করা হয়েছে "f = ল্যাম্বদা x: {i এর জন্য x এর জন্য i s" এর পরিবর্তে সেটটিতে মোড়ানো er "।

-মিনিস 3 বাইট @ জোনাথন অ্যালেনকে ধন্যবাদ জানায়



পাশাপাশি - আপনার নাম লেখার দরকার নেই c, তাই মুছে ফেলতে পারেন c=(আপনাকে c=\শিরোনামের শেষে রেখে lambdaটিআইওর জন্য কোড ব্লকের শীর্ষে স্থাপন করতে হবে)
জোনাথন অ্যালান

এছাড়াও আপনি পরিত্রাণ পেতে পারেনs এবং প্রতিস্থাপন s(...)সঙ্গে {*...}কিছু স্পেস অপসারণের খুব অনুমতি দেয়।
জোনাথন অ্যালান

1
@ জোনাথন অ্যালান ধন্যবাদ, বাছাই স্থির করেছেন
কনার জনস্টন


1

জেলি , 28 বাইট

œ^e³;U¤
Œcç/Ðfœ|Ṣ¥/€QµÐĿ-ịḢL

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

টিআইও-তে একটি সেকেন্ডে শেষ পরীক্ষার কেস সমাধান করতে সক্ষম দ্রুততর সমাধান।


এবং এর মধ্যে কী জটিলতা রয়েছে? যদি এটি ও (2ⁿ) এর চেয়ে কম কিছু থাকে তবে তা $ 1,000,000 এর প্রাপ্য।
এরিক দি আউটগল্ফার

1
@ এরিকথ আউটগল্ফার, আপনি ভুল, অ্যালগরিদম রয়েছে যা হে (1.1888ⁿ) রানটাইম আছে।
rus9384

এতে যোগ করে, এক মিলিয়ন মূল্য হিসাবে, nকেবল ঘাঁটিতে উপস্থিত হতে পারে :)
ফেলিক্স পামেন

@ ফেলিক্সপ্যালম্যান, বা এটি করতে পারে না। যাইহোক, মিলিয়ন জন্য দুটি বিবৃতি এক প্রমাণ করতে হবে।
rus9384

1
আমি বিশ্বাস করি এটি হে (1.414 ^ n)। ইনপুটটি সম্পূর্ণ গ্রাফ হলে আপনি আরও খারাপ পারফরম্যান্স দেখতে পাবেন।
মাইল

1

জাভা + পেয়ারা 23.0, 35 + 294 = 329 বাইট

import com.google.common.collect.*;
a->{int l=0,o=1,c,z=a.size();for(;o>0&l<z;){o=0;c:for(Iterable<int[]>s:Sets.combinations(a,l*(l+1)/2)){Multiset<Integer>m=TreeMultiset.create();for(int[]x:s){m.add(x[0]);m.add(x[1]);}c=m.elementSet().size();for(int e:m.elementSet())if (m.count(e)!=c-1)continue c;l+=o=1;break;}}return z<3?2:l;}

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

পেয়ারা লাইব্রেরি থেকে আমি নতুন combinationsপদ্ধতি এবং সরঞ্জাম-সংগ্রহের ধরণটি ব্যবহার করি Multiset

Ungolfed

import com.google.common.collect.*;
import java.util.function.*;

public class Main {

  public static void main(String[] args) {
    ToIntFunction<java.util.Set<int[]>> f
        = a -> {
          int l = 0, o = 1, c, z = a.size();
          for (; o > 0 & l < z;) {
            o = 0;
            c:
            for (Iterable<int[]> s : Sets.combinations(a, l * (l + 1) / 2)) {
              Multiset<Integer> m = TreeMultiset.create();
              for (int[] x : s) {
                m.add(x[0]);
                m.add(x[1]);
              }
              c = m.elementSet().size();
              for (int e : m.elementSet()) {
                if (m.count(e) != c - 1) {
                  continue c;
                }
              }
              l += o = 1;
              break;
            }
          }
          return z < 3 ? 2 : l;
        };
    int[][][] tests = {
      {{1, 2}},
      {{1, 2}, {3, 1}, {3, 4}},
      {{1, 2}, {2, 5}, {1, 5}},
      {{2, 5}, {2, 3}, {4, 17}, {1, 3}, {7, 13}, {5, 3}, {4, 3}, {4, 1}, {1, 5}, {5, 4}},
      {{15, 1073}, {23, 764}, {23, 1073}, {12, 47}, {47, 15}, {1073, 764}},
      {{1296, 316}, {1650, 316}, {1296, 1650}, {1296, 52}, {1650, 711}, {711, 316}, {1650, 52}, {52, 711}, {1296, 711}, {52, 316}, {52, 1565}, {1565, 1296}, {1565, 316}, {1650, 1565}, {1296, 138}, {1565, 138}, {1565, 711}, {138, 1650}, {711, 138}, {138, 144}, {144, 1860}, {1296, 1860}, {1860, 52}, {711, 1639}}
    };
    for (int[][] test : tests) {
      java.util.Set<int[]> s = new java.util.HashSet<int[]>();
      for (int[] t : test) {
        s.add(t);
      }
      System.out.println(f.applyAsInt(s));
    }
  }
}

আমি খুব অবাক হব , স্বেচ্ছাসেবী গ্রাফগুলিতে সর্বাধিক চক্রগুলি সন্ধান করতে - তবে এই কোডটি বিশ্লেষণ করতে আমার কিছুটা সময় লাগবে, আমি জাভার সাথে খুব বেশি পরিচিত নই :)
ফেলিক্স প্যালম্যান

@ ফেলিক্সপ্যালম্যান আমি এই চ্যালেঞ্জটি পছন্দ করেছি তাই আমার উত্তর যাই থাকুক না কেন, তবে "-1" অপসারণের সাথে আমি সম্পূর্ণ ঠিক আছি যদি এটি কোন বহিরাগত জটিলতা না থাকে। তারপরে আমার সম্ভবত কয়েকটি বই পর্যালোচনা করা উচিত: পি
অলিভিয়ার গ্রাগোয়ার

" আকারের সংমিশ্রণ xবহুবচন " <- আপনি কি নিশ্চিত? আমি অনুমান করি যে পদ্ধতিটি ব্যবহৃত হয়েছিল । প্রত্যাবর্তনের মানটি একটি পুনরাবৃত্তকারী AbstractSetসহ একটি এবং নিম্নোক্ত forলুপটি এই পুনরাবৃত্তকারীকে x!বার কল করবে যদি আমি ভুল না করি ...
ফেলিক্স প্যালম্যান

সংশোধন: যতক্ষণ না x < n( nইনপুট সেটটির সম্পূর্ণ আকারের সাথে) এটি n!/(x!(n-x)!)এখনও বহুপদী নয় :)
ফেলিক্স পামেন

@ ফেলিক্সপালম্যান আপনি সম্ভবত সম্ভবত ঠিকই আছেন। এছাড়াও, আপনি কি বলছেন যে আমি যদি এমন কোনও combinationsপদ্ধতি তৈরি করি X^nযা (যা সম্পূর্ণ সম্ভব) তবে আমি এটি পেতে পারি? এদিকে, আমি আমার দাবি "-1" সরিয়েছি।
অলিভিয়ার


0

6502 মেশিন কোড (সি 64), 774 703 বাইট

(আমাকে কেবল এটি করতে হয়েছিল, আমার সি 64 সব কিছু করতে পারে ... হি)

hexdump:

00 C0 A9 00 A2 08 9D 08 00 CA 10 FA A2 04 9D FB 00 CA 10 FA 20 54 C0 B0 20 AD 
C9 C2 AE CA C2 20 92 C1 B0 31 8D 31 C0 AD CB C2 AE CC C2 20 92 C1 B0 23 A2 FF 
20 FE C1 90 DB 20 6A C2 20 C1 C1 B0 05 20 6A C2 50 F6 A5 FB 8D D3 C2 20 43 C1 
A9 CD A0 C2 20 1E AB 60 A2 00 86 CC 8E 61 C0 20 E4 FF F0 FB A2 FF C9 0D F0 10 
E0 0B 10 0C 9D BD C2 20 D2 FF E8 8E 61 C0 D0 E5 C6 CC A9 20 20 D2 FF A9 0D 20 
D2 FF A9 00 9D BD C2 AA BD BD C2 F0 5C C9 30 30 0E C9 3A 10 0A 9D CD C2 E8 E0 
06 F0 4C D0 E9 C9 20 D0 46 A9 00 9D CD C2 E8 8E BC C0 20 EB C0 AD D3 C2 8D C9 
C2 AD D4 C2 8D CA C2 A2 FF A0 00 BD BD C2 F0 0F C9 30 30 21 C9 3A 10 1D 99 CD 
C2 C8 E8 D0 EC A9 00 99 CD C2 20 EB C0 AD D3 C2 8D CB C2 AD D4 C2 8D CC C2 18 
60 38 60 A2 FF E8 BD CD C2 D0 FA A0 06 88 CA 30 0A BD CD C2 29 0F 99 CD C2 10 
F2 A9 00 99 CD C2 88 10 F8 A9 00 8D D3 C2 8D D4 C2 A2 10 A0 7B 18 B9 53 C2 90 
02 09 10 4A 99 53 C2 C8 10 F2 6E D4 C2 6E D3 C2 CA D0 01 60 A0 04 B9 CE C2 C9 
08 30 05 E9 03 99 CE C2 88 10 F1 30 D2 A2 06 A9 00 9D CC C2 CA D0 FA A2 08 A0 
04 B9 CE C2 C9 05 30 05 69 02 99 CE C2 88 10 F1 A0 04 0E D3 C2 B9 CE C2 2A C9 
10 29 0F 99 CE C2 88 10 F2 CA D0 D9 C8 B9 CD C2 F0 FA 09 30 9D CD C2 E8 C8 C0 
06 F0 05 B9 CD C2 90 F0 A9 00 9D CD C2 60 85 0A A4 09 C0 00 F0 11 88 B9 D5 C2 
C5 0A D0 F4 8A D9 D5 C3 D0 EE 98 18 60 A4 09 E6 09 D0 01 60 A5 0A 99 D5 C2 8A 
99 D5 C3 98 99 D5 C4 18 60 A6 0B E4 09 30 01 60 BD D5 C5 C5 0B 30 09 A9 00 9D 
D5 C5 E6 0B D0 E9 A8 FE D5 C5 8A 29 01 D0 02 A0 00 BD D5 C4 59 D5 C4 9D D5 C4 
59 D5 C4 99 D5 C4 5D D5 C4 9D D5 C4 A9 00 85 0B 18 60 A8 A5 0C D0 08 A9 20 C5 
0D F0 21 A5 0C 8D 1E C2 8D 21 C2 A5 0D 09 60 8D 1F C2 49 E0 8D 22 C2 8C FF FF 
8E FF FF E6 0C D0 02 E6 0D 18 60 86 0E 84 0F A5 0D 09 60 8D 54 C2 49 E0 8D 5F 
C2 A6 0C CA E0 FF D0 10 AC 54 C2 88 C0 60 10 02 18 60 8C 54 C2 CE 5F C2 BD 00 
FF C5 0E F0 04 C5 0F D0 E0 BD 00 FF C5 0E F0 04 C5 0F D0 D5 38 60 A2 00 86 FC 
86 FD 86 FE BD D5 C4 A8 A6 FE E4 FC 10 11 BD D5 C7 AA 20 2B C2 90 14 E6 FE A6 
FE E4 FC D0 EF A6 FD BD D5 C4 A6 FC E6 FC 9D D5 C7 E6 FD A6 FD E4 09 D0 16 A6 
FB E4 FC 10 0F A2 00 BD D5 C7 9D D5 C6 E8 E4 FC D0 F5 86 FB 60 A0 00 84 FE F0 
B5

অনলাইন ডেমো

ব্যবহার: দিয়ে শুরু করুন sys49152, তারপরে জোড় প্রতি লাইনের মতো একটি লিখুন

15 1073
23 764
23 1073
12 47
47 15
1073 764

ইনপুট চলাকালীন ব্যাকস্যাপ হ্যান্ডেল করা হয় না (তবে আপনি যদি ব্যবহার করেন তবে এমপুলেটারে viceআপনার ইনপুটটি অনুলিপি করুন এবং পেস্ট করুন)। গণনা শুরু করতে একটি খালি লাইন প্রবেশ করান।

এখানে বর্ণনামূলক বিযুক্তকরণের তালিকা পোস্ট করার জন্য এটি খুব বড় তবে আপনি Ca65- শৈলীর সমাবেশ উত্সটি ব্রাউজ করতে পারেন । অ্যালগরিদম খুব অদক্ষ, এটি নোডগুলির প্রতিটি সম্ভাব্য ক্রম উৎপন্ন করে এবং এগুলির প্রত্যেকের সাথে সমস্ত প্রান্তটি পরীক্ষা করে লোভনীয়ভাবে একটি চক্র তৈরি করে। এই জন্য করতে পারবেন স্থান দক্ষতা এর হে (ঢ) (এই সামান্য র্যাম সহ মেশিনে গুরুত্বপূর্ণ ধরনের), কিন্তু আছে ভয়ঙ্কর রানটাইম দক্ষতা (*) । তাত্ত্বিক সীমা 256 নোড এবং 8192 প্রান্ত পর্যন্ত।

  • -71 বাইট: প্রান্ত এবং জেরোপেজ ব্যবহার পরীক্ষা করার জন্য অনুকূলিত রুটিন

আরও ভাল বৈশিষ্ট্য সহ একটি বৃহত্তর ( 883 805 বাইট) সংস্করণ রয়েছে:

  • গণনার সময় ভিজ্যুয়াল প্রতিক্রিয়া (নোডগুলির প্রতিটি অনুক্রম সীমানার রঙ পরিবর্তন করে)
  • স্থান সংরক্ষণের জন্য রমগুলি "লুকানো" র্যামে প্রান্তগুলি সংরক্ষণ করতে ব্যাংক স্যুইচিং ব্যবহার করে
  • সর্বাধিক চক্রের আকার এবং নোডগুলি আউটপুট করে

অনলাইন ডেমো

উত্স ব্রাউজ করুন


(*) শেষ পরীক্ষার কেসটি 12 থেকে 20 ঘন্টার মধ্যে লাগে (শেষ অবধি আমি ঘুমিয়ে ছিলাম)। অন্যান্য পরীক্ষার কেসগুলি কয়েক মিনিটের মধ্যে সবচেয়ে খারাপ অবস্থায় শেষ হয়।

সর্বশেষ পরীক্ষার মামলার স্ক্রিনশট

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