আপার বা লোয়ার ওয়েথফ?


20

প্রথমে বিটি সিকোয়েন্স সম্পর্কে কথা বলা যাক । একটি ইতিবাচক অযৌক্তিক নম্বর দেওয়া , আমরা ধনাত্মক পূর্ণসংখ্যা গুন দ্বারা অসীম অনুক্রম গঠন করা যেতে পারে অনুক্রমে এবং প্রতিটি ফলে হিসাব মেঝে গ্রহণ। উদাহরণ স্বরূপ,
বি এর বিটি ক্রম

তাহলে > 1 আমরা একটি বিশিষ্ট অবস্থায় আছে। আমরা অন্য অমূলদ সংখ্যা গঠন করতে পারেন গুলি যেমন গুলি = R / ( R - 1)। এরপরে এটি নিজের বিটি সিকোয়েন্স, বি এস তৈরি করতে পারে । ঝরঝরে কৌতুক যে বি এবং বি গুলি হয় পরিপূরক , যার মানে হল যে ধনাত্মক পূর্ণসংখ্যা ঠিক দুই ক্রম একটিতে আছে।

যদি আমরা r = ϕ, সুবর্ণ অনুপাত সেট করে থাকি তবে আমরা s = r + 1 এবং দুটি বিশেষ ক্রম পাই । নিম্ন Wythoff ক্রম জন্য :

1, 3, 4, 6, 8, 9, 11, 12, 14, 16, 17, 19, 21, 22, 24, 25, 27, 29, ... 

এবং উপরের Wythoff ক্রম জন্য গুলি :

2, 5, 7, 10, 13, 15, 18, 20, 23, 26, 28, 31, 34, 36, 39, 41, 44, 47, ... 

এগুলি যথাক্রমে OEIS এ A000201 এবং A001950 সিকোয়েন্স ।

চ্যালেঞ্জ

ধনাত্মক ইনপুট পূর্ণসংখ্যা দেওয়া 1 <= n <= 1000, দুটি পৃথক মানগুলির মধ্যে একটি আউটপুট নির্দেশ করে যে ইনপুটটি নীচে Wythoff ক্রম বা উপরের অনুক্রমে আছে কিনা ating আউটপুট মান হতে পারে -1এবং 1, trueএবং false, upperএবং lower, ইত্যাদি

যদিও আপনার জমা দেওয়া অ্যালগরিদম তাত্ত্বিকভাবে সমস্ত ইনপুটগুলির জন্য কাজ করতে পারে, বাস্তবে এটি কেবল প্রথম 1000 ইনপুট সংখ্যার সাথে কাজ করতে হবে।

আই / ও এবং বিধি

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

1
এটি মূলত "গল্ফ লোয়ার ওয়াইথফ সিকোয়েন্স" কারণ উপরের উইথফ সিকোয়েন্সটিতে নীচের চেয়ে 1 টি অপর প্রয়োজন (স্কয়ারিং ফাই)।
যাদু অক্টোপাস উরন

উত্তর:


12

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

f=(n,s="1",t=0)=>s[n-1]||f(n,s+t,s)
<input type=number min=1 oninput=o.textContent=this.value&amp;&amp;f(this.value)><pre id=o>

1নিম্ন এবং 0উপরের জন্য আউটপুট । ব্যাখ্যা: বুলিয়ান মান আংশিক তালিকা ব্যবহার করা যাবে একটি ফিবানচি মত পরিচয়: প্রদত্ত দুই তালিকা, দিয়ে শুরু 1এবং 10, প্রতিটি পরবর্তী তালিকা, পূর্ববর্তী দুই সংযুক্তকরণের হয় ফলে 101, 10110, 10110101ইত্যাদি এই ক্ষেত্রে এটা সামান্য golfier আছে এর 0তালিকার দ্বিতীয় উপাদানটি তৈরি করতে একটি নকল 0 তম এন্ট্রি এবং এটি ব্যবহার করুন।



4
আমি পছন্দ করি কীভাবে ব্যাখ্যাটি আমাকে +1 কম বোঝে। আংশিক বুলিয়ান ফিজোনাচি নামে এক ব্যক্তির পরিচয় চুরি করে, যিনি তখন তার নাতনিদের সাথে একত্রিত হয়ে নির্মাণের প্রবেশে নকল হন।
ম্যাজিক অক্টোপাস উরন

