মহিলা এবং পুরুষ ক্রম


20

এই প্রশ্নটি "সংখ্যার ক্রম উত্পন্ন করে" সকলের তুলনায় সম্ভবত শক্ত, কারণ এর জন্য একযোগে কাজ করা TWO ক্রম প্রয়োজন।

সত্যিই উত্তর অপেক্ষা!

তাঁর " গডেল, এসচার, বাচ: আন ইটার্নাল গোল্ডেন ব্রিড " বইয়ে ডগলাস হাফস্টাডারের ভিতরে কয়েকটি সংখ্যার সিকোয়েন্স রয়েছে, তারা সকলেই কোনওভাবে পূর্ববর্তী পদের উপর নির্ভর করে। সমস্ত ক্রম সম্পর্কিত তথ্যের জন্য, এই উইকিপিডিয়া পৃষ্ঠাটি দেখুন

ক্রমগুলির মধ্যে একটি জুড়ি যা সত্যই আকর্ষণীয় তা হল মহিলা এবং পুরুষ ক্রমগুলি, যা এর মতো সংজ্ঞায়িত হয়:

জন্য n > 0

এখানে মহিলা ক্রম এবং পুরুষ ক্রম

আপনার কাজটি যখন nইনপুট হিসাবে কোনও পূর্ণসংখ্যা দেওয়া হয়, তখন nপ্রথম লাইনে মহিলা ক্রম এবং পুরুষ সিকোয়েন্সের সাথে আউটপুট দুটি লাইনে সমান শর্তগুলির সাথে, মহিলা ক্রম এবং পুরুষ ক্রমের একটি তালিকা ফেরত দিন দ্বিতীয়.

নমুনা ইনপুট এবং আউটপুট: ইনপুট: 5 আউটপুট:[1, 1, 2, 2, 3] [0, 0, 1, 2, 2]

ইনপুট: 10 আউটপুট:[1, 1, 2, 2, 3, 3, 4, 5, 5, 6] [0, 0, 1, 2, 2, 3, 4, 4, 5, 6]

দ্রষ্টব্য: তালিকার মধ্যে বিভাজনটি একটি লাইন বিরতি বোঝায়।

এটি কোড-গল্ফ, তাই বাইট জেতে সংক্ষিপ্ততম কোড। এছাড়াও, আপনার কোডের জন্য একটি ব্যাখ্যা রাখুন।

লিডারবোর্ড


5
তালিকাগুলি মুদ্রণের পরিবর্তে আমরা কোনও ফাংশন থেকে তালিকার একজোড়া ফেরত দিতে পারি?
Zgarb

হাফস্টাডটারের ক্রমগুলি জড়িত অন্যান্য চ্যালেঞ্জগুলি: কিউ সিকোয়েন্স , ফিগার-ফিগার সিকোয়েন্স
মার্টিন ইন্ডার

@ জগারব আপনি যতক্ষণ না দুটি তালিকা বিভিন্ন লাইনে থাকবেন ততক্ষণ আপনি করতে পারেন।
ক্লিমেমিক

2
@ ডেরফেসপিজথন জোড় তালিকার কোনও লাইন নেই ; একটি ফাংশন যদি ফেরৎ তালিকা একজোড়া, আপনি তাদের প্রিন্ট তবে আপনি করতে পারেন। বলা হচ্ছে, আউটপুট মুদ্রণের সময়ও আমি লাইনগুলির প্রয়োজনীয়তার বিশাল ফ্যান নই। চ্যালেঞ্জগুলি লেখার সময় জটিল এ I / O ফর্ম্যাটগুলি এড়াতে পারা যায়
ডেনিস

4
কিছু পদ্ধতির / ভাষার জন্য এটি কোনও বড় বিষয় নয়, তবে এটি অন্যদের জন্য বড় পার্থক্য আনতে পারে। সি-তে, সারিগুলির চেয়ে কলামগুলিতে সিকোয়েন্সগুলি মুদ্রণ করে প্রচুর বাইট সংরক্ষণ করা যায়। পাইথনে, আমি সবচেয়ে সংক্ষিপ্ত পদ্ধতির কথা ভাবতে পারি যা আমার পুনরাবৃত্ত জুলিয়া উত্তরের অনুরূপ একটি পুনরাবৃত্ত ল্যাম্বডা যা এক জোড়া তালিকাকে দেয়, তবে লাইনফিডের সাথে স্ট্রিংয়ে রূপান্তরিত করা পুরো প্রোগ্রামের চেয়েও দীর্ঘতর হয়ে যায় Sp3000 পোস্ট করেছেন। অন্যান্য পন্থাগুলি, যেমন একটি পুনরাবৃত্তি সমাধান যা পরিবর্তে গণনা করা যায়, সম্পূর্ণভাবে এড়িয়ে যায় কারণ নিউলাইনটি যুক্ত করা অসম্ভব impossible
ডেনিস

