খণ্ডিত সংখ্যা


15

বিভাগের সংখ্যা বা পরিমাপের প্রধান সংখ্যার ক্রম ( OEIS A002048 ) হ'ল সংখ্যার ক্রম হ'ল প্রতিটি সদস্যই সর্বকালের সর্বনিম্ন ধনাত্মক (শূন্যের চেয়ে বেশি) সংখ্যা যা সংখ্যার পূর্ববর্তী ধারাবাহিক সংখ্যার যোগফল তৈরি করতে পারে না a(0) = 1

উদাহরণ

গণনা করার জন্য a(7)আমরা প্রথমে গণনা করি a(0->6) = [1, 2, 4, 5, 8, 10, 14]। এরপরে আমরা শূন্য থেকে শুরু করি এবং সংখ্যার মধ্য দিয়ে যাই যতক্ষণ না আমরা এমন কোনও সন্ধান পাই যা ক্রমটিতে এক বা একাধিক সংখ্যক সংখ্যার যোগফল নয়।

1  = 1
2  = 2
3  = 1 + 2
4  = 4
5  = 5
6  = 2 + 4
7  = 1 + 2 + 4
8  = 8
9  = 4 + 5
10 = 10
11 = 2 + 4 + 5
12 = 1 + 2 + 4 + 5
13 = 5 + 8
14 = 14
15 = ????

যেহেতু একটানা পরবর্তী ধারাবাহিকতা যোগ করে পনেরটি তৈরি করা যায় না এবং প্রতিটি সংখ্যা ছোট পনের হতে পারে এটি ক্রমের পরবর্তী সংখ্যা। a(7) = 15

কার্য

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

পরীক্ষার কেস

0 -> 1
1 -> 2
2 -> 4
3 -> 5
4 -> 8
5 -> 10
6 -> 14
7 -> 15
8 -> 16
9 -> 21

উত্তর:


12

হাস্কেল, 62 58 বাইট

-4 বাইট @xnor ধন্যবাদ!

(x:y)#z=x:filter(`notElem`scanl(+)x z)y#(x:z)
([1..]#[]!!)

সিকোয়েন্স 0-সূচকযুক্ত।


1
আমি মনে করি আপনার আরও দুটি বাইট দরকার এবং ()এটির যথাযথ কার্যকারিতা তৈরি করতে শেষ লাইনটি ঘিরে । আংশিক প্রয়োগ !!করা একটি অপারেটর বিভাগ এবং ()এটি একটি ক্রিয়াকলাপ করতে অবশ্যই আবদ্ধ থাকা আবশ্যক । এটি ছাড়া কেবল একটি স্নিপেট যা অনুপস্থিত যুক্তি সহ কেবল একটি ফাংশন (বা কঠোর হাস্কেল পদ ব্যবহার করার জন্য "মান") হয়ে যায়।
নিমি

1
সুন্দর পদ্ধতি! আমদানি ওভারকিলের মতো মনে হচ্ছে; filter(`notElem`scanl(+)x z)yকরা উচিত.
xnor

7

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

এর জন্য +1 অন্তর্ভুক্ত -p

এসটিডিনে ইনপুট দিয়ে চালান:

segmented.pl <<< 7

segmented.pl:

#!/usr/bin/perl -p
${$_-=$\}++for@F;1while${-++$\};++$#F<$_&&redo}{

ব্যাখ্যা

@Fধারাবাহিক সংখ্যার (negativeণাত্মক) যোগফলগুলির তালিকা রয়েছে যা বর্তমান শেষ সংখ্যাটির সাথে শেষ হয়। যখন একটি নতুন সংখ্যাটি আবিষ্কার করা হয় তখন তালিকাটি 0 দিয়ে প্রসারিত হয় এবং তারপরে সমস্ত মান হ্রাস হয় নতুন সংখ্যার দ্বারা আক্রমণকারী বজায় রাখা।

গ্লোবালকে %::হ্যাশ ম্যাপিং হিসাবে ব্যবহার করা হয় সমস্ত (negativeণাত্মক) সংখ্যা যা @Fশূন্য-অমূল্যের সাথে দেখা হয়েছে (এর মাধ্যমে ) দেখা গেছে ।

$\এটি বর্তমান সংখ্যা এবং এটি এখনও কোনও মান না পৌঁছানো অবধি বেড়ে যায় %::

ক্রম সম্পর্কে কিছুটা সতর্ক হয়ে যা কিছু ঘটে না সেদিকে 1প্রথমে আরম্ভের প্রয়োজন নেই, স্বয়ংক্রিয়ভাবে প্রথম নম্বর হয়ে যাবে।

আকারটি যেহেতু @Fকত সংখ্যার উত্পন্ন হয়েছে তা এটিকে থামানোর শর্ত হিসাবে ব্যবহার করা যেতে পারে


4

05 এ বি 1 ই , 17 16 বাইট

Xˆ$µ>D¯ŒOså_i¼Dˆ

ব্যাখ্যা

Xˆ                # initialize global array to [1]
  $               # push 1 and input to stack
   µ              # while counter != input
    >             # increase variable on stack
      ¯ŒO         # list of all sums of consecutive number in global array
     D   så_i     # if current stack value is not in the list
             ¼    # increase counter
              Dˆ  # add current stack value to global array

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

আদনানকে ধন্যবাদ 1 বাইট সংরক্ষিত


কি $পরিবর্তে Xsকাজ করে?
আদনান

@ আদনান: হ্যাঁ অবশ্যই আমার বোকা। ধন্যবাদ!
Emigna

4

জেলি , 14 13 11 বাইট

Ḷ߀Ẇ;ḅ1‘ḟ$Ṃ

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

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

Ḷ߀Ẇ;ḅ1‘ḟ$Ṃ  Main link. Argument: n

Ḷ            Unlength; yield [0, ..., n - 1].
 ߀          Recursively map the main link over the range.
   Ẇ         Window; yield all subarrays of consecutive elements of the result.
    ;        Append n to the array of subarrays.
     ḅ1      Convert all subarrays from base 1 to integer.
             This is equivalent to S€ (sum each), but it allows ; to hook.
         $   Combine the previous two links into a monadic chain.
       ‘       Increment all sums.
        ḟ      Filter; remove the original sums from the incremented ones.
          Ṃ  Compute the minimum.

2

পাইথ - 19 17 বাইট

অভিশাপ এক এক করে আমার সমস্ত ছদ্মবেশগুলি নষ্ট করে দিচ্ছে। (একই বাইট গণনা literaly বৃদ্ধিশীল Q: =hQesmaYf!}TsM.:Y)

