নারায়ণ-জিদেক-ক্যাপেল নম্বর


17

জেনারেট করুন এননারায়ণ-Zidek-Capell একটি ইনপুট প্রদত্ত সংখ্যার এন । সবচেয়ে কম বাইট জিতেছে।

f (1) = 1, f (n) হ'ল আগের তল (n / 2) নারায়ণ-জিদেক-ক্যাপেল পদগুলির যোগফল।

পরীক্ষার কেস:

f(1)=1

f(9)=42

f(14)=1308

f(15)=2605

f(23)=664299

12
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! এটি একটি দুর্দান্ত প্রথম চ্যালেঞ্জ। যদিও এটি শেষ পর্যন্ত আপনার উপর নির্ভর করে, সাধারণত আমরা একটি উত্তর স্বীকার করতে কমপক্ষে এক সপ্তাহ অপেক্ষা করার পরামর্শ দিই। খুব শীঘ্রই একটি গ্রহণযোগ্য উত্তর পাওয়া অন্য ব্যবহারকারীদের কাছে একটি সংকেত পাঠাতে পারে যে চ্যালেঞ্জটি কমবেশি শেষ হয়েছে, যা তাদের অংশগ্রহণ থেকে নিরুৎসাহিত করে।
অ্যালেক্স এ।

উত্তর:


6

জেলি, 11 10 বাইট

HĊrµṖ߀Sȯ1

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

nযুক্তি হিসাবে গ্রহণ করে ফলাফল মুদ্রণ করে।

ব্যাখ্যা

H              divide input by 2
 Ċ             round up to get first n to recurse
  r            inclusive range from that to n
   µ           (chain separator)
    Ṗ          remove n itself from the range
     ߀        call self recursively on each value in the range
       S       sum results
        ȯ1     if sum was zero, return one

7

রুবি, 34 32 বাইট

এটি নারায়ণা-জিদেক-ক্যাপেল সংখ্যার জন্য ওইআইএস পৃষ্ঠা থেকে একটি সূত্র ব্যবহার করে ।

সম্পাদনা করুন: ফেয়ারসাম এবং নীলকে ধন্যবাদ দিয়ে অপারেটর অগ্রাধিকার ব্যবহার করে বন্ধনীগুলি পরিত্রাণ পেয়েছি।

f=->x{x<4?1:2*f[x-1]-x%2*f[x/2]}

অবশ্যই আপনার জন্য প্রথম বন্ধনী প্রয়োজন নেই x%2?
ফেয়ারসাম

ভাল, আপনি যদি x%2*কমপক্ষে রাখুন না।
নীল

@ ফেয়ারসাম এবং নীল উভয়কে ধন্যবাদ
শেরলক

পূর্ববর্তী প্রশ্ন সম্পাদনাগুলি সূত্রটি বলেছিল যে x<2?... এটি এটিকে আরও পরিষ্কার করে তোলে ধন্যবাদ!
নীল

6

পাইথন 2, 48 42 38 36 বাইট

ওইআইএস পৃষ্ঠা থেকে নেওয়া অ্যালগরিদম। কোনও প্রভাব ছাড়াই n<3পরিবর্তিত হতে পারে n<4। ফেরত পাঠায় nতম সংখ্যা, যেখানে nএকটি ইতিবাচক পূর্ণসংখ্যা।

a=lambda n:n<3or 2*a(n-1)-n%2*a(n/2)

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


5

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

05AB1E হিসাবে একটি পুনরাবৃত্তি সমাধানের কার্যকারিতা নেই।

X¸sGDN>;ï£Os‚˜}¬

X¸               # initialize a list with 1
  sG          }  # input-1 number of times do
    D            # duplicate current list
     N>;ï£       # take n/2 elements from the list
          O      # sum those elements
           s‚˜   # add at the start of the list
               ¬ # get the first element and implicitly print

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


5

সি, 38

ওইআইএস অ্যালগরিদমের অনুবাদ এখানে প্রায় যথেষ্ট সি কোড নেই!

f(n){return n<3?:2*f(n-1)-n%2*f(n/2);}

কিভাবে n<3?:(...)কাজ করে?
LegionMammal978

2
এটি একটি জিসিসি এক্সটেনশন (ঝাঁকুনিতেও কাজ করবে বলে মনে হচ্ছে) যা মধ্যম এক্সপ্রেশনটি অনুপস্থিত থাকলে শর্তাধীন নিজেই মূল্যায়ন করে। আরও তথ্যের জন্য প্রাসঙ্গিক জিসিসি পৃষ্ঠা এবং এই এসও প্রশ্নটি দেখুন।
owacoder