উত্তর:


3

জেলি , 22 20 বাইট

ṙṪḢạL}ṭ
çƓḤ¤Ð¡1ṫ-Ṗ€G

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

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

çƓḤ¤Ð¡1ṫ-Ṗ€G  Main link. No user arguments. Left argument defaults to 0.
   ¤          Combine the two links to the left into a niladic chain.
 Ɠ              Read an integer from STDIN.
  Ḥ             Unhalve/double it.
ç   С1       Call the helper link that many times. Return all results.
              In the first call, the left and right argument are 0 and 1 resp.
              After each iteration, the left argument is set to the return value
              and the right argument to the prior value of the left one.
       ṫ-     Tail -1; keep the last two items of the list of results.
         Ṗ€   Discard the last item of each list.
           G  Grid; format the pair of lists.


ṙṪḢạL}ṭ       Helper link. Arguments: x, y (lists)

ṙ             Rotate x k units to the left, for each k in y.
 Ṫ            Tail; extract the last rotation.
  Ḣ           Head; extract the last element.
              This essentially computes x[y[-1]] (Python notation), avoiding
              Jelly's 1-based indexing.
    L}        Yield the length of y.
   ạ          Take the absolute difference of the results to both sides.
      ṭ       Tack; append the difference to y and return the result.

5
এবং এটি সেই অংশ যেখানে আমি চ্যালেঞ্জ তৈরির জন্য নিজেকে গর্বিত বোধ করি যা জেলি 10 বাইটের বেশি ব্যবহার করে।
ক্লিমেজিক

13

জুলিয়া, 52 48 বাইট

x->[n÷φ|(5n^2|4∈(2:3n).^2)for| =(+,-),n=1:x]

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

পটভূমি

ইন উপর Hofstadter বিয়ে ফাংশন , লেখক অনুষ্ঠান

এফ / এম সূত্র

যেখানে φ উল্লেখ করে সুবর্ণ অনুপাত ,

ডেল্টা / এপসিলন সূত্র

এবং এফ এন n ফিবোনাচি সংখ্যাটি বোঝায় ।

তদ্ব্যতীত, উন্নত সমস্যা এবং সমাধানগুলিতে, H-187: ফিবোনাচি একটি বর্গক্ষেত্র , প্রস্তাবক দেখায় যে

ফিবোনাচি / লুকাস পরিচয়

যেখানে এল এন n লুকাশাসমূহকে বোঝায় এবং বিপরীতভাবে - যদি

কথোপকথন ফিবোনাচি / লুকাস পরিচয়

তারপরে এন একটি ফিবোনাচি নম্বর এবং মি হ'ল লুকাস নম্বর।

এটি থেকে, আমরা এটি হ্রাস করি

ডেল্টা / এপসিলন উপপাদ্য

যখনই এন> 0

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

ইনপুট এক্স দেওয়া , আমরা একটি 2 বাই এক্স ম্যাট্রিক্স, যেখানে | প্রথম কলামে যোগ করা হয় এবং দ্বিতীয়টিতে বিয়োগ করা হয়, এবং n সারিতে 1 এবং x এর মধ্যে পূর্ণসংখ্যার উপর পুনরাবৃত্তি করে ।

এফ (এন - 1) এবং এম (এন - 1) উভয়ের প্রথম পদটি সহজভাবে n÷φ

আমরা 5n² | গণনা করে δ (n) এবং ε (n) গণনা করি 4 এবং পরীক্ষাটি 2 এবং 3n এর মধ্যে পূর্ণসংখ্যার স্কোয়ারের অ্যারের সাথে সম্পর্কিত কিনা তা পরীক্ষা করে । এই উভয় squareness এবং, যেহেতু পরীক্ষা 1 , পরিসর নেই জন্য এন> 1 যদি | বিয়োগ

শেষ পর্যন্ত আমরা 5n^2|4∈(2:3n).^2পূর্বের গণিত পূর্ণসংখ্যার থেকে বা এর ফলস্বরূপ বুলিয়ান যোগ বা বিয়োগ করি ।


