বিজোড় প্রতিকূলতা সন্ধান করুন


14

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

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

যেহেতু কিছু ভাষায় কেবল সংগ্রহের আদেশ দেওয়া হয়েছে (তালিকাগুলি, অ্যারে, ভেক্টর, ইত্যাদি) বা অনিয়ন্ত্রিত সংগ্রহ নেই যা নকলকে অনুমতি দেয় তাই আপনি আদেশযুক্ত সংগ্রহগুলি ব্যবহার করতে পারেন (আপনার ভাষা পছন্দ নির্বিশেষে) তবে আপনার কোনও অনুলিপি সংগ্রহ আউটপুট করা উচিত নয় বিভিন্ন অর্ডার সহ (যেমন [2,3]এবং [3,2])। আপনি যে পরিমাণে যথাযথ দেখতে পাবেন তাতে আপনি আউটপুট দিতে পারেন।

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

[2,3,7,2] -> [[3],[7],[2,3],[2,7],[2,2,3],[2,2,7]]
[2,4,6,8] -> []
[4,9]     -> [[9],[4,9]]

2
সদৃশ উপকলনের অনুমতি আছে? হিসাবে হিসাবে, [2, 2, 3]আমরা কি ফিরে আসতে [[2, 2, 3], [2, 3], [2, 3]]পারি?
হাইপারনিউটারিনো

1
ইঙ্গিত: এই জাতীয় সেটটির যোগফল কেবল বিজোড় হতে পারে। এই সেটগুলির অন্য কোনও বৈকল্পিকের কেবল একটি সমষ্টি হতে পারে।
টুস্কিওম

@ হাইপার নিউট্রিনো আপনি কেবল একবারই ফিরে আসবেন না
পোস্ট রক গার্ফ হান্টার

ঠিক আছে. উপ-সংগ্রহগুলি কি আরোহী ক্রমে থাকা দরকার বা এগুলি মূল অ্যারেতে সরবরাহ করা ক্রমে তালিকাভুক্ত করা ভাল?
হাইপারনিউট্রিনো

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

উত্তর:


5

05 এ বি 1 ই , 6 বাইট

{æÙʒOÉ

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

{æÙʒOÉ
{      Sort
 æ     Powerset
  Ù    Uniqufy
   ʒ   Keep elements where
    O                      the sum
     É                             is uneven

-2 বাইটস @ এরিকথ আউটগল্ফারকে ধন্যবাদ


@ ওয়েট উইজার্ড হ্যাঁ (জনাথনের মন্তব্যের জবাব)। আমাকে মনে করার জন্য ধন্যবাদ.
হাইপারনিউটারিনো

2%গল্ফ করা যেতে পারে Éএবং }সরানো যেতে পারে। তবে আপনার উত্তরের বিষয়টি মনে হচ্ছে।
এরিক দি আউটগল্ফার

4

পাইথন 3 , 93 বাইট

f=lambda x,r=[[]]:x and f(x[1:],r+[y+x[:1]for y in r])or{(*sorted(y),)for y in r if sum(y)&1}

টিপলসের একটি সেট প্রদান করে। সম্ভবত খুব দীর্ঘ পথ।

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




3

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

r=[[]]
for n in input():r+=map([n].__add__,r)
print{tuple(sorted(y))for y in r if sum(y)&1}

টিপলস একটি সেট মুদ্রণ। যদি স্ট্রিংগুলির একটি সেট অনুমোদিত হয়,tuple(sorted(y)) সঙ্গে প্রতিস্থাপিত হতে পারে `sorted(y)`জন্য 86 বাইট

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



2

পার্ল 6 , 50 বাইট

{.combinations.grep(*.sum!%%2).unique(:as(*.Bag))}

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


2

ব্র্যাচল্যাগ , 11 বাইট

o⊇ᵘ{+ḃt1&}ˢ

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

আমি একটি সংক্ষিপ্ত সমাধানের আশা করলাম, তবে আমি এখানে সেরাটি করতে পারি।

ব্যাখ্যা

o⊇ᵘ{+ḃt1&}ˢ    
o                                        the input, sorted
 ⊇ᵘ           Find all unique subsets of

   {    &}ˢ   Then select only those results where
    +                                          the sum
     ḃ                           the base 2 of
      t        The last digit of
       1                                               is 1.

হ্যাঁ, আমি বিজোড়তা পরীক্ষা করতে মডুলো 2 ব্যবহার করতে পারতাম, তবে এটি কোনও বিজোড় পদ্ধতির নয়;)


2

গণিত 31 31 38 38 বাইট

ইনপুট সেটটির সকল সাবসেটের মধ্যে এটি যোগ করে, যার জন্য যোগফলটি Trবিজোড়।

আলেফালফাকে ধন্যবাদ 6 বাইট সংরক্ষণ করা হয়েছে।

Select[Union@Subsets@Sort@#,OddQ@*Tr]&

 Select[Union@Subsets@Sort@#,OddQ@*Tr]&[{2,3,7,2}]

{{3}, {7}, {2, 3}, {2, 7}, {2, 2, 3}, {2, 2, 7}


জায়গা দিয়ে কি?
ক্যালকুলেটরলাইন

1
দুর্ভাগ্যক্রমে, এটি অনুমানের সাথে মেলে না, যেমন {2,3}এবং {3,2}উভয়ই ফেরত দেওয়া উচিত নয় ( {2,7}এবং একই সাথে {7,2})।
গ্রেগ মার্টিন

Select[Union@Subsets@Sort@#,OddQ@*Tr]&
আলেফাল্ফ

1

পিএইচপি, 126 বাইট

for(;++$i>>$argc<1;sort($t),$s&1?$r[join(_,$t)]=$t:0)for ($t=[],$j=$s=0;++$j<$argc;)$i>>$j&1?$s+=$t[]=$argv[$j]:0;print_r($r);

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

ভাঙ্গন

for(;++$i>>$argc<1;             # loop through subsets
    sort($t),                       # 2. sort subset
    $s&1?$r[join(_,$t)]=$t:0        # 3. if sum is odd, add subset to results
    )                               # 1. create subset:
    for ($t=[],$j=$s=0;++$j<$argc;)     # loop through elements
        $i>>$j&1?                       # if bit $j is set in $i
        $s+=$t[]=$argv[$j]:0;           # then add element to subset
print_r($r);                    # print results
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.