ফিবোনাচি প্রোগ্রামের দৈর্ঘ্য


14

দৈর্ঘ্য n সহ একটি প্রোগ্রাম লিখুন যা অন্য কোনও প্রোগ্রামকে আউটপুট করে দেয় যার দৈর্ঘ্য n এর পরের ফিবোনাচি নম্বর। নতুন প্রোগ্রামটিতে অবশ্যই একই কাজ করতে হবে - অন্য প্রোগ্রামটি আউটপুট করুন যার দৈর্ঘ্য হ'ল পরবর্তী ফিবোনাচি নম্বর ইত্যাদি etc.
n

সংক্ষিপ্ততম কোড জিতেছে।

কোনও বাহ্যিক সংস্থান নেই, কেবল এএসসিআইআই, নিখরচায় সংকলক / দোভাষীর প্রয়োজন নেই।
যদি আপনার আউটপুট একটি নতুন লাইনে শেষ হয় তবে এটিও গণনা করা হয়।


চিরকাল কি এই চালিয়ে যাওয়া দরকার? ( intবা BigInteger)
জাস্টিন

1
@ কুইনকুনক্স এটি ঠিক আছে যদি এটি কোন ইনট এর সীমাতে বা সংকলক / দোভাষীর সীমাতে কাজ শুরু করে, যেটি প্রথমে আসে। যদিও আমি এটি 10000+ এ পাওয়ার আশা করি।
অ্যাডিটসু ছেড়ে গেছে কারণ এসই এভিল

1
মূল বা পরবর্তী উত্পাদিত প্রোগ্রামগুলিতে সাদা স্থান বা মন্তব্যগুলি বা ইচ্ছামত দীর্ঘ ভেরিয়েবল / ফাংশন / শ্রেণীর নাম ব্যবহারের ক্ষেত্রে কি বিধিনিষেধ রয়েছে?
জোনাথন পুলানানো

1
প্রোগ্রামটি তার নিজস্ব উত্স কোডটি পড়তে পারে, বা আপনি কি সত্যিকারের কোয়াইন-কোয়েনের সন্ধান করছেন?
হিস্টোক্র্যাট

@ জোনাথনপল্লানো কোনও বিধিনিষেধ নেই, তাদের কেবল বৈধ প্রোগ্রাম হওয়া দরকার
অদিতসু ছাড়ুন কারণ এসই ইভিএল

উত্তর:


5

CJam, 26 23

আমি আপনার ভাষা নিয়ে একবার চেষ্টা করেছি।

7{9\@5mq)2/*')*\"_~"}_~

9 হয় (22*0.618 + 0.5 - 1)/1.618 + 1

*1.618দুটি বার বার যোগ করার পরিবর্তে এটি নিজস্ব দৈর্ঘ্য গণনা করে । প্রথম সংস্করণে, এটা আগে আউটপুট পূরণ হবে {মত 1))))))))), যা তাদের অক্ষর নিজেদের গণনা করে। ফলাফল বলুন n। মোট দৈর্ঘ্য n+22এবং এর আগে নতুন দৈর্ঘ্যটি বৃত্তাকার {হওয়া উচিত (n+22)*1.618-22। সংখ্যাটি গণনা করার জন্য একে একে হ্রাস করুন) । তাহলে এটি প্রায় সমান হবে (n+8)*1.618

পুরানো সংস্করণ:

-3{1\@5mq)2/*E+')*\"_~"}_~

14 নম্বর 24*0.618 + 0.5 - 1


খুব চিত্তাকর্ষক!
ডেনিস

আমি মনে করি আমাদের একটি নতুন বিজয়ী আছে :)
অ্যাডিটসু প্রস্থান করুন কারণ এসই ইভিল

7

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

s='s=%s;c=s;l=len(s%%c)+4;a,b=1,1\nwhile b<l:a,b=b,a+b\nc+="1"*(b-l-1);print s%%`c`;a=1'
c=s
l=len(s%c)+4
a,b=1,1
while b<l:a,b=b,a+b
c+="1"*(b-l-1)
print s%`c`

এটি একটি সত্য কোয়াইন-কুইন; এটি তার নিজস্ব উত্সটি পড়ে না, তবে এটি উত্পন্ন করে। প্রথম আউটপুট (নতুন লাইনের পিছনে রয়েছে):

s='s=%s;c=s;l=len(s%%c)+4;a,b=1,1\nwhile b<l:a,b=b,a+b\nc+="1"*(b-l-1);print s%%`c`;a=111111111111111111111111111111111111111111111111111111111111111111111';c=s;l=len(s%c)+4;a,b=1,1
while b<l:a,b=b,a+b
c+="1"*(b-l-1);print s%`c`;a=1

দ্বিতীয়ত:

s='s=%s;c=s;l=len(s%%c)+4;a,b=1,1\nwhile b<l:a,b=b,a+b\nc+="1"*(b-l-1);print s%%`c`;a=1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111';c=s;l=len(s%c)+4;a,b=1,1
while b<l:a,b=b,a+b
c+="1"*(b-l-1);print s%`c`;a=111111111111111111111111111111111111111111111111111111111111111111111

সম্পাদনা: উফ! আমি ;এস থেকে এস এ পরিবর্তিত হয়ে স্ট্রিংটি পরিবর্তন করতে ভুলে গেছি 1, সুতরাং দ্বিতীয় আউটপুট অতিরিক্ত সেমিকোলন আউটপুট করছিল (যা পাইথন সমর্থন করে না)। ফিক্সড


আমি আশঙ্কা করছি এটি প্রায় 3 টি পুনরাবৃত্তির পরে কাজ করা বন্ধ করে দেয় ...
এসইটি ইভিএল হওয়ায় অ্যাডিটসু ছেড়ে যান

@ এডিটসু কী? পাইথনের পূর্ণসংখ্যার আকারের সীমা আছে ?! (বা এটি গণনাটি কোনও ফিবোনাচি / এড়িয়ে যায় / অন্য কিছু নয়?) ওহ অপেক্ষা করুন। Duh। আমি স্ট্রিং এক্সডি পরিবর্তন করতে ভুলে গেছি
জাস্টিন

7

সিজেম, 41 31 বাইট

{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~

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

আউটপুট

$ cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~'); echo
{1$+S@]_1=4+1$`,-S*"2$~"}34 21 2$~
$ cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~') | wc -c
34
$ cjam <(cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~')); echo
{1$+S@]_1=4+1$`,-S*"2$~"}55 34                      2$~
$ cjam <(cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~')) | wc -c
55
$ cjam (cjam <(cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~'))); echo
bash: syntax error near unexpected token `cjam'
$ cjam <(cjam <(cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~'))); echo
{1$+S@]_1=4+1$`,-S*"2$~"}89 55                                                        2$~
$ cjam <(cjam <(cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~'))) | wc -c
89

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

{       "                                                   {…} 21 13                     ";
  1$+   " Duplicate the higher number and add.              {…} 21 34                     ";
  S@    " Push a space and rotate the lower number on top.  {…} 34 ' ' 21                 ";
  ]     " Wrap the stack into an array.                     [ {…} 34 ' ' 21 ]             ";
  _1=   " Push the second element of the array.             [ {…} 34 ' ' 21 ] 34          ";
  4+    " Add 4 to it.                                      [ {…} 34 ' ' 21 ] 38          ";
  1$`,  " Push the length of the stringified array.         [ {…} 34 ' ' 21 ] 38 37       ";
  -S*   " Subtract and push that many spaces.               [ {…} 34 ' ' 21 ] ' '         ";
  "2$~" " Push the string '2$~'.                            [ {…} 34 ' ' 21 ] ' ' '2$~'   ";
}       "                                                   {…}                           ";

21D     " Push 21 and 13.                                   {…} 21 13                     ";
2$~     " Copy the code block an evaluate.                  [ {…} 34 ' ' 21 ] ' ' '2$~'   ";

2
দুর্দান্ত, 1 মিলিয়ন অবধি নিশ্চিত হয়েছে :) আমি মনে করি এটি ব্যাখ্যা অনুসারে 39 এর পরিবর্তে 37।
অ্যাডিটসু ছেড়ে গেছে কারণ এসই এভিল

@ অ্যাডিটসু: আপনি এখন পর্যন্ত নিজের মন্তব্য সম্পাদনা করে খেয়াল করেন নি। ধন্যবাদ এটি অবশ্যই 37 হওয়া উচিত।
ডেনিস

6

পাইথন - 89

g="%(s,b,a+b);print o.ljust(b-1)";s,a,b="s,a,b=%r,%i,%i;o=s%"+g,89,144;exec("o=s"+g)#####

আমার নিখুঁত চরিত্রের গণনা চলে গেছে । ;: _; নতুন পাইনের জিনিসটি নির্দেশ করার জন্য থেইরেকে ধন্যবাদ এবং কুইঞ্চুনসকে আমি পাইথন 2 ব্যবহার করার পরামর্শ দিয়েছি, 2 টি অক্ষর শেভ করছি।

সম্পাদনা : এখন কেবল #এস এর পরিবর্তে আরও এস ব্যবহার করে 1; 12 টি চর সংক্ষিপ্ত।

সম্পাদনা 2 : 94 অক্ষর! কিছু পুনরাবৃত্তি দূর। >: 3

সম্পাদনা 3 : পাইথন 2 এর জন্য সংক্ষিপ্ত আকারের বিকল্প।

সম্পাদনা 4 : আউটপুট এখন একটি চরিত্রের খাটো।

সম্পাদনা 5 : ব্যবহার%r এটি সংক্ষিপ্ত করার ব্যবহারটি @ প্রিয়মো দ্বারা অন্য প্রশ্নের উত্তর থেকে নেওয়া হয়েছিল।

সম্পাদনা 6 : সংক্ষিপ্ত। : ডি

এখানে পাইথন 3 সংস্করণ রয়েছে:

g="%(s,b,a+b);print(o.ljust(b-1))";s,a,b="s,a,b=%r,%i,%i;o=s%"+g,89,144;exec("o=s"+g)####

এই উত্তরটি @ কুইনকুনেক্সের মতোই।


printআপনি end=''যুক্তি নির্দিষ্ট না করে সর্বদা একটি নতুন লাইন যুক্ত করেন ।
seequ

পাইথন 2 কেন ব্যবহার করবেন না ?:s,a,b="s,a,b=%s,%i,%i;o=s%%(`s`,b,a+b)+'#';print o+(b-len(o)-1)*'1'",89,144;o=s%(`s`,b,a+b)+'#';print o+(b-len(o)-1)*'1'
জাস্টিন

পছন্দ করুন ধন্যবাদ: D:
cjfaure

আপনার 90-চর প্রোগ্রামটি অজগর 3 এর সাথে কাজ করে না এবং এতে 145-চর আউটপুট রয়েছে (কোনও ফিবোনাচি নম্বর নয়)
অ্যাডিটসু ছেড়ে যায় কারণ SE ইভি

@ অ্যাডিটসু ফিক্সড। : 3
সিজেফুরে

2

জাভাস্ক্রিপ্ট, 94

(function q(w,e){return ('('+q+')('+e+','+(s=w+e)+')'+Array(s).join('/')).substr(0,s)})(55,89)

একটি সুপরিচিত জাভাস্ক্রিপ্ট কুইনের উপর ভিত্তি করে , এটি প্রায় একই ফাংশনটি প্রদান করে, তারপরে কেবল কম পরিমাণে স্ল্যাশ হয়, এটির পরিমাণ 144 হয় যা এন এর পরে পরবর্তী ফিবোনাচি সংখ্যা And এবং আরও ...

এন কোনও ফিবোনাচি নম্বর নয়, তবে এটি কেবল "পেয়ে ভাল লাগল"।


এটি 1000
পেরিয়ে

1000 কি? পুনরাবৃত্তিও?
জ্যাকব

না, প্রোগ্রামের দৈর্ঘ্য
অদিতসু প্রস্থান করুন কারণ এসই ইভিল

হুম ... আমি Chrome এর কনসোলে এটি ব্যবহার করে কয়েকবার ব্যবহার করেছি p = (my answer)এবং 196418p = eval(p) পর্যন্ত পেয়েছি ... প্রক্রিয়া করার পরে> 1 সেকেন্ড ছিলাম তাই আমি পরীক্ষাটি ছেড়ে দিলাম: পি তবে আমি মনে করি এটি আরও চালিয়ে যেতে পারে।
জ্যাকব

আপনি বুঝতে পারছেন না .. আমি বলিনি এটি কাজ বন্ধ করে দেয় বা এটি খুব ধীর। আমি বলেছিলাম এটি সঠিকভাবে কাজ করে না। শুধু না p=eval(p), পরীক্ষা করুন p.length। এটি 987 এ যাওয়ার পরে, আমার দৈর্ঘ্য 1598 হয়, কোনও ফিবোনাচি নম্বর নয়।
অডিটসু ছেড়ে গেছে কারণ এসই ইভিল

0

ম্যাথামেটিকাল

({0};
 With[{n = Ceiling[ InverseFunction[Fibonacci]@LeafCount@#0 ], l = Length[#0[[1, 1]]]},
    #0 /. {0..} -> ConstantArray[0, Fibonacci[n+1] - LeafCount[#0] + l]
 ]) &

এটি একটি খুব সরল বাস্তবায়ন (অর্থাত্ এখানে কোনও উদ্বিগ্ন নয়)। এটি একটি বেনাম ফাংশন যা সঠিক দৈর্ঘ্য অর্জন করতে কিছু প্যাডিং সহ নিজেকে ফিরে আসে। ম্যাথেমেটিকা ​​হোমোসোনিক: কোড এবং ডেটা উভয়ই ম্যাথমেটিকা ​​এক্সপ্রেশন হিসাবে উপস্থাপিত হয়, যা ফ্লাইতে কোডটি সংশোধন / জেনারেট করা বাস্তবিকভাবে সহজ করে তোলে। এর অর্থ হ'ল অক্ষর গণনাগুলি কোড দৈর্ঘ্যের প্রাকৃতিক পরিমাপ নয়। এক্সপ্রেশন আকার ( "পাতার গণনা" ) হয়। এই সংস্করণটি কোড দৈর্ঘ্যের পরিমাপ হিসাবে পাতার গণনার উপর ভিত্তি করে।

যদি আমরা এই বেনাম ফাংশনটিকে একটি পরিবর্তনশীলকে অর্পণ fকরি (যাতে আমি পাঠযোগ্য পদ্ধতিতে কী ঘটে তা দেখাতে পারি), এবং প্রতিবার ফেরতের মানটির দৈর্ঘ্য পরিমাপ করে এটি 1, 2, 3, ... বার বলে চলেছি আমরা পেতে:

In[]:= f // LeafCount
Out[]= 42

In[]:= f[] // LeafCount
Out[]= 89

In[]:= f[][] // LeafCount
Out[]= 144

In[]:= f[][][] // LeafCount
Out[]= 233

নিখরচায় অনুবাদকের প্রয়োজনীয়তা সম্পর্কিত: গাণিতিক রস্পবেরি পাই এর জন্য বিনামূল্যে। অন্যথায় এই কোডটি ম্যাথিক্সের (ওপেন সোর্স) পোর্ট করতে সোজা হওয়া উচিত । ম্যাথিক্স থেকে একমাত্র জিনিস অনুপস্থিত InverseFunction, যা এখানে হিসাবে প্রতিস্থাপন করা যেতে পারে (তবে আমি অলস :)।


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

@ অ্যাডিতসু আসলে আমি চ্যালেঞ্জের সাথে প্রতিযোগিতা করার চেয়ে মজা করার জন্য এটি আরও বেশি করেছি এবং LeafCountচরিত্রের সংখ্যা ব্যবহার করা (যা স্ট্রিং-ম্যানিপুলেশন হিসাবে বোরিং কোড-ম্যানিপুলেশনকে বোঝায়) ব্যবহার করার চেয়ে অনেক বেশি আকর্ষণীয় বলে মনে হয়েছিল। :-) চরিত্রের সংখ্যা ব্যবহার করতে আমি এটি পরিবর্তন করতে যাচ্ছি না, তবে আপনি যদি চান তবে কোনও খারাপ অনুভূতি ছাড়াই আমি এটি মুছতে পারি।
জাজাবলস

আচ্ছা বুঝলাম. কেবল তখনই এটি ছেড়ে দিন, মোছার দরকার নেই।
অডিটসু ছেড়ে গেছে কারণ এসই এভিল

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