এটি কি পুনরাবৃত্ত / পুনরুক্তিযোগ্য উপায়ে প্রকাশ করা যেতে পারে ?, এর জন্য বদ্ধ রূপটি কী?
Abr001am

আমি একটি ব্যাখ্যা যুক্ত করেছি।
ডেনিস

11

পাইথন 2, 79 70 বাইট

a=0,;b=1,
exec"a,b=b,a+(len(a)-b[a[-1]],);"*~-input()*2
print b,'\n',a

পুনরাবৃত্তির চেয়ে আইট্রেটিভ, কারণ কেন নয়। প্রথম লাইনে একটি পিছনের স্থান রয়েছে - এটি ঠিক না থাকলে এটি অতিরিক্ত বাইটের জন্য স্থির করা যেতে পারে। -9 বাইটস @ ডেনিসকে ধন্যবাদ।

এখানে কিছু সংযুক্ত ল্যাম্বডাস রয়েছে যা সত্যই সহায়তা করে নি:

f=lambda n,k:n and n-f(f(n-1,k),k^1)or k
f=lambda n,k:[k][n:]or f(n-1,k)+[n-f(f(n-1,k)[-1],k^1)[-1]]

উভয়ই nপ্যারামিটার গ্রহণ kকরে 0 বা 1, পুরুষ / মহিলা নির্দিষ্ট করে। প্রথম ল্যাম্বদা নবম উপাদানটি দেয় এবং দ্বিতীয় লাম্বদা প্রথম এন উপাদানগুলি সরবরাহ করে (ক্ষতিকারক রানটাইম সহ)।


9

এমএটিএল , 23 বাইট

1Oiq:"@XJth"yy0)Q)_J+hw

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

ব্যাখ্যা

এটি পুনরাবৃত্তভাবে কাজ করে। প্রতিটি ক্রম একটি অ্যারে রাখা হয়। প্রতিটি সূচ n এর জন্য প্রতিটি অনুক্রমের নতুন পদটি গণনা করা হয় এবং সংশ্লিষ্ট অ্যারের সাথে সংযুক্ত থাকে। N −1 পদগুলির একটি forলুপ ব্যবহৃত হয়, যেখানে এন ইনপুট নম্বর।

সিকোয়েন্স এম এর জন্য আপডেটটি প্রথমে করা দরকার। এর কারণ সিকোয়েন্স এফ সর্বদা একই সূচির জন্য সিকোয়েন্স এম এর চেয়ে বড় বা সমান হয়, তাই যদি আমরা প্রথমে এফ আপডেট করার চেষ্টা করি তবে আমাদের এম এর একটি পরিমান এখনও গণনা করা হবে না।

দুটি আপডেট সমীকরণ একই ইন্টারফেসিং এফ এবং এম হয়। সুতরাং আপডেটিংয়ের কোডটি forদুটি পুনরাবৃত্তির সাথে একটি লুপ প্রয়োগ করে এবং স্ট্যাকের ক্রমগুলিকে অদলবদল করে পুনরায় ব্যবহৃত হয় ।

1        % Push 1: seed for F sequence
O        % Push 0: seed for M sequence
iq:      % Input N. Generate range [1 2 ... N-1]
"        % For each (i.e. iterate N-1 times)
  @      %   Push current index, n (starting at 1 and ending at N-1)
  XJ     %   Copy to clipboard J
  th     %   Duplicate and concatenate. This generates a length-2 array
  "      %   For each (i.e. iterate twice)
    yy   %   Duplicate top two elements, i.e. F and M sequences
    0)   %     In the *first* iteration: get last entry of M, i.e M(n-1)
    Q)   %     Add 1 and index into F. This is F(M(n-1))
    _J+  %     Negate and add n. This is n-F(M(n-1)), that is, M(n)
    h    %     Concatenate to update M
    w    %     Swap top two elements, to bring F to top.
         %     In the *second* iteration the procedure is repeated to update F,
         %     and then the top two elements are swapped to bring M to top again,
         %     ready for the next iteration of the outer loop
         %   End for implicitly
         % End for implicitly
         % Display implicitly from bottom to top: first line is F, second is M

6

জে, 47 বাইট

f=:1:`(-m@f@<:)@.*
m=:0:`(-f@m@<:)@.*
(f,:m)@i.