esmaYf!}TsM.:Y)1h

টেস্ট স্যুট


এক বাইট সাশ্রয় (কেবল) হ্রাস ব্যবহার করে। আরও প্রত্যাশিত ...eu+Gf!}TsM.:G))hQY
জাকুব

1
@ জাকুব মানচিত্র সাধারণত স্ব-রেফারেন্সিয়াল সিকোয়েন্সগুলির জন্য এর চেয়ে ছোট হয়
মালটিসেন

2

জাভাস্ক্রিপ্ট, 125 112 110 বাইট

সংরক্ষিত 2 বাইট @ নীলকে ধন্যবাদ

f=n=>{a=[[]];for(i=1,z=0;z<=n;i++)a.some(b=>b.includes(i))||(a[z+1]=[0,...a[z++]||[]].map(v=>i+v));alert(i-1)}

পূর্ববর্তী উত্তর

112 বাইট @ নীলকে ধন্যবাদ

f=n=>{a=[[]];for(i=1,z=0;z<=n;i++)if(!a.some(b=>b.includes(i))){a[z+1]=[0,...a[z++]||[]].map(v=>i+v)}alert(i-1)}

125 বাইট:

f=n=>{a=[[]];for(i=1,k=z=0;z<=n;i++)if(a.every(b=>b.every(c=>c-i))){a[i]=[i].concat((a[k]||[]).map(v=>i+v));k=i,z++}alert(k)}

1
জন্য b.every(c=>c-i), আমি চেষ্টা !b.includes(i)বা সম্ভবত !a.some(b=>b.includes(i))কাজ করতে হবে, সময় [0,...a[k]||[]].map(v=>i+v)প্রতিস্থাপন হতে পারে [i].concat((a[k]||[]).map(v=>i+v))। এছাড়াও আপনার কি সত্যই দরকার k?
নিল

1
আপনার if(!...){...}কেবলমাত্র একটি বিবৃতি এখন , আপনি সম্ভবত এটির সাথে ...||(...)বা এর সাথে প্রতিস্থাপন করতে পারেন ...?0:...
নিল

1

পাইথন, 113 105 92 80 বাইট

s=F={1}
x=1
exec"while{x}<=s:x+=1\nF={x+j for j in{0}|F};s|=F\n"*input()
print x

আমি যে চূড়ান্ত বাইটগুলি সঞ্চয় করেছিলাম তা টনের পার্ল উত্তরে অনুপ্রাণিত হয়েছিল: আমার Fমতো তাঁর @Fকাজটিও; আমারs মূলত তার মতো একই কাজ করে %::


1

জাভাস্ক্রিপ্ট (ES6), 77 বাইট

(n,a=[],s=a,i=1)=>s[i]?f(n,a,s,i+1):--n?f(n,[0,...a].map(j=>s[j+=i]=j),s,i):i

মূলত @ টনহসপেলের পার্ল উত্তরের আলগোরিদিমটির একটি পুনরাবৃত্ত পোর্ট।

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