একটি ক্রম থেকে সংগ্রহ যা একটি নিখুঁত বর্গ গঠন করে


10

OEIS A033581 ক্রমটি দেওয়া , যা অসীম অনুক্রম, এন 'তম শব্দ (0-সূচক) বন্ধ ফর্ম সূত্র 6 × n 2 দ্বারা দেওয়া হয় ।

আপনার টাস্কটি কোড লিখতে হবে, যা অনুক্রমের N এর প্রথম সংখ্যার সমস্ত উপসেটকে আউটপুট করে, যেমন সাবসেটের যোগফল একটি নিখুঁত বর্গ হয়।

বিধি

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

উদাহরণ

প্রদত্ত ক্রমটি হল {0,6,24,54,96, ..., 15000}

প্রয়োজনীয় সাবসেটগুলির মধ্যে একটি {6,24,294} হবে, কারণ because

6+24+294 = 324 = 18^2

প্রদত্ত ব্যাপ্তিতে আপনার সম্ভাব্য দৈর্ঘ্যের সমস্ত সেট খুঁজে পেতে হবে।


3
ভাল প্রথম পোস্ট! আপনি উদাহরণ এবং পরীক্ষার কেস যুক্ত করার বিষয়টি বিবেচনা করতে পারেন। ভবিষ্যতের রেফারেন্সের জন্য, আমাদের কাছে একটি স্যান্ডবক্স রয়েছে যা আপনি আপনার ধারণাগুলি পরীক্ষা করতে পারেন
ousurous

এটি কি আমাদের দেওয়া N033581 গণনা করতে বলছে? নাকি আমি এটা সঠিকভাবে বুঝতে পারছি না?
এটাকো

@ATaco একটি অনুক্রমের জন্য পছন্দ করুন (1,9,35,39 ...) 1 + 9 + 39 = 49 একটি নিখুঁত বর্গ (এটি 3 নম্বর ব্যবহার করে), 35 + 1 = 36 অন্য একটি নিখুঁত বর্গ তবে এটি 2 সংখ্যা ব্যবহার করে। সুতরাং set 1,35} প্রয়োজনীয় সেট।
প্রগ্রেসাহিল

3
@ প্রোগ্রাম_সাহিল পোস্টটির উদাহরণ হিসাবে এটি এবং আরও কয়েকটি যুক্ত করা সহায়ক হবে :)
ousurous

উত্তর:


3

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

ݨn6*æʒOŲ

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

কিভাবে?

6n6 * æʒOŲ || পুরো প্রোগ্রাম। আমি ইনপুট কল করব।

Ý || 0-ভিত্তিক অন্তর্ভুক্ত ব্যাপ্তি। [0, এন] ush P পুশ করুন ℤ
 ¨ || শেষ উপাদানটি সরান।
  এন || স্কোয়ার (উপাদান অনুসারে)।
   6 * || 6 দ্বারা গুণ করুন।
     æ || পাওয়ারসেট।
      ʒ || নিম্নলিখিতগুলি সন্তুষ্ট করে তাদের ফিল্টার রাখুন:
       ও || --- | তাদের যোগফল ...
        Ų || --- | ... একটি নিখুঁত বর্গ?

3

হাস্কেল , 114 104 103 86 বাইট

f n=[x|x<-concat<$>mapM(\x->[[],[x*x*6]])[0..n-1],sum x==[y^2|y<-[0..],y^2>=sum x]!!0]

ধন্যবাদ Laikoni এবং Orjan Johansen golfing অধিকাংশ জন্য! :)

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

সামান্য আরও পঠনযোগ্য সংস্করণ:

--  OEIS A033581
ns=map((*6).(^2))[0..]

-- returns all subsets of a list (including the empty subset)
subsets :: [a] -> [[a]]
subsets[]=[[]]
subsets(x:y)=subsets y++map(x:)(subsets y)

-- returns True if the element is present in a sorted list
t#(x:xs)|t>x=t#xs|1<2=t==x

-- the function that returns the square subsets
f :: Int -> [[Int]]
f n = filter (\l->sum l#(map(^2)[0..])) $ subsets (take n ns)

@ লাইকনি যে খুব বুদ্ধিমান! ধন্যবাদ!
ক্রিশ্চিয়ান লুপাস্কু

@ লাইকনি ঠিক! ধন্যবাদ!
ক্রিশ্চিয়ান লুপাস্কু


2

পাইথ , 12 বাইট

-২ বাইটস মিঃ এক্সকোডারকে ধন্যবাদ

fsI@sT2ym*6*

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

অপসারণ করতে আরও 2 বাইট যুক্ত করা দরকার []এবং [0]এগুলি আমার কাছে বৈধ আউটপুট বলে মনে হচ্ছে!


Explanataion

    fsI@sT2ym*6*
    f                  filter
           y           the listified powerset of
            m*6*ddQ    the listified sequence {0,6,24,...,$input-th result}
        sT             where the sum of the sub-list
     sI@  2            is invariant over int parsing after square rooting

12 বাইট: fsI@sT2ym*6*
মিস্টার এক্সকোডার

আমি যে স্কোয়ার চেকিং গল্ফটি খুঁজছিলাম!
ডেভ

2

পরিষ্কার , 145 ... 97 বাইট

import StdEnv
@n=[[]:[[6*i^2:b]\\i<-[0..n-1],b<- @i]]
f=filter((\e=or[i^2==e\\i<-[0..e]])o sum)o@

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

পুনরাবৃত্তির প্রতিটি শর্তের সাথে প্রতিটি শর্তের সাথে সম্মতি @জানাতে এবং বিপরীত ক্রমে nশর্তগুলিতে শক্তি সেট তৈরি করতে সহায়ক ফাংশন ব্যবহার করে ।[[],[6*n^2],...][[],[6*(n-1)*2],...]

আংশিক ফাংশনটি fতখন রচনা করা হয় (যেখানে রচনাটি ->বোঝায় o):
apply @ -> take the elements where -> the sum -> is a square

দুর্ভাগ্যক্রমে এড়িয়ে যাওয়া f=এবং আংশিক ফাংশন আক্ষরিক প্রদান সম্ভব নয় , কারণ ইনলাইন ব্যবহার করার সময় অগ্রাধিকার নিয়মগুলিতে এটি বন্ধনী থাকা প্রয়োজন।


1
বাহ আপনি একটি কৌশল পেয়েছেন হাস্কেল উত্তর চুরি করা উচিত ...: পি
আরজান জোহানসেন



1

জাভাস্ক্রিপ্ট (ES7), 107 বাইট

n=>[...Array(n)].reduce((a,_,x)=>[...a,...a.map(y=>[6*x*x,...y])],[[]]).filter(a=>eval(a.join`+`)**.5%1==0)

ডেমো

মন্তব্য

n =>                      // n = input
  [...Array(n)]           // generate a n-entry array
  .reduce((a, _, x) =>    // for each entry at index x:
    [                     //   update the main array a[] by:
      ...a,               //     concatenating the previous values with
      ...a.map(           //     new values built from the original ones
        y =>              //     where in each subarray y:
          [ 6 * x * x,    //       we insert a new element 6x² before
            ...y       ]  //       the original elements
      )                   //     end of map()
    ],                    //   end of array update
    [[]]                  //   start with an array containing an empty array
  )                       // end of reduce()
  .filter(a =>            // filter the results by keeping only elements for which:
    eval(a.join`+`) ** .5 //   the square root of the sum
    % 1 == 0              //   gives an integer
  )                       // end of filter()

0

জাপট , 15 বাইট

ò_²*6Ãà k_x ¬u1

চেষ্টা করে দেখুন


ব্যাখ্যা

0 থেকে ইনপুট ( ò) পর্যন্ত পূর্ণসংখ্যার অ্যারেতে উত্পন্ন করুন এবং প্রতিটি ফাংশন ( _ Ã) এর মাধ্যমে পাস করুন , এটি স্কোয়ার ( ²) এবং 6 ( *6) দ্বারা বিভক্ত করুন । সেই অ্যারের ( à) এর সমস্ত সংমিশ্রণ পান এবং এমন kফাংশন ( _) দিয়ে যা তাদের সত্য ( ) দিয়ে যাওয়ার পরে সত্যবাদী ( ) প্রত্যাবর্তনকারীদের সরিয়ে দিন ( 1 ) দ্বারা xফলাফল ( ¬) এবং মোডের বর্গমূল পাবেনu1

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