পুনরাবৃত্ত সংজ্ঞা ব্যবহার করে। প্রথম দুটি লাইন ক্রিয়াগুলি সংজ্ঞায়িত করে fএবং mযা যথাক্রমে মহিলা এবং পুরুষ কার্যকারিতা উপস্থাপন করে। শেষ লাইনটি এমন একটি ক্রিয়া যা একটি একক যুক্তি নেয় nএবং nমহিলা এবং পুরুষ ক্রমগুলির প্রথম পদগুলিকে আউটপুট করে ।

ব্যবহার

   (f,:m)@i. 5
1 1 2 2 3
0 0 1 2 2
   (f,:m)@i. 10
1 1 2 2 3 3 4 5 5 6
0 0 1 2 2 3 4 4 5 6

6

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

g=n=>--n?([f,m]=g(n),m=[...m,n-f[m[n-1]]],[[...f,n-m[f[n-1]]],m]):[[1],[[0]]

আমাকে যদি প্রথম পুরুষ ক্রম ফেরত দেওয়ার অনুমতি দেওয়া হয় তবে আমি 2 বাইট বাঁচাতে পারি:

g=n=>--n?([f,m]=g(n),[m=[...m,n-f[m[n-1]]],[...f,n-m[f[n-1]]]]):[[1],[[0]]

6

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

l#s=scanl(\a b->b-l!!a)s[1..]
v=w#1
w=v#0
(<$>[v,w]).take

ব্যবহারের উদাহরণ: (<$>[v,w]).take $ 5->[[1,1,2,2,3],[0,0,1,2,2]]

সহায়ক ফাংশন #শুরু মান সহ একটি অসীম তালিকা তৈরি করে sএবং lআরও সমস্ত উপাদান অনুসন্ধানের জন্য একটি তালিকা তৈরি করে (পূর্ববর্তী মানের সূচকে)। v = w#1মহিলা এবং w = v#0পুরুষ ক্রম হয়। মূল ফাংশনে আমরা nউভয়ের প্রথম উপাদানগুলি গ্রহণ করি vএবং w


4

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

F=lambda n:n and n-M(F(n-1))or 1
M=lambda n:n and n-F(M(n-1))
n=range(input())
print map(F,n),'\n',map(M,n)

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

বড় ইনপুট মানগুলি একটি রানটাইমআরারের কারণ ঘটায় (অত্যধিক পুনরাবৃত্তি)। এটি যদি সমস্যা হয় তবে আমি এমন সংস্করণ লিখতে পারি যেখানে ত্রুটিটি ঘটে না।



3

পাইথ, 24 বাইট

reduceবাইট-কাউন্ট কমাতে সম্ভবত এটি ব্যবহার করা অসম্ভব ।

সোজা বাস্তবায়ন।

L&b-b'ytbL?b-by'tb1'MQyM

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

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

L&b-b'ytb  defines a function y, which is actually the male sequence.

L          def male(b):
 &b            if not b: return b
   -b          else: return b-
     'ytb            female(male(b-1))


L?b-by'tb1 defines a function ', which is actually the female sequence.

L          def female(b):
 ?b            if b:
   -by'tb          return b-male(female(b-1))
         1     else: return 1


'MQ        print(female(i) for i from 0 to input)
yMQ        print(male(i) for i from 0 to input)

আমি কি লিডারবোর্ডে অ্যানোগ্রামায়িত নাম বা আপনার আসল নামটি অন্তর্ভুক্ত করব? এছাড়াও, এই কোডটি একটি পাইথ প্রোগ্রামের জন্য ভয়ঙ্কর দীর্ঘ long
ক্লিমিক

তুমি কতক্ষণ এখানে আছো ... তুমি কীভাবে জানলে যে আমি আমার নাম পরিবর্তন করেছি? আমার নতুন নাম সেখানে রাখুন।
ফাঁস নুন

1
আপনি নিজের নাম পরিবর্তন করেছেন তা জানতে আমি এখানে দীর্ঘ সময় রয়েছি।
ক্লিমেজিক

টুইটগুলি দেখুন
লিকি নুন

এটি খুব সত্য, তবে অন্যান্য প্রশ্নের জন্য পাইথ প্রোগ্রামগুলির তুলনায় এটি এখনও দীর্ঘ।
ক্লিমেজিক

3

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

:{:1-:0re.}fL:2aw,@Nw,L:3aw
0,1.|:1-:2&:3&:?--.
0.|:1-:3&:2&:?--.

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

আপনি নিম্নলিখিত একটি লাইনার ব্যবহার করতে পারেন যা একই সংখ্যক বাইট রয়েছে:

:{:1-:0re.}fL:{0,1.|:1-:2&:3&:?--.}aw,@Nw,L:{0.|:1-:3&:2&:?--.}aw

দ্রষ্টব্য : এটি পুরানো জাভা নয়, প্রোলোগ ট্রান্সপেলারের সাথে কাজ করে।

ব্যাখ্যা

প্রধান শিকারী:

:{:1-:0re.}fL                Build a list L of integers from 0 to Input - 1
             :2aw            Apply predicate 2 to each element of L, write the resulting list
                 ,@Nw        Write a line break
                     ,L:3aw  Apply predicate 3 to each element of L, write the resulting list

ভবিষ্যদ্বাণী 2 (মহিলা):

0,1.                         If Input = 0, unify Output with 1
    |                        Else
     :1-                     Subtract 1 from Input
        :2&                  Call predicate 2 with Input - 1 as argument
           :3&               Call predicate 3 with the Output of the previous predicate 2
              :?-            Subtract Input from the Output of the previous predicate 3
                 -.          Unify the Output with the opposite of the subtraction

ভবিষ্যদ্বাণী 3 (পুরুষ):

0.                           If Input = 0, unify Output with 0
  |                          Else
   :1-                       Subtract 1 from Input
      :3&                    Call predicate 3 with Input - 1 as argument
         :2&                 Call predicate 2 with the Output of the previous predicate 3
            :?-              Subtract Input from the Output of the previous predicate 3
               -.            Unify the Output with the opposite of the subtraction

অপেক্ষা করুন ... কোনটির ভবিষ্যদ্বাণী 3?
ক্লিমেজিক

@ ডেরপফেসপাইথন ওফস, ফিক্সড। আরও মনে রাখবেন যে প্রেজিকেট হ'ল {:1-:0re.}, ব্যাপ্তি তালিকা তৈরি করতে ব্যবহৃত হয়।
25:56

3

ক্লোজার, 132 131 বাইট

(fn [n](loop[N 1 M[0]F[1]](if(< N n)(let[M(conj M(- N(F(peek M))))F(conj F(- N(M(peek F))))](recur(inc N)M F))(do(prn F)(prn M)))))

শূন্য থেকে এন পর্যন্ত পুনরাবৃত্তভাবে ক্রমগুলি তৈরি করে।

উদার সংস্করণ

(fn [n]
  (loop [N 1 M [0] F [1]]
    (if (< N n)
      (let [M (conj M (- N (F (peek M))))
            F (conj F (- N (M (peek F))))]
        (recur (inc N) M F))
      (do
        (prn F)
        (prn M)))))

ভাল উত্তর, সাইটে আপনাকে স্বাগতম! একটি পিছনের স্থান বা নতুন লাইন প্রয়োজনীয়? আমি 131 + একটি পেছনের সাদা স্থান গণনা করছি।
DJMcMayhem

না, পিছনে সাদা জায়গার দরকার নেই। স্নেকি ভিম ডাব্লুসিটি গণনা করার জন্য শেষে একটি নতুন লাইন যুক্ত করেছে।
চিহ্নিত করুন

3

পাইথ, 23 বাইট

jCuaG-LHtPs@LGeGr1Q],1Z

অনলাইনে চেষ্টা করুন: বিক্ষোভ

ব্যাখ্যা:

jCuaG-LHtPs@LGeGr1Q],1Z

  u                ],1Z    start with G = [[1, 0]]
                           (this will be the list of F-M pairs)
  u             r1Q        for each H in [1, 2, ..., Q-1]:
              eG              take the last pair of G [F(H-1), M(H-1)]
           @LG                lookup the pairs of these values:
                              [[F(F(H-1)), M(F(H-1))], [F(M(H-1)), M(M(H-1))]]
          s                   join them:
                              [F(F(H-1)), M(F(H-1)), F(M(H-1)), M(M(H-1))]
        tP                    get rid of the first and last element:
                              [M(F(H-1)), F(M(H-1))]
     -LH                      subtract these values from H
                              [H - M(F(H-1)), H - F(M(H-1))]
   aG                         and append this new pair to G
jC                         at the end: zip G and print each list on a line

বিকল্প সমাধান যা হ্রাস করার পরিবর্তে কোনও ফাংশন ব্যবহার করে (২৩ বাইটও):

L?>b1-LbtPsyMytb,1ZjCyM

খুশী হলাম। সত্যিই খুব সুন্দর.
লিকি নুন

3

রুবি, 104 92 97 82 বাইট

f=->n,i{n>0?n-f[f[n-1,i],-i]:i>0?1:0}
->n{[1,-1].map{|k|p (0...n).map{|i|f[i,k]}}}

সম্পাদনা: f এবং mএখন এক ফাংশন ধন্যবাদ HopefullyHelpful । আমি প্রিন্ট করতে দ্বিতীয় ফাংশন পরিবর্তিত fতারপর m। পরে সাদা অংশটি pউল্লেখযোগ্য, অন্যথায় ফলটির (0...n)পরিবর্তে ফাংশনটি মুদ্রণ করে map

তৃতীয় ফাংশন প্রথমে প্রথম এন শর্তগুলির একটি অ্যারে প্রিন্ট করে f, তারপরে প্রথম এন শর্তগুলির অ্যারে অনুসরণ করেm

এই ফাংশনগুলিকে এভাবে বলা হয়:

> f=->n,i{n>0?n-f[f[n-1,i],-i]:i>0?1:0}
> s=->n{[1,-1].map{|k|p (0...n).map{|i|f[i,k]}}}
> s[10]
[1, 1, 2, 2, 3, 3, 4, 5, 5, 6]
[0, 0, 1, 2, 2, 3, 4, 4, 5, 6]

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

আপনি 2 টি ফাংশনটি 1 টি দিয়ে প্রতিস্থাপন করতে পারেন যাতে 2 টি যুক্তি রয়েছে nএবংi n>0?n-f(f(n-1,i),-i):i>0?1:0
আশা করি

@ আশাবাদী সাহায্যকারী একটি গুচ্ছ ধন্যবাদ: ডি
শার্লক

@NothatCharles আউটপুট কি মুদ্রণের প্রয়োজন হয় না? রুবিতে, যদি আমি সেই লাইনটি fএবং এর মধ্যে বিরতি করতে চাই তবে আমার mএটি মুদ্রণ করা দরকার। অন্যথায়, আমি কেবল একটি অ্যারে পেয়েছি[[1, 1, 2, 2, 3, 3, 4, 5, 5, 6], [0, 0, 1, 2, 2, 3, 4, 4, 5, 6]]
শার্লক

ওহ, এটি "লাইন ব্রেক" বলে। খুব খারাপ.
চার্লস

3

এপিএল (ডায়ালগ ইউনিকোড) , 45 25 বাইট

অজ্ঞাতনামা প্রয়োজনীয় ⎕IO←0, যা অনেকগুলি এপিএল সিস্টেমে স্ট্যান্ডার্ড।

1 0∘.{×⍵:⍵-(~⍺)∇⍺∇⍵-1⋄⍺}⍳

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

এটি বুলিয়ান বাম আর্গুমেন্টের সাথে একটি ডায়াডিক ফাংশনে এফ এবং এমকে একত্রিত করে কাজ করে যা প্রয়োগ করার জন্য ফাংশনটি নির্বাচন করে। আমরা 1 ব্যবহার এফ জন্য এবং 0 এম যাতে আমরা বিনিময়ে মান হিসাবে এই নির্বাচক ব্যবহার করতে পারেন এফ  (0) এবং এম  (0) এর । এরপরে আমরা লক্ষ্য করি যে উভয় ফাংশনকে প্রথমে নিজেদেরকে (আর্গুমেন্ট বিয়োগের একটিতে) এবং তারপরে অন্য ফাংশনটি কল করা প্রয়োজন, সুতরাং প্রথমে আমরা প্রদত্ত নির্বাচকটির সাথে পুনরায় পুনরায় পুনঃস্থাপন করি এবং তারপরে যৌক্তিকভাবে অবহেলিত নির্বাচকের সাথে পুনরাবৃত্তি করি।

d ndices; আর্গুমেন্ট মাইনাস এক মাধ্যমে শূন্য

1 0∘.{} বাহ্যিক (কার্তেসিয়ান) "পণ্য" (তবে গুণনের পরিবর্তে নীচের ফাংশন সহ) [1,0]বাম আর্গুমেন্ট হিসাবে ব্যবহার করে ( ) এবং সূচকগুলি ডান আর্গুমেন্ট হিসাবে ( ):

×⍵ যদি সঠিক যুক্তি কঠোরভাবে ইতিবাচক হয় (আলোকিত করুন সঠিক যুক্তির চিহ্ন):

  ⍵-1 একটিকে সঠিক যুক্তি থেকে বিয়োগ করুন

  ⍺∇ ডান আর্গুমেন্ট এবং বাম আর্গুমেন্ট হিসাবে বাম আর্গুমেন্ট হিসাবে নিজেকে কল করুন

  (~⍺)∇ এটিকে ডান আরগ হিসাবে বাম আরগ হিসাবে বাম আরগের যৌক্তিক অবহেলা হিসাবে কল করুন

  ⍵- এটি সঠিক যুক্তি থেকে বিয়োগ করুন এবং ফলাফলটি ফিরিয়ে দিন

 অন্য:

   বাম যুক্তি ফিরিয়ে দিন


এটি ভাল কাজ করে তবে ধরে নেওয়া যায় যে ইনপুটটি একটি ভেরিয়েবলের মধ্যে সঞ্চিত আছে তা ডিফল্টরূপে অনুমোদিত নয়।
ডেনিস

@ ডেনিস এটি সত্যই নয়। এটি একটি tfn শরীর। আমি যখন এখানে নতুন ছিলাম, এনএনজি আমাকে বলেছিল যে tfn শিরোনামটি গণনা করতে হবে না (যা দুটি বাইট হবে, একটি একক চর নাম + একটি নতুন লাইন, যেমন উত্স ফাইলের নাম গণনা করা হয় না, এবং বেনামে fns অনুমোদিত হয়) । সুতরাং খুব এখানে যেখানে হেডার 1-গৃহস্থালির কাজ নাম + Space + একটি 1-গৃহস্থালির কাজ যুক্তি নাম (হয় n) + + প্লাস একটি newline।
আদম

টিএফএন ঠিক কী?
ডেনিস

@ ডেনিস টিফএনএস হ'ল ফাংশনগুলির traditional তিহ্যবাহী এপিএল উপস্থাপনা। Dfns এর প্রায়শই কোনও বিধিনিষেধের সাথে কোডের লাইন থাকে। যেমন আপনার সঠিক নিয়ন্ত্রণ কাঠামো এবং কোনও ফলাফল ছাড়াই এক্সপ্রেশন থাকতে পারে। লাইন "0" একটি শিরোনাম যা fn এর বাক্য গঠনটি নির্দেশ করে ।
Adám

2

ES6, 89 85 83 বাইট

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

x=>{F=[n=1],M=[0];while(n<x){M.push(n-F[M[n-1]]);F.push(n-M[F[n++-1]])}return[F,M]}

সাদামাটা বাস্তবায়ন।

ব্যাখ্যা:

x => {
    F = [n = 1], //female and term number
    M = [0]; //male
    while (n < x) {
        M.push(n - F[M[n - 1]]); //naïve
        F.push(n - M[F[n++ - 1]]); //post-decrement means n++ acts as n in the calculation
    }
    return [F, M];
}

আমার মনে হয় আপনি এটি একটি anonymus ফাংশন করতে পারেন, এবং && প্রতিস্থাপন - সঙ্গে S &
Bálint

আপনি চান না, &&শর্ট সার্কিট, তবে আমি এটিকে সরিয়ে ফেললাম কারণ ব্রেস সিনট্যাক্স যাইহোক সমানভাবে সংক্ষিপ্ত
এএসসিআইআই-

তারপরে আপনি do`F = [n = 1]
বিলিন্ট

2

গণিত, 69 62 বাইট

143 বাইট সংরক্ষণ করেছে এমন একটি কার্যকরী ফর্ম প্রস্তাব দেওয়ার জন্য Sp3000 ধন্যবাদ।

k_~f~0=1-k
k_~f~n_:=n-f[1-k,f[k,n-1]]
Print/@Array[f,{2,#},0]&

এটি একটি নামী সহায়ক ফাংশন সংজ্ঞা দেয় fএবং তারপরে একটি নামহীন ফাংশনকে মূল্যায়ন করে যা উভয় সিকোয়েন্স মুদ্রণের আসল কাজটি সলভ করে।


2

পার্ল 5.10, 85 80 বাইট

আমি জানি না, যদি এগুলি গল্ফ করার জন্য আমার আরও ধারণা থাকে ...

@a=1;@b=0;for(1..<>-1){push@a,$_-$b[$a[$_-1]];push@b,$_-$a[$b[$_-1]]}say"@a\n@b"

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

use 5.10.0এটি গ্রহণ করার জন্য আমাকে আইডিয়নে যুক্ত করতে হয়েছিলsayফাংশনটি তবে এটি বাইট গণনা অনুসারে গণনা করে না।

এটি অ্যালগরিদমের একটি নিষ্পাপ বাস্তবায়ন, @a"মহিলা" তালিকা এবং being@b "পুরুষ" তালিকা ।

ক্রসড আউট 85 এখনও 85?


ব্যাখ্যা, দয়া করে?
ক্লিমেজিক

আমার জেএস উত্তরের মতো অনেকটা একই
ASCII-

@ ডেরফেসপিজথন এটি আসলে একটি নির্বিকার বাস্তবায়ন। :)
পল পিকার্ড

আমি পরীক্ষা করিনি, তবে আমি মনে করি না প্রতিটি pushএড শব্দটির চারপাশে আপনার প্রথম বন্ধনী বা ক্লাস-ব্রাসের আগে চূড়ান্ত সেমিকোলন থাকা উচিত।
msh210

@ msh210 আসলে, এই সম্পর্কে ভুলে গেছেন। মোট 5 টি বাইট সাশ্রয়, ধন্যবাদ!
পল পিকার্ড

2

জাভা, মোট 169 বাইট

int f(int n,int i){return n>0?n-f(f(n-1,i),-i):i>0?1:0;}void p(int n,int i){if(n>0)p(n-1,i);System.out.print(i==0?"\n":f(n,i)+" ");}void p(int n){p(n,1);p(0,0);p(n,-1);}

এফ (), এম () 56 বাইট

int f(int n,int i){
    return n>0?n-f(f(n-1,i),-i):i>0?1:0;
}

পুনরাবৃত্তির জন্য লুপ এবং মুদ্রণ 77 বাইট

void p(int n,int i) {
    if(n>0) {
        p(n-1,i);
    }
    System.out.print(i==0?"\n":f(n,i)+" ");
}

দুটি ভিন্ন লাইনে তালিকাগুলি আউটপুট করা 37 বাইট

void p(int n) {
    p(n,1);
    p(0,0);
    p(n,-1);
}

ইনপুট: পি ( 10)
আউটপুট:

1 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 
0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9

1

সি, 166 বাইট

#define P printf
#define L for(i=0;i<a;i++)
f(x);m(x);i;c(a){L P("%d ",f(i));P("\n");L P("%d ",m(i));}f(x){return x==0?1:x-m(f(x-1));}m(x){return x==0?0:x-f(m(x-1));}

ব্যবহার:

main()
{
    c(10);
}

আউটপুট:

1 1 2 2 3 3 4 5 5 6
0 0 1 2 2 3 4 4 5 6

অব্যক্ত (331 বাইট)

#include <stdio.h>

int female(int x);
int male(int x);
int i;
int count(a){
    for(i=0;i<a;i++){
        printf("%d ",female(i));
    }
    printf("\n");
    for(i=0;i<a;i++){
        printf("%d ",male(i));
    }
}
int female (int x){
    return x==0?1:x-male(female(x-1));
}
int male(x){
    return x==0?0:x-female(male(x-1));
}
int main()
{
    count(10);
}

0

8 ম , 195 বাইট

কোড

defer: M
: F dup not if 1 nip else dup n:1- recurse M n:- then ;
( dup not if 0 nip else dup n:1- recurse F n:- then ) is M
: FM n:1- dup ( F . space ) 0 rot loop cr ( M . space ) 0 rot loop cr ;

ব্যবহার

ok> 5 FM
1 1 2 2 3 
0 0 1 2 2 

ok> 10 FM
1 1 2 2 3 3 4 5 5 6 
0 0 1 2 2 3 4 4 5 6 

ব্যাখ্যা

এই কোডটি পুনরাবৃত্তি এবং স্থগিত শব্দ ব্যবহার করে

defer: M- শব্দটি Mপরে সংজ্ঞায়িত হিসাবে ঘোষণা করা হয়েছে। এটি একটি মুলতুবি শব্দ

: F dup not if 1 nip else dup n:1- recurse M n:- then ;- সংজ্ঞা অনুসারে মহিলা সংখ্যা উত্পন্ন করতে F পুনরাবৃত্তভাবে সংজ্ঞা দিন। দয়া করে নোট করুন যে Mএখনও সংজ্ঞায়িত করা হয়নি

( dup not if 0 nip else dup n:1- recurse F n:- then ) is M- সংজ্ঞা অনুসারে পুরুষ সংখ্যা উত্পন্ন করতে M পুনরাবৃত্তির সংজ্ঞা দিন

: FM n:1- dup ( F . space ) 0 rot loop cr ( M . space ) 0 rot loop cr ; - শব্দটি মহিলা এবং পুরুষ সংখ্যার ক্রম প্রিন্ট করতে ব্যবহৃত হত

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