বহুগুণ সহ একটি সেট Coverেকে রাখুন


14

1 এর চেয়ে বেশি সংখ্যার পূর্ণসংখ্যার সেট নিতে এবং এটিকে এক্স কল করতে দেয় । আমরা এস (i) কে সংজ্ঞায়িত করব যে আমি যেখানে i> 1 দ্বারা এক্স বিভাজ্য সমস্ত সদস্যের সেট হব । এই উপসেটগুলি থেকে এমন একটি সেটগুলির একটি গ্রুপ চয়ন করতে চান

  • তাদের ইউনিয়ন সেট এক্স

  • এক্স এর কোনও উপাদান দুটি সেটে নেই।

উদাহরণস্বরূপ আমরা {3..11}হিসাবে পুনরায় গোষ্ঠী করতে পারেন

      {3,4,5,6,7,8,9,10,11}
S(3): {3,    6,    9,     }
S(4): {  4,      8,       }
S(5): {    5,        10,  }
S(7): {        7,         }
S(11):{                 11}

কিছু সেট এভাবে প্রকাশ করা যায় না। উদাহরণস্বরূপ, যদি আমরা নিই {3..12}, 12তবে আমাদের সেটগুলি পারস্পরিক একচেটিয়া হতে আটকাতে পারে 3 এবং 4 উভয়ের একাধিক।

কিছু সেট একাধিক উপায়ে প্রকাশ করা যেতে পারে, উদাহরণস্বরূপ {4..8}হিসাবে এটি উপস্থাপন করা যেতে পারে

      {4,5,6,7,8}
S(4): {4,      8}
S(5): {  5,     }
S(6): {    6,   }
S(7): {      7, }

তবে এটি হিসাবে প্রতিনিধিত্ব করা যেতে পারে

      {4,5,6,7,8}
S(2): {4,  6,  8}
S(5): {  5,     }
S(7): {      7, }

কার্য

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

এটি একটি প্রশ্ন তাই কম বাইট ভাল হওয়ার সাথে উত্তরগুলি বাইটে স্কোর করা হবে।

টেস্ট

{3..11}       -> 5
{4..8}        -> 3
{22,24,26,30} -> 1
{5}           -> 1

যদি কোনওটি না থাকে তবে আপনাকে ইতিবাচক পূর্ণসংখ্যার (উদাহরণস্বরূপ 0) ব্যতীত অন্য কোনও মান আউটপুট করা উচিত। আমাদের প্রোগ্রামটির পরিবর্তে কি অপরিবর্তিত আচরণ হতে পারে?
মিঃ এক্সকডার

এছাড়াও, আপনি কি কোনও পরীক্ষার কেস যুক্ত করতে পারেন [5..5]? আমরা কি জিনিস পেতে পারি [8..4]?
মিঃ এক্সকডার

@ মিঃ এক্সকোডার এটি নাও পারে। প্রোগ্রামগুলি কেবল চিরকালের জন্য লুপ বা এগুলিতে ক্রাশ না করে অসম্ভব কেসগুলি সনাক্ত করতে সক্ষম হওয়া উচিত।
পোস্ট রক গার্ফ হান্টার

1
" 12উভয়ের মধ্যে একাধিক 3এবং 4আমাদের সেটগুলি পারস্পরিক একচেটিয়া হতে বাধা দিচ্ছে ": কেন? সমস্যা বিবৃতিতে আমি অন্য কোনও কিছুই দেখতে পাচ্ছি না যার জন্য 12দুটি উপচ্ছেদে যেতে হবে।
পিটার টেলর

1
এছাড়াও, পরীক্ষার কেসগুলির সাথে কী আছে? [22,24,26,30]সমস্ত গুণফল 2। আপনি কি নিশ্চিত যে এটি এবং স্যান্ডবক্সটি মুছে ফেলা ভাল না?
পিটার টেলর

উত্তর:


6

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

lambda a:([q for q in range(a[-1])if a in[sorted(sum(j,[]))for j in combinations([[p for p in a if p%i<1]for i in range(2,1+a[-1])],q)]]+[0])[0]
from itertools import*

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