4

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

def f(n):
 x=1,
 for i in range(n):x+=sum(x[-i//2:]),
 print(x[-1])

একটি ফাংশন যা স্টুডুটের মাধ্যমে ইনপুট নেয় এবং STDOUT এ প্রিন্ট করে। এটি সংজ্ঞাটির প্রত্যক্ষ বাস্তবায়ন।

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

def f(n):               Function with input target term index n
 x=1,                   Initialise term list x as tuple (1)
 for i in range(n):...  For all term indices in [0,n-1]...
 x[-i//2:]              ..yield the previous floor(i/2) terms...
 x+=sum(...)            ...and append their sum to x
 print(x[-1])           Print the last term in x, which is the nth term

আইডিয়নে চেষ্টা করে দেখুন



3

গণিত, 38 বাইট

If[#<4,1,2#0[#-1]-#~Mod~2#0[(#-1)/2]]&

বেনামে ফাংশন। ইনপুট হিসাবে 𝑛 নেয় এবং আউটপুট হিসাবে 𝑓 (𝑛) দেয়। রুবি সমাধান ভিত্তিক।


কোন বিল্ট ইন আছে?
উন্মাদ

@ ইনসান না, কোনও বিল্ট-ইন নেই।
LegionMammal978

স্বাভাবিকভাবেই সুন্দর!
উন্মাদ

2

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

f 1=1
f n=sum$f<$>[n-div n 2..n-1]

ব্যবহারের উদাহরণ: f 14-> 1308

সংজ্ঞাটির প্রত্যক্ষ বাস্তবায়ন।



1

যান, 63 বাইট

func f(i int) int{if(i<4){return 1};return 2*f(i-1)-i%2*f(i/2)}

সি উত্তর থেকে বেশ অনেকগুলি সরাসরি বন্দর


0

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

এটি পুনরাবৃত্তি ছাড়াই একটি সম্পূর্ণ প্রোগ্রাম। একটি পুনরাবৃত্ত ফাংশন 52 বাইটে সংজ্ঞায়িত করা যেতে পারে (এটি সম্ভবত পরাজিত হতে পারে) তবে এটি কেবল শার্লক 9 এর উত্তরের একটি সুন্দর বিরক্তিকর বন্দর (এবং যদি আপনি চ (100) বা তার চেয়ে বেশি জিজ্ঞাসা করেন তবে এটি ত্রুটিযুক্ত) তাই আমি এটি রাখছি দীর্ঘ এবং আরও আকর্ষণীয় সংস্করণ

<?php for($i=$argv[1];$j=$i;$i--)for(;--$j*2>=$i;)$a[$j]+=$a[$i]?:1;echo$a[1]?:1;

অনেকগুলি (ও [এন]) নোটিশ দেয় তবে তা ঠিক fine


O(n)নোটিশ? তাই না?
বিড়াল

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

0

আর, 55 বাইট

x[1]=1;for(i in 2:10){x[i]=sum(x[i-1:floor(i/2)])};x[9]

লুপে পরিবর্তন করুন 10এবং ব্যবহারকারী যে কোনও সূচক পেতে চান।forx[9]


: এখানে বাইট একটি recursive সংস্করণ যে 54 দীর্ঘ f=function(n)ifelse(n<4,1,2*f(n-1)-n%%2*f(floor(n/2)))
DSkoog

0

জাভাস্ক্রিপ্ট, 54 52

f=n=>Math.round(n<3?1:2*f(n-1)-n%2*f(parseInt(n/2)))

সি উত্তর উপর ভিত্তি করে ।

  • parseIntপরিবর্তে ব্যবহার করে 2 বাইট সংরক্ষণ করা হয়েছেMath.floor

0

ম্যাপেল, 46 44 বাইট

`if`(n<4,1,2*f(n-1)-(n mod 2)*f(floor(n/2)))

ব্যবহার:

> f:=n->`if`(n<4,1,2*f(n-1)-(n mod 2)*f(floor(n/2)));
> seq( f(i), i = 1..10 );
  1, 1, 1, 2, 3, 6, 11, 22, 42, 84

0

আর, 63 বাইট

f=function(n,a=0)if(n<2)1 else{for(i in n-1:(n%/%2))a=a+f(i);a}

a=0ডিফল্ট হিসাবে যুক্ত করা হয়েছে কারণ এটি আমার দুটি কোঁকড়ানো বন্ধনী সংরক্ষণ করে। ফাংশন পুনরাবৃত্তভাবে নিজেকে প্রয়োজন হিসাবে কল করে।

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