ফিবোনাচি-কুইন প্রয়োগ করুন


13

একজন Quine একটি প্রোগ্রাম যা চালানোর উৎস আউটপুট হয়।

এই চ্যালেঞ্জের মধ্যে আপনার একটি ফিবোনাচি-কুইন তৈরি করা উচিত যা কুইনের একটি বৈকল্পিক।


একটি ফিবোনাচি-কুইন কী?

একটি ফিবোনাচি-কুইন একটি প্রোগ্রাম, যা নিম্নলিখিত নিয়মে উত্সটির একটি পরিবর্তন আউটপুট করে:

প্রাথমিক উত্সটি হওয়া উচিত ...2...। অন্য কথায়, উত্সটি থাকা উচিত 2। (কেন ২? এটি যদি 1 হয় তবে কেউ জানতে পারবে না যে এটি প্রথম 1 বা দ্বিতীয়, এমনকি প্রোগ্রামটি নিজেই ছিল)

রান করার সময় আপনার উত্সটি আউটপুট করা উচিত তবে কেবলমাত্র নির্দিষ্ট সংখ্যা (এই পর্যায়ে 2) ফাইবোনাকী ক্রমের পরবর্তী সংখ্যায় পরিবর্তিত হবে। উদাহরণস্বরূপ ...3...,। একই আউটপুট এবং আউটপুট আউটপুট ইত্যাদির জন্য যায় আপনি 2 ^ 32-1 পর্যন্ত পূর্ণসংখ্যার সমর্থন করতে পারেন। এই সীমাটি পূর্ণ সংখ্যার জন্য, পরবর্তী আউটপুট আপনার পছন্দ অনুসারে।

ওপির নোট

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



4
কোয়েন অংশটি এই চ্যালেঞ্জটিতে বেশি যোগ করে না। উত্তরগুলি দেখায় এটি কেবল "ফিবোনাচি সিকোয়েন্সের পরবর্তী মান" এবং একটি সার্বজনীন কুইন নির্মাতা।

আমি রাজী. আমি এটির জন্যও একটি সৃজনশীল সমাধান দেখতে চাই। তবে যদি আপনি এতটা খারাপ কোনও সৃজনশীল সমাধান চান তবে এটি কেন কোড-গল্ফের পরিবর্তে কোড-চ্যালেঞ্জ হিসাবে তৈরি করবেন না। বিজয়ী মানদণ্ডটি কিছু সময়ের ব্যবধান বা কোনও কিছুর পরে সর্বোচ্চ সংখ্যক ভোট হতে পারে।
ফিক্সড পয়েন্ট

@ ফিক্সডপয়েন্ট একটি 'দ্বিতীয় মানদণ্ড' সম্পর্কে কী? কেউ সৃজনশীল সমাধান করেন, আমি তাদের অনুগ্রহ করি।
ম্যাথু রোহ

@ ফিক্সডপয়েন্ট এটি একটি জনপ্রিয়তা-প্রতিযোগিতা
বায়োবাকাক

উত্তর:


8

গণিত, 61 বাইট

ToString[#0 /. v:2 :> RuleCondition[Round[GoldenRatio v]]] & 

মনে রাখবেন এখানে একটি পিছনের স্থান রয়েছে। এটি একটি ফাংশন কুইন, অর্থাৎ উপরের কোডটি একটি নামহীন ফাংশনকে মূল্যায়ন করে যা বলা হলে কোডটিকে কোডটি স্ট্রিং হিসাবে ফিরিয়ে দেয় ( 2পরবর্তী ফিবোনাকির সংখ্যায় পরিবর্তিত করে)।

এটি অবাক করা কাজ ছিল পেতে। মূল ধারণাটি হ'ল ফাংশনটি নিজেই নেওয়া (এর সাথে #0) এবং সেই ফাংশনটিতে একটি নম্বর ব্যবহার করে পরেরটির সাথে ব্যবহার করে /. v:2 :> nextFib[v]। তবে, nextFibএই পর্যায়ে মূল্যায়ন করা হবে না তাই আমরা উত্স কোডে নতুন নম্বরটি দিয়ে শেষ করতে পারব না। কীভাবে তাত্ক্ষণিক মূল্যায়নকে বাধ্য করা যায় তা নির্ধারণ করার জন্য কিছুক্ষণ অনুসন্ধান করার পরে, আমি ম্যাথমেটিকা.এসইতে এই দুর্দান্ত পোস্টটি পেয়েছি । "স্ট্যান্ডার্ড" Withকৌশলটিতে একটি ব্লক ব্যবহার করা হয় যা মূল্যায়নকে জোর করে, তবে ডাব্লুআরচের দ্বিতীয় উত্তরে একটি অনির্ধারিত বিল্ট-ইন ব্যবহার করে একটি সংক্ষিপ্ত বিকল্প রয়েছে RuleConditionযা মূল্যায়নকে বাধ্য করে।

পরের সংখ্যার অনুপাত মোটামুটি স্বর্ণের অনুপাত 1.618 ... এবং এটি গোলাকার অবধি যথাযথ হয় তা ব্যবহার করে আমরা পরবর্তী ফিবোনাচি সংখ্যাটি গণনা করি । সুতরাং আমাদের শেষ দুটি সংখ্যার উপর নজর রাখার দরকার নেই এবং কেবল তা করতে পারি Round[GoldenRatio v]। এটি কখনই সঠিকতা হারাবে না কারণ ম্যাথমেটিকাগুলি GoldenRationএকটি প্রতীকী মান এবং তাই Roundসর্বদা একটি সঠিক ফলাফল গণনা করতে পারে।

সংক্ষেপে:

... #0 ... &

একটি নামবিহীন ফাংশন, যেখানে #0ফাংশন অবজেক্টটি নিজেই বোঝায়।

... /. v:2 :> ...

2ফাংশনের অভিব্যক্তি গাছের মধ্যে একটি সন্ধান করুন (এটি 2অবশ্যই নিজের সাথে মেলে), এটিকে কল করুন vএবং এর সাথে প্রতিস্থাপন করুন ...

... RuleCondition[Round[GoldenRatio v]]

... পরের ফিবোনাচি নম্বর

ToString[...]

এবং ফলস্বরূপ অভিব্যক্তি গাছটিকে তার স্ট্রিং উপস্থাপনায় রূপান্তর করুন।


এগুলি সম্পর্কে আপনাকে কখনও কখনও কঠোর পরিশ্রম করতে হবে তা জেনে
গ্রেগ মার্টিন

সোনার অনুপাতের জন্য কি কোনও প্রতীক নেই?
সিয়ার্ড কোইনরিঙ্গিংহিং

নিবন্ধন করুন
মার্টিন ইন্ডার

7

সিজেম , 26 বাইট

2{0X{_@+_W$>!}go;\;"_~"}_~

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

সম্ভবত বেশ অনুকূল নয়। আমরা শেষ পর্যন্ত ফিবোনাকির সিক্যুয়েন্সটি পুনরাবৃত্তি করি যতক্ষণ না মান শেষের চেয়ে বড় হয় এবং প্রোগ্রামটির শুরুতে ফলাফলটিকে নতুন মান হিসাবে ব্যবহার করি use


6
থাই..এই তাড়াতাড়ি?
ম্যাথু রোহ





4

জেলি , 14 বাইট

“×Øp+.ḞṭØv”Ṙv2

এটি অনলাইন চেষ্টা করুন! বা সমস্ত প্রয়োজনীয় পুনরাবৃত্তি যাচাই করুন

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

“×Øp+.ḞṭØv”Ṙv2  Main link. No arguments.

“×Øp+.ḞṭØv”     Set the left argument and return value to the string "×Øp+.ḞṭØv".
           Ṙ    Print a string representation of the return value and yield the
                unaltered return value.
            v2  Evaluate the return value as a Jelly program with left argument 2.
 ×Øp                Multiply the left argument by the golden ratio.
    +.              Add 0.5 to the resulting product.
      Ḟ             Floor; round the resulting sum down to the nearest integer.
        Øv          Yield the string "Øv".
       ṭ            Tack; append the result to the left to the result to the right.

1

সুইফ্ট, 251 বাইট

আমার জন্য কিছুটা ভার্জোজ, তবে কীভাবে এটি আরও খাটো করা যায় তা আমি বুঝতে পারি না:

import Foundation;var n="\"";var u="\\";var s="import Foundation;var n=%@%@%@%@;var u=%@%@%@%@;var s=%@%@%@;print(String(format:s,n,u,n,n,n,u,u,n,n,s,n,(round(%f*(1+sqrt(5))/2))))";print(String(format:s,n,u,n,n,n,u,u,n,n,s,n,(round(2*(1+sqrt(5))/2))))

Ungolfed:

import Foundation
var n="\""
var u="\\"
var s="import Foundation;var n=%@%@%@%@;var u=%@%@%@%@;var s=%@%@%@;print(String(format:s,n,u,n,n,n,u,u,n,n,s,n,(round(%f*(1+sqrt(5))/2))))"
print(String(format:s,n,u,n,n,n,u,u,n,n,s,n,(round(2*(1+sqrt(5))/2))))

আমার সমস্যাটি নতুন সংস্করণটির উদ্ধৃতি পাওয়ার চেষ্টা করছে s



1

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

নতুন সংস্করণ, ক্রেডিটগুলি @ লিকি নুনকে

x=i=>console.log('x='+x+';x('+(i*(5**.5+1)/2+.5|0)+')');x(2)

পুরাতন রুপ :

x=i=>{var s=Math.sqrt(5),a=1;f=n=>{return Math.ceil((((1+s)/2)**n-((1-s)/2)**n)/s)};while(f(++a)<=i);console.log('x='+String(x)+';x('+f(a)+')');};x(2)

উপর ভিত্তি করে এই


1
পিপিসিজিতে আপনাকে স্বাগতম! আমরা আশা করি আপনার এখানে দুর্দান্ত সময় কাটবে।
লিকি নুন

আশা করি এখনই ঠিক হয়ে গেছে!
আরবিএনটিডি

গল্ফড সংস্করণ:x=i=>console.log('x='+x+';x('+(i*(5**.5+1)/2+.5|0)+')');x(2)
লিকি নুন

@ লিকনন বাহ! তবে এটি খুব আনুমানিক নয়? এটি i = 31000 এর জন্য 50159 আউটপুট দেয় যদিও সঠিক উত্তরটি 46368 হওয়া উচিত
rbntd

আমি বুঝতে পারছি না। 31000কোনও ফিবোনাচি নম্বর নয়।
ফাঁস নুন

1

ডিসি , 35 বাইট

2[r9k5v1+2/*.5+0k1/n91PP93P[dx]P]dx

পুনরাবৃত্তি (56 বাইট) সহ একটি সংস্করণ:

2[rsP1dsN[lN+lNrsNdlP[s.q]s.=.lFx]dsFxlNn91PP93P[dx]P]dx

1

সুইফট, 235 বাইট

এই এর একটি উন্নত সংস্করণ কালেব এর উত্তর

import Foundation;var n="\"",u="\\",s="import Foundation;var n=%@%@%@%@,u=%@%@%@%@,s=%@%@%@;print(String(format:s,n,u,n,n,n,u,u,n,n,s,n,(round(%f*(1+sqrt(5))/2))))";print(String(format:s,n,u,n,n,n,u,u,n,n,s,n,(round(2*(1+sqrt(5))/2))))

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