-9 Zachary ধন্যবাদ বাইট
-4 জনাব Xcoder ধন্যবাদ বাইট
-2 পরিবর্তে সেট তালিকা ব্যবহার করে বাইট
ব্যবহার করে -5 বাইট a in [...]বদলে any([a == ...])
-২ বাইটস মিঃ এক্সকোডার
-8 বাইটসকে বিবৃতি মার্জ করে
-5 মিঃ এক্সকোডারকে
ধন্যবাদ জানাতে -7 বাইট ধন্যবাদ মিঃ এক্সকডার / জ্যাচার
+7 বাইটকে বাগ ঠিক
করতে -২ বাইট ধন্যবাদ ওভসকে ধন্যবাদ

বিঃদ্রঃ

এটি বৃহত্তর সর্বোচ্চ সংখ্যার জন্য অত্যন্ত ধীর কারণ এটি কোনওভাবেই অনুকূলিত নয়; এটি মিঃ এক্সকোডার এর ডিভাইসে 2 মিনিটের মধ্যে হয়নি [22, 24, 26, 30]


5

ক্লিংগো , 51 বাইট

{s(2..X)}:-x(X).:-x(X),{s(I):X\I=0}!=1.:~s(I).[1,I]

ডেমো

$ echo 'x(3..11).' | clingo cover.lp -
clingo version 5.1.0
Reading from cover.lp ...
Solving...
Answer: 1
x(3) x(4) x(5) x(6) x(7) x(8) x(9) x(10) x(11) s(3) s(4) s(5) s(7) s(11)
Optimization: 5
OPTIMUM FOUND

Models       : 1
  Optimum    : yes
Optimization : 5
Calls        : 1
Time         : 0.003s (Solving: 0.00s 1st Model: 0.00s Unsat: 0.00s)
CPU Time     : 0.010s
$ echo 'x(4..8).' | clingo cover.lp -
clingo version 5.1.0
Reading from cover.lp ...
Solving...
Answer: 1
x(4) x(5) x(6) x(7) x(8) s(3) s(4) s(5) s(7)
Optimization: 4
Answer: 2
x(4) x(5) x(6) x(7) x(8) s(2) s(5) s(7)
Optimization: 3
OPTIMUM FOUND

Models       : 2
  Optimum    : yes
Optimization : 3
Calls        : 1
Time         : 0.001s (Solving: 0.00s 1st Model: 0.00s Unsat: 0.00s)
CPU Time     : 0.000s
$ echo 'x(22;24;26;30).' | clingo cover.lp -
clingo version 5.1.0
Reading from cover.lp ...
Solving...
Answer: 1
x(22) x(24) x(26) x(30) s(5) s(8) s(22) s(26)
Optimization: 4
Answer: 2
x(22) x(24) x(26) x(30) s(3) s(22) s(26)
Optimization: 3
Answer: 3
x(22) x(24) x(26) x(30) s(2)
Optimization: 1
OPTIMUM FOUND

Models       : 3
  Optimum    : yes
Optimization : 1
Calls        : 1
Time         : 0.004s (Solving: 0.00s 1st Model: 0.00s Unsat: 0.00s)
CPU Time     : 0.000s
$ echo 'x(5).' | clingo cover.lp -
clingo version 5.1.0
Reading from cover.lp ...
Solving...
Answer: 1
x(5) s(5)
Optimization: 1
OPTIMUM FOUND

Models       : 1
  Optimum    : yes
Optimization : 1
Calls        : 1
Time         : 0.001s (Solving: 0.00s 1st Model: 0.00s Unsat: 0.00s)
CPU Time     : 0.000s

এটি x(3..12).(বা আমার আপডেট করার দরকার আছে?) সমাধান না করে কেসগুলি সনাক্ত করতে পারে না বলে মনে হচ্ছে । বিটিডাব্লু, আপনি কি ক্লিঙ্গো সম্পর্কে একটি ভাল ভূমিকা প্রস্তাব করতে পারেন?
খ্রিস্টান সিভর্স

1
@ ক্রিশ্চিয়ন্সসিভার ওফস, এটি একটি বাগ ছিল, যা আমি এখন ঠিক করেছি। এটি UNSATISFIABLEযেমন একটি ক্ষেত্রে আউটপুট করা উচিত । আমি বেশিরভাগই পটাসকো গাইড ব্যবহার করি ।
অ্যান্ডারস কাসের্গ

4

গণিত, 105 বাইট

Length@Select[Subsets@Table[Select[s,Mod[#,i]==0&],{i,2,Max[s=#]}],Sort@Flatten@#==Sort@s&][[1]]~Check~0&


অনলাইনে এটি
অনুলিপি করে দেখুন এবং কোডটি সিটিআরএল + ভি দিয়ে পেস্ট করুন, কোডের
শেষে ইনপুটটি আটকে দিন ,
চালনার জন্য শিফট + এন্টার চাপুন

ইনপুট

[{3,4,5,6,7,8,9,10,11}]

ইনপুট হিসাবে একটি তালিকা নেয়
কিছু না থাকলে আউটপুট 0


এর দুর্দান্ত ব্যবহারCheck
কিয়ু গান

আপনি যখন একটি কাজের সংস্করণ পেয়েছিলেন তখন কেন আপনি আপনার প্রথম উত্তরটি মুছে ফেলেন না?
নীল

কারণ এটি সম্পূর্ণ নতুন পদ্ধতি ছিল? একটি সমস্যা আছে?
J42161217

4

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

import Data.List
f l|m<-maximum l=(sort[n|(n,c)<-[(length s,[i|j<-s,i<-[j,2*j..m],elem i l])|s<-subsequences[2..m]],c\\l==l\\c]++[0])!!0

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

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

f l     =                           -- input set is l
   |m<-maximum l                    -- bind m to maximum of l
       [   |s<-subsequences[2..m]]  -- for all subsequences s of [2..m]
        (length s, )                -- make a pair where the first element is the length of s
            [i|j<-s,i<-[j,2*j..m],elem i l]
                                    -- and the second element all multiples of the numbers of s that are also in l
     [n|(n,c)<-       ,c\\l==l\\c]  -- for all such pairs (n,c), keep the n when c has the same elements as l, i.e. each element exactly once
   sort[ ]++[0]                     -- sort those n and append a 0 (if there's no match, the list of n is empty)
 (     )!!0                         -- pick the first element

এর জন্য অনেক সময় নিই {22,24,26,30}


3

জেলি, 38 35 34 33 31 28 25 24 23 20 19 19 বাইট

ṀḊŒPð%þ@⁹¬Sḟ1ðÐḟL€Ḣ

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

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

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

ব্যাখ্যা (সম্ভবত এই ব্যাখ্যাটি ভুল হয়েছে):

ṀḊŒPð%þ@⁹¬Sḟ1ðÐḟL€Ḣ     (input z)
ṀḊ                      - 2 .. max(z)
  ŒP                    - powerset
    ð                   - new dyadic chain
     %þ@⁹               - modulo table of z and that
         ¬              - logical not
          S             - sum
           ḟ1           - filter out 1's
             ðÐḟ        - filter out elements that satisfy that condition
                L€      - length of each element
                  Ḣ     - first element


ধন্যবাদ! এবং নিজেকে জমা দেওয়ার জন্য আপনাকে ধন্যবাদ!
জাকারি

আমার ṀḊŒPðḍ@þ@⁹Sḟ1ðÐḟḢL
আসলটির

ওহো ... ṀḊআসলেই একটি দুর্দান্ত কৌশল!
জাকারি

উফফফফ, এটি কাজ করে না এবং আমার পুনর্লিখনও করে না! এটি আউটপুট 0 হওয়া উচিত, 1 নয়
জাকারি

2

জুলিয়া, 91 বাইট

x->(t=[];for i in x z=findfirst(x->x==0,i%(2:maximum(x)));zt?1:push!(t,z) end;length(t))

উম ... আপনি কি ভাষার নামের মধ্যে একটি লিঙ্ক অন্তর্ভুক্ত করতে ভুলে গেছেন, না এটির নাম "[জুলিয়া]"?
জাকারি

আপনি ঠিক বলেছেন, নাম বন্ধনী ছাড়াই জুলিয়া
তানজ

আপনি আপনার অন্যান্য উত্তরগুলিতেও এটি ঠিক করতে চাইতে পারেন!
জাকারি

বাহ, অনেক উত্তর ছিল! এবং আপনি যদি কোনও লিঙ্ক সন্নিবেশ করতে চান তবে বাক্য [Text to display](link to website)
গঠনটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.