আনুমানিক ব্যবহার করে এই 33-বাইট সংস্করণটি কতদূর কাজ করতে পারে তা জানতে আগ্রহী ছিলাম । উত্তর দৃশ্যত আপ হয় এন = 375
আর্নল্ড

7

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

(l!!)
l=0:do x<-l;[1-x..1]

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

কোনও ফ্লোট নেই, সীমাহীন নির্ভুলতা নেই। H.PWiz এর জন্য দুটি বাইটের জন্য ধন্যবাদ



@ এইচ.পি.উইজ আমি মনে করি কারণ এটি খালি তালিকাটি একটি নির্দিষ্ট পয়েন্ট।
xnor

আহ, আমি এটি বিবেচনা করি নি, এবং এটি ব্যবহৃত "সমতুল্য" পদ্ধতির সাথে তুলনা করছি ~(x:t)। ধন্যবাদ
এইচ.পি.উইজ

@ এইচ.পি.উইজ / এক্সএনওর টেকনিক্যালি হ্যাসকেলে ব্যবহৃত নির্দিষ্ট পয়েন্টটি হ'ল ড্যানোটেশনালভাবে সবচেয়ে ছোট, এখানে নীচে / undefined। দুটি পৃথক সংজ্ঞায়িত এছাড়াও রয়েছে তা কেবল দুর্ঘটনাজনক।
janর্জন জোহানসেন

7

পাইথন , 25 বাইট

lambda n:-n*2%(5**.5+1)<2

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

খুব সাধারণ শর্তটি ব্যবহার করে:

nনীচে Wythoff ক্রম ঠিক যদি হয় -n%phi<1

নোট করুন যে মডুলোর ফলাফলটি ইতিবাচক হলেও -nএটি পাইথন মডুলোকে কীভাবে মেলায়।

প্রমাণ: চলুন a = -n%phi, যা পরিসীমা মধ্যে থাকা 0 <= a < phi। আমরা কিছু ধনাত্মক পূর্ণসংখ্যার হিসাবে -nমডুলো বিভক্ত করতে পারি । এটিকে পুনরায় সাজান ।phi-n = -k*phi + akn+a = k*phi

যদি a<1, তবে n = floor(n+a) = floor(k*phi), এবং তাই নীচে Wythoff ক্রম হয়।

অন্যথায়, আমাদের 1 <= a < phiতাই আছে

n+1 = floor(n+a) = floor(k*phi)
n > n+a-phi = k*phi - phi = (k-1)*phi

তাই nমধ্যে ফাঁক পড়ে floor((k-1)*phi)এবং floor(k*phi) এবং নিম্ন Wythoff ক্রম মিস করা হয়।

এটি এই কোডের সাথে মিলে যায়:

lambda n:-n%(5**.5/2+.5)<1

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

আমরা দ্বিগুণ করে একটি বাইট সংরক্ষণ করি -(n*2)%(phi*2)<2


সূত্রটি কীভাবে আসে তা আপনি ব্যাখ্যা করতে পারেন? আমি এটি ক্রম সংজ্ঞা থেকে প্রাপ্ত করার চেষ্টা করেছি, কিন্তু অরণ্যে হারিয়ে গিয়েছিলাম।
সূন্দর - মনিকা

@ সুন্দর একটি প্রমাণ যুক্ত করেছে।
xnor

5

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

L5t>;*óså

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


0 এর অর্থ উপরের, 1 এর অর্থ নিম্ন। প্রথম 100 চেষ্টা করে দেখুন : অনলাইনে চেষ্টা করুন!


    CODE   |      COMMAND      # Stack (Input = 4)
===========+===================#=======================
L          | [1..a]            # [1,2,3,4]
 5t>;      | (sqrt(5) + 1)/2   # [phi, [1,2,3,4]]
     *     | [1..a]*phi        # [[1.6,3.2,4.8,6.4]]
      ó    | floor([1..a]*phi) # [[1,3,4,6]]
       så  | n in list?        # [[1]]

কাঁচা কমান্ড ডাম্প:

----------------------------------
Depth: 0
Stack: []
Current command: L

----------------------------------
Depth: 0
Stack: [[1, 2, 3, 4]]
Current command: 5

----------------------------------
Depth: 0
Stack: [[1, 2, 3, 4], '5']
Current command: t

----------------------------------
Depth: 0
Stack: [[1, 2, 3, 4], 2.23606797749979]
Current command: >

----------------------------------
Depth: 0
Stack: [[1, 2, 3, 4], 3.23606797749979]
Current command: ;

----------------------------------
Depth: 0
Stack: [[1, 2, 3, 4], 1.618033988749895]
Current command: *

----------------------------------
Depth: 0
Stack: [[1.618033988749895, 3.23606797749979, 4.854101966249685, 6.47213595499958]]
Current command: ó

----------------------------------
Depth: 0
Stack: [[1, 3, 4, 6]]
Current command: s

----------------------------------
Depth: 0
Stack: [[1, 3, 4, 6], '4']
Current command: å
1
stack > [1]

আমি একই ছিল, কিন্তু ব্যবহার করে ï:)
Emigna

@ Emigna আমি অবাক হয়েছি phi গাণিতিক ধ্রুবকগুলিতে ছিল না। 5t>;2 বাইটারের পক্ষে এটি উপযুক্ত নাও হতে পারে ...
ম্যাজিক অক্টোপাস উরন

হ্যাঁ, আমি অর্ধেক মনে রেখেছিলাম যে এটি হতে পারে (তবে এটি হয়নি)। আমাদের কিছু যোগ করা উচিত বলে মনে হচ্ছে।
Emigna

@ এমিগনা আমি জেলি উত্তরটি মোটামুটি নিশ্চিত করছি বৈধভাবে এটি তবে একটি ফাই অন্তর্নির্মিত হাহাহা সহ।
ম্যাজিক অক্টোপাস উরন

হাহা আমার একই ছিল তবে ব্যবহার ïএবং ¢লোল :) আমাদের সমস্ত সমাধানগুলি এত নিবিড়ভাবে সম্পর্কিত
মিঃ এক্সকডার

5

জেলি , 5 বাইট

N%ØpỊ

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

সংরক্ষণ 1 বাইট ধন্যবাদ xnor এর পাইথন গলফ


জেলি , 6 বাইট

×€ØpḞċ

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

নিম্নের জন্য 1 এবং উচ্চের জন্য 0 প্রদান করে।

×€ØpḞċ – Full Program / Monadic Link. Argument: N.
×€     – Multiply each integer in (0, N] by...
  Øp   – Phi.
    Ḟ  – Floor each of them.
     ċ – And count the occurrences of N in that list.

(0,এন]জেডφ>1এন>00<এন<এনφ


আমি অনুমান করছি এইগুলির মধ্যে একটি ফাই: পি এর জন্য 1 বাইট ধ্রুবক?
ম্যাজিক অক্টোপাস উরন

2
না, একটি দ্বি-বাইট:Øp
মিঃ এক্সকডার

ওহে, আমার 05 বা 1 ই এর 4-বাইটের চেয়ে ভাল:5t>;
ম্যাজিক অক্টোপাস


4

পাইথন 2 , 39 33 32 বাইট

-6 বাইটস মিঃ এক্সকোডারকে
ধন্যবাদ -1 বাইট ধন্যবাদ জ্যাকারিকে

lambda n,r=.5+5**.5/2:-~n//r<n/r

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

রিটার্নস Falseকম এবং Trueউচ্চ জন্য


lambda n,r=(1+5**.5)/2:-~n//r<n/r6 বাইট সঞ্চয়
মিঃ এক্সকোডার

1
এছাড়াও, lambda n,r=.5+5**.5/2:-~n//r<n/rএকটি বাইট শেভ করতে পাশাপাশি কাজ করা উচিত
জাকারিয়া

3

জুলিয়া 0.6 , 16 বাইট

n->n÷φ<-~n÷φ

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

সংখ্যাগুলি নিয়ে খেলা করার সময়, আমি এই সম্পত্তিটি জুড়ে এসেছি: মেঝে (n / φ) == তল ((n + 1) / φ) n যদি উপরের উইথফ ক্রমের মধ্যে থাকে, এবং মেঝে (n / φ) <তল ( (n + 1) / φ) n যদি নীচে Wythoff অনুক্রমে থাকে। এই সম্পত্তিটি কীভাবে আসে তা আমি খুঁজে পাইনি তবে এটি কমপক্ষে n = 100000 (এবং সম্ভবত এর বাইরে) পর্যন্ত সঠিক ফলাফল দেয়।


পুরানো উত্তর:

জুলিয়া 0.6 , 31 বাইট

n->n∈[floor(i*φ)for i1:n]

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

রিটার্নস trueকম এবং falseউচ্চ Wythoff ক্রম জন্য।


যেহেতু এন পর্যন্ত সংখ্যাগুলির n / lower কম এবং অন্যগুলি উচ্চতর, ক্রমাগত নিম্ন সংখ্যাগুলির মধ্যে গড় পার্থক্য φ; নিম্ন সংখ্যাগুলিকে by দ্বারা ভাগ করা আপনাকে এমন ক্রম দেয় যেখানে গড় পার্থক্য 1; এটি সেই অনুক্রমের তলটির পূর্ণসংখ্যার পক্ষে এটি সম্ভব করে। আমার গণিতগুলি এটিকে আরও বেশি করে নেওয়ার পক্ষে যথেষ্ট ভাল নয়।
নীল


1

ওল্ফ্রাম ভাষা (ম্যাথমেটিকা) , 26 বাইট

#~Ceiling~GoldenRatio<#+1&

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

একটি পূর্ণসংখ্যা nনীচের Wythoff Sequence iff এ থাকে ceil(n/phi) - 1/phi < n/phi

প্রমাণ যে ceil(n/phi) - 1/phi < n/phi...

যথেষ্ট:

  1. যাক ceil(n/phi) - 1/phi < n/phi

  2. তারপরে ceil(n/phi) * phi < n + 1,।

  3. নোট n == n/phi * phi <= ceil(n/phi) * phi

  4. সুতরাং n <= ceil(n/phi) * phi < n + 1,।

  5. যেহেতু nএবং ceil(n/phi)পূর্ণসংখ্যার, আমরা মেঝে এবং রাষ্ট্র সংজ্ঞা ডাকা floor(ceil(n/phi) * phi) == n, এবং nনিম্ন Wythoff ক্রম হয়।

প্রয়োজনীয়; বিরূপ দ্বারা প্রমাণ:

  1. যাক ceil(n/phi) - 1/phi >= n/phi

  2. তারপরে ceil(n/phi) * phi >= n + 1,।

  3. বিঃদ্রঃ n + phi > (n/phi + 1) * phi > ceil(n/phi) * phi

  4. অত: পর n > (ceil(n/phi) - 1) * phi

  5. যেহেতু (ceil(n/phi) - 1) * phi < n < n + 1 <= ceil(n/phi) * phi, nনিম্ন উইথফ ক্রমটিতে নেই।


এটিতেও কোনও রাউন্ডিং ত্রুটি নেই।
ব্যবহারকারী 202729

1

জাপট , 10 বাইট

রিটার্নস সত্য নিম্ন এবং জন্য মিথ্যা উপরের জন্য।

õ_*MQ fÃøU

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

ব্যাখ্যা:

õ_*MQ fÃøU
             // Implicit U = Input
õ            // Range [1...U]
 _           // Loop through the range, at each element:
  *MQ        //   Multiply by the Golden ratio
      f      //   Floor
       Ã     // End Loop
        øU   // Return true if U is found in the collection

1
আমার কাছে এটি ছিল 10 বাইটের জন্যও।
শেগি

1

জাভা 10, 77 53 52 বাইট

n->{var r=Math.sqrt(5)/2+.5;return(int)(-~n/r)<n/r;}

পোর্ট অফ @ রড এর পাইথন 2 উত্তর
-1 বাইট ধন্যবাদ @ Zachary

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


পুরানো 77 76 বাইট উত্তর:

n->{for(int i=0;i++<n;)if(n==(int)((Math.sqrt(5)+1)/2*i))return 1;return 0;}

গত সপ্তাহে আমি নিজেকে প্রস্তাব দিয়েছি এমন কিছু জন্য @ ওভেসকে ধন্যবাদ -1 বাইট .. xD

1নিম্নের জন্য ফিরে আসে ; 0উপরের জন্য।

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

ব্যাখ্যা:

n->{                    // Method with integer as both parameter and return-type
  for(int i=0;++i<=n;)  //  Loop `i` in the range [1, `n`]
    if(n==(int)((Math.sqrt(5)+1)/2*i))
                        //   If `n` is equal to `floor(Phi * i)`:
      return 1;         //    Return 1
  return 0;}            //  Return 0 if we haven't returned inside the loop already

i*Phiগ্রহণ করে গণনা করা হয় (sqrt(5)+1)/2 * i, এবং আমরা এর পরে দশমিককে কাটা একটি পূর্ণসংখ্যার কাছে কাস্ট করে এটি মেঝে।


1
++i<=nআপনার পুরানো উত্তর হতে পারে i++<n
ovs


1
আমি মনে করি এটি -1 বাইটের জন্য কাজ করা উচিত:n->{var r=Math.sqrt(5)/2+.5;return(int)(-~n/r)<n/r;}
জাচারা

@ জ্যাচার - এটি সত্যিই আছে, ধন্যবাদ!
কেভিন ক্রুইজসেন

1

হাস্কেল , 153 139 126 79 বাইট

সীমাহীন যথার্থতা!

l=length
f a c|n<-2*l a-c,n<0||l a<a!!n=c:a|1>0=a
g x=x==(foldl f[][1..x+1])!!0

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

ব্যাখ্যা

ফলাফল গণনা করতে স্বর্ণের অনুপাতের একটি সংমিতি ব্যবহারের পরিবর্তে ইনপুটটির আকার বাড়ার সাথে সাথে তারা ত্রুটির প্রবণ হয়। এই উত্তর না। পরিবর্তে এটি OEIS এ প্রদত্ত সূত্রটি ব্যবহার করে যা এটির aঅনন্য ক্রম

n . b(n) = a(a(n))+1

bআদেশ প্রশংসা যেখানে ।


1
আপনার আউটগল্ফ হওয়ার আগে "সমস্ত" এমনকি সত্য ছিল না ...
নীল

@ নীল গুড পয়েন্ট আমি অবশ্যই আপনার উত্তর মিস করেছি।
গম উইজার্ড

যদিও আপনার উত্তরটি জাভাস্ক্রিপ্টে কোনও অবিচ্ছেদ্য টাইপ নেই এই বিষয়টি দ্বারা সীমাবদ্ধ?
গম উইজার্ড

ঠিক আছে, তারপরে এটির স্মৃতি ভালই ফুরিয়ে যাবে ...
নীল

1

ব্র্যাচল্যাগ , 8 বাইট

≥ℕ;φ×⌋₁?

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

ইনপুটটি নীচের Wythoff অনুক্রমে থাকলে এবং প্রেরিতটি সাফল্য অর্জন করে যদি এটি উপরের Wythoff ক্রমে থাকে।

 ℕ          There exists a whole number
≥           less than or equal to
            the input such that
  ;φ×       multiplied by phi
     ⌋₁     and rounded down
       ?    it is the input.

যদি শেষ করতে ব্যর্থতা একটি বৈধ আউটপুট পদ্ধতি হয় তবে প্রথম বাইট বাদ দেওয়া যেতে পারে।


এটি সম্ভবত প্রথমবারের মতো φকোনও ব্র্যাচল্যাগ প্রোগ্রামে ব্যবহৃত হয়। শেষ অবধি!
8:25



0

টিআই-বেসিক (টিআই -৪৪), 18 বাইট

max(Ans=iPart((√(5)+1)/2randIntNoRep(1,Ans

ইনপুট রয়েছে Ans
আউটপুটটি Ansস্বয়ংক্রিয়ভাবে মুদ্রিত হয়। ইনপুটটি নিম্ন সিকোয়েন্সে থাকলে বা এটি যদি উপরের অনুক্রমে থাকে তবে
মুদ্রণ করে ।10

0<এন<1000

উদাহরণ:

27
             27
prgmCDGFA
              1
44
             44
prgmCDGFA
              0

ব্যাখ্যা:

max(Ans=iPart((√(5)+1)/2randIntNoRep(1,Ans    ;full program, example input: 5
                        randIntNoRep(1,Ans    ;generate a list of random integers in [1,Ans]
                                               ; {1, 3, 2, 5, 4}
              (√(5)+1)/2                      ;calculate phi and then multiply the resulting
                                              ;list by phi
                                               ; {1.618 4.8541 3.2361 8.0902 6.4721}
        iPart(                                ;truncate
                                               ; {1 4 3 8 6}
    Ans=                                      ;compare the input to each element in the list
                                              ;and generate a list based off of the results
                                               ; {0 0 0 0 0}
max(                                          ;get the maximum element in the list and
                                              ;implicitly print it

দ্রষ্টব্য: টিআই-বেসিক একটি টোকেনাইজড ভাষা। অক্ষর গণনা বাইট গণনা সমান হয় না


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