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


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.