অর্ধেক, অর্ধেক এবং, অর্ধেক


33

নিম্নলিখিত নম্বর ক্রম বিবেচনা করুন:

0,12,14,34,18,38,58,78,116,316,516,716,916,1116,1316,1516,132,332,532,

এটা তোলে ইউনিট অন্তর সব বাইনারি ভগ্নাংশ উল্লেখ ।[0,1)

(এই চ্যালেঞ্জটিকে আরও সহজ করার জন্য, প্রথম উপাদানটি isচ্ছিক: আপনি এটি এড়িয়ে যেতে পারেন এবং 1/2 দিয়ে ক্রমটি শুরু হওয়া বিবেচনা করতে পারেন))

কার্য

একটি প্রোগ্রাম লিখুন (সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন) যা ...

এই আচরণগুলির মধ্যে একটি চয়ন করুন:

  • ইনপুট এন, সিকোয়েন্সের আউটপুট এনথ এলিমেন্ট (0-ইনডেক্সড বা 1-ইনেক্সেক্স);
  • ইনপুট এন, অনুক্রমের প্রথম এন উপাদানগুলি আউটপুট;
  • ইনপুট কিছুই নয়, অসীম সংখ্যা ক্রম আউটপুট করুন যা আপনি একে একে নিতে পারেন;

নিয়ম

  • আপনার প্রোগ্রামটি কমপক্ষে প্রথম 1000 আইটেম সমর্থন করা উচিত;
  • আপনি পছন্দমতো দশমিক বা ভগ্নাংশ (অন্তর্নির্মিত, পূর্ণসংখ্যা জোড়া, স্ট্রিং) আউটপুট বেছে নিতে পারেন;
    • বাইনারি অঙ্ক হিসাবে ইনপুট / আউটপুট এই প্রশ্নে অনুমোদিত নয়;
  • এটি , সংক্ষিপ্ততম কোড জয়;
  • স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।

Testcases

input output
1     1/2     0.5
2     1/4     0.25
3     3/4     0.75
4     1/8     0.125
10    5/16    0.3125
100   73/128  0.5703125
511   511/512 0.998046875
512   1/1024  0.0009765625

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

আরও পড়ুন

  • OEIS A006257
    • জোসেফাসের সমস্যা: । (পূর্বে এম 2216)a2n=2an1,a2n+1=2an+1
    • 0, 1, 1, 3, 1, 3, 5, 7, 1, 3, 5, 7, 9, 11, 13, 15, 1, 3, 5, ...
  • OEIS A062383
    • এন > 0 একটি এন = 2 2 এন + + 1 একটি এন = 2 একটি এনa0=1 : এর জন্য , বা ।n>0an=2log2n+1an=2an2
    • 1, 2, 4, 4, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 32, 32, 32, ...
  • A006257 (n) / A062383 (n) = (0, 0.1, 0.01, 0.11, 0.001, ...) ইউনিট বিরতিতে সমস্ত বাইনারি ভগ্নাংশ গণনা করে [0, 1)। - ফ্রেড্রিক জোহানসন, আগস্ট 14 2006


4
" ইনপুট কিছুই নয়, একের পর এক অসীম সংখ্যা ক্রম আউটপুট দেয় " এটি কি একে একে এক হতে হবে, অথবা আমাদেরও একটি অসীম তালিকা আউটপুট করার অনুমতি দেওয়া হচ্ছে (হাস্কেল, এলিক্সির, 05 এবি 1 ই ইত্যাদি সম্ভব)?
কেভিন ক্রুইজসেন

আমি স্ট্রিংগুলির একটি তালিকা আউটপুট করতে পারি? যেমন"1/2" "1/4" "1/8"...
ব্যারানকা

@ কেভিন ক্রুইজসেন অসীম তালিকা যতক্ষণ takeনা পরে আপনি এটিকে উপাদানগুলি থেকে প্রস্তুত করতে পারেন ততক্ষণ ঠিক ।
tsh

@ বারানকা আমি মনে করি এটি গ্রহণযোগ্য। স্টাডাউটে ভগ্নাংশ প্রিন্ট করার জন্য এটি আলাদা কিছু নয়।
tsh

আপনি যখন বলছেন বাইনারি সংখ্যা হিসাবে ইনপুট / আউটপুট অনুমোদিত নয় , আপনি বলতে চাইছেন যে আমরা কোনও ফাংশন লিখতে পারি না যা যদি জুটি ফেরত দেয় int, বা doubleকোনও ভাষা / প্রয়োগে যেখানে doubleআইইইই বাইনারি 64 ফর্ম্যাট ব্যবহার করে ? আমি আশা করি আপনার অর্থ এই নয় যে আমরা কোনও পূর্ণসংখ্যার ইনপুট নিতে চাইলে একটি ASCII স্ট্রিং পার্স করা উচিত ছিল? সাধারণ পূর্ণসংখ্যার প্রকারগুলি সি এর মতো ভাষাগুলিতে বাইনারি হয় বা আপনি কি বোঝাতে চান যে ইনপুট / আউটপুটটি পূর্ণসংখ্যা বা ASCII জিরো / বেশীগুলির একটি অ্যারে বা স্ট্রিং হতে পারে না?
পিটার কর্ডেস

উত্তর:


22

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

pred.until(<2)(/2).(+0.5)

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

আউটপুট দশমিক, প্রাথমিক শূন্য শব্দ ছাড়া এক-সূচক।

ইনপুটটিতে 0.5 যোগ করে, তারপরে ফলাফল 2 এর নীচে না হওয়া পর্যন্ত অর্ধনমিত হয়, তারপরে 1 টি বিয়োগ করে a

f n=until(<2)(/2)(n+0.5)-1

11

জাভা 10, 68 64 বাইট

প্রথমে কোড গল্ফ এ চেষ্টা করুন!

বিকল্প 1: এন- তম উপাদানটি সন্ধান করুন (1-সূচিত)

-4 বাইটস কেভিন ক্রুইজসেনকে ধন্যবাদ

n->{int x=0;for(;n>>++x!=1;);return((~(1<<x)&n)*2.+1)/(1<<x+1);}

এটি একটি বেনামী পদ্ধতি যা খুঁজে বের করে হয় এন থেকে সবচেয়ে গুরুত্বপূর্ণ বিট সরিয়ে -th মেয়াদ এন , এটা দ্বিগুন এবং এক যোগ, তারপর 2 পরবর্তী সর্বোচ্চ শক্তিতে বিভাজক।

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

কোড ওয়াকথ্রু:

n->{                      // builds anonymous function with input n
int x=0;                  // stores floor of log(n) (base 2) for most significant digit
for(;n>>++x!=1;);         // calculates floor of log(n) by counting right shifts until 1
return((~(1<<x)&n)        // removes most significant digit of n
*2.+1)                     // multiplies 2 and adds 1 to get the odd numerator
/(1<<x+1);}               // divides by the next highest power of 2 and returns`

এটি ফিরিয়ে দেওয়ার পরিবর্তে চূড়ান্ত মানটি প্রিন্ট করা প্রয়োজন হলে সম্পাদনা করবে।


পিপিসিজিতে আপনাকে স্বাগতম, আপনাকে আমাদের সাথে রাখলে ভালো :)
শেগি

হাই, পিপিসিজিতে আপনাকে স্বাগতম! দুর্দান্ত প্রথম উত্তর, আমার কাছ থেকে +1। বর্তমানে এটি আমার জাভা উত্তরের মতো একই বাইট-কাউন্ট, তবে আপনি নিজের উত্তরের চেয়ে ছোট করে তুলতে আপনার উত্তরের কিছু অংশ গল্ফ করতে পারেন: {}লুপের পরে একটি ;পরিবর্তে হতে পারে ; আপনি স্থান পরে মুছে ফেলতে পারেন return; 2.0হতে পারে 2.; আর পরিবর্তন n>>x!=1;x++, 1<<xএবং 1<<x+1থেকে n>>x++!=1;, 1<<x-1, 1<<xযথাক্রমে একটি বাইট পরিমাণ সঞ্চয় হয়। এটি অনলাইনে ব্যবহার করে দেখুন: 64 বাইট । উপভোগকর তোমার থাকা!
কেভিন ক্রুইজসেন

ওহ, এবং যদি আপনি এটি এখনো দেখা যায় না: জাভা golfing জন্য টিপস এবং <সমস্ত ভাষা> এ golfing জন্য টিপস উভয় প্রশংসনীয় মাধ্যমে পড়তে আকর্ষণীয়। :)
কেভিন ক্রুইজসেন

আমার 30 বাইট উত্তর দেখুন, মূলত আপনার উপর ভিত্তি করে কিন্তু গল্ফড এবং গল্ফড এবং গল্ফড।
অলিভিয়ের গ্রাগোয়ার

9

ম্যাথগল্ফ , 5 4 বাইট

╫\╨]

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

অপারেটরটি সঠিকভাবে কাজ করার সাথে এটি কেমন দেখাচ্ছে

╫\)╨]   (")" adds 1 to TOS, making rounding behave as expected)

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

ব্যাখ্যা

╫     Left-rotate all bits in input
 \    Swap top two elements on stack, pushing the input to the top
  ╨   Round up to nearest power of 2
   ]  Wrap in array (just for pretty printing)

সমস্যাটি সমাধান করার জন্য আমি এই প্রশ্নটি থেকে আমার অনুপ্রেরণা নিয়েছি , আমার "নিজস্ব" সমাধানটি আমার মনে হয় 10-12 বাইটের কাছাকাছি ছিল।

আমি 2 এর সংখ্যার হলে নিকটতম শক্তির কাছাকাছি পাওয়ারটি চেয়েছিলাম, তবে একটি ভুলের কারণে এটি দুটি পরবর্তী শক্তিতে গোল করে (যেমন 4 -> 4 এর পরিবর্তে 4 -> 4) )। এটি পরে ঠিক করতে হবে, তবে এখন এটি আমার একটি বাইট সংরক্ষণ করে।


2
আমি ম্যাথগল্ফকে চিনি না তবে যদি ]আউটপুট ফর্ম্যাট করা ব্যতীত অন্য কোনও উদ্দেশ্য কাজ করে তবে আমি বলব আপনাকে এটিকে আপনার বাইট গণনায় অন্তর্ভুক্ত করার দরকার নেই।
শেগি

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

আমার মনে হয় আপনার এটি ছেড়ে দেওয়া উচিত It এটি স্ট্যাকটিকে এক স্ট্রিং হিসাবে আউটপুট করতে কখনও কখনও একটি বাইট সংরক্ষণ করে, কখনও কখনও এটি আপনার বাইট ব্যয় করে।
এইচ.পি.উইজ

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

8

জাভা 10, 89 85 70 69 68 বাইট

v->{for(float j,t=2;;t*=2)for(j=1;j<t;j+=2)System.out.println(j/t);}

@ এমিগমার 05AB1E উত্তরটির পোর্ট , সুতরাং ডেসিমালগুলি অনির্দিষ্টকালের জন্যও আউটপুট দেয়।
-15 বাইটস @ আরনাউল্ডকে ধন্যবাদ ।

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

ব্যাখ্যা:

v->{                      // Method with empty unused parameter and no return-type
  for(float j,t=2;;       //  Loop `t` from 2 upwards indefinitely,
                   t*=2)  //  doubling `t` after every iteration
    for(j=1;j<t;          //   Inner loop `j` in the range [1, `t`),
                j+=2)     //   in steps of 2 (so only the odd numbers)
      System.out.println( //    Print with trailing new-line:
        j/t);}            //     `j` divided by `t`

1
আমি কতবার বলতে পারি যে আমি আপনার বাইট গণনা অর্ধেক? ঠিক আছে, আমি মনে করি এটি প্রথমবার ;-)
অলিভিয়ের গ্রাগোয়ার

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



7

জাভা (জেডিকে 10) , 30 বাইট

n->(n+.5)/n.highestOneBit(n)-1

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

অনুক্রমের n আইটেমটি প্রদান করে।

এই উত্তরটি মূলত টিসিএফপির জাভা উত্তরের গল্ফগুলির উত্তরসূরি । শেষ পর্যন্ত, গল্ফগুলি আর মূল উত্তরটির মতো দেখায় নি (যদিও ব্যবহৃত গণিতটি একই। সুতরাং আপনি যদি এই উত্তরটি পছন্দ করেন তবে টিসিএফপি-র উত্তরটিও ভাল করে দেখুন! ;-)

মধ্যবর্তী গল্ফগুলি ছিল:

n->{int x=0;for(;n>>++x!=1;);return((~(1<<x)&n)*2.+1)/(1<<x+1);} // 64 bytes (TCFP's answer when I started golfing)
n->{int x=0;for(;n>>++x!=1;);x=1<<x;return((~x&n)*2.+1)/x/2;}    // 61 bytes
n->{int x=n.highestOneBit(n);return((~x&n)*2.+1)/x/2;}           // 54 bytes
n->{int x=n.highestOneBit(n);return((~x&n)+.5)/x;}               // 50 bytes
n->((n&~(n=n.highestOneBit(n)))+.5)/n                            // 37 bytes
n->(n-(n=n.highestOneBit(n))+.5)/n                               // 34 bytes
n->(n+.5)/n.highestOneBit(n)-1                                   // 30 bytes, current score

এবং আমি এখানে বসে ভেবেছিলাম আমার উত্তরটি যতটা সংক্ষিপ্তভাবে তৈরি করতে পারলাম, আপনি এগিয়ে এসে অর্ধেকেরও বেশি কেটে ফেলুন! আশ্চর্যজনক স্টাফ, অবশ্যই আমার কাছ থেকে একটি +1 প্রাপ্য।
টিসিএফপি

@ টিটিএফপি এটি কয়েক ঘন্টার ব্যবধানে একটি পুনরাবৃত্তি প্রক্রিয়া ছিল। আমি আপনার উত্তরের মন্তব্য হিসাবে প্রতিটি মধ্যবর্তী গল্ফিং প্রকৃতপক্ষে পোস্ট করেছি, তবে আমি আরও ভাল গল্ফ খুঁজে পেয়ে সেগুলি মুছে ফেলেছি। প্রশংসার জন্য ধন্যবাদ ;-)
অলিভিয়ার গ্রাগোয়ার

6

05 এ বি 1 ই , 11 8 বাইট

কেভিন ক্রুইজসেনকে 3 বাইট সংরক্ষণ করা হয়েছে

∞oDÅÉs/˜

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

ব্যাখ্যা

∞         # start an infinite list [1...
 o        # calculate 2**N
  D       # duplicate
   ÅÉ     # get a list of odd numbers up to 2**N
     s/   # divide each by 2**N
       ˜  # flatten

1
-1 বাইট ব্যবহার করে (1 থেকে শুরু করে অসীম তালিকা):∞oεDÅÉs/}˜
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন: দুর্দান্ত! এটি এমন আদেশ ছিল যা আমি আগে দেখিনি। ধন্যবাদ :)
Emigna

1
প্রকৃত ম্যাপিংয়ের কারণে আহ, এবং আরও দুটি বাইট সংরক্ষণের দুর্দান্ত উপায় .. এটি সম্পর্কেও ভাবেননি, হ্যাঁ
কেভিন ক্রুইজসেন

1
: ও কীভাবে এটা সম্ভব। আপনি page 2 পৃষ্ঠার প্রশ্নটি 8 টি বাইটে কনডেন্স করেছেন।
কুল্লব

আমি মূল সংখ্যা এবং একটি তালিকা ব্যবহার করে ভাবছিলাম [1,2,4,4,8,8,8,8,16,16,...,2**n]এবং এর পরে সঠিক সূচিযুক্ত প্রাইম সরবরাহ করেছিলাম /... তবে এটি এতটা ভাল কাজ করে না। ভাল, কিন্তু 8-bytesভাল না । কিছু একটা 9LoDÅP)ζ
ম্যাজিক অক্টোপাস উরন


5

পাওয়ারশেল , 40 বাইট

for($i=2;;$i*=2){1..$i|?{$_%2}|%{$_/$i}}

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

দশমিক মান হিসাবে অসীম ক্রম আউটপুট দেয়। ভাষার সীমাবদ্ধতা দেওয়া, অবশেষে নির্ভুল সমস্যার মধ্যে চলে যাবে তবে সহজেই প্রথম 1000 এন্ট্রি পরিচালনা করে।

সেট করে শুরু হয় $i=2, তারপরে একটি forলুপে প্রবেশ করে । প্রতিটি পুনরাবৃত্তি, আমরা 1..$iবিজোড় মানগুলি থেকে একটি পরিসীমা তৈরি করি এবং এর সাথে বের করি |?{$_%2}। এগুলি তাদের নিজস্ব অভ্যন্তরীণ লুপে খাওয়ানো হয়, যেখানে আমরা দশমিক পেতে প্রতিটি ভাগ করি |%{$_/$i}। এগুলি পাইপলাইন এবং আউটপুট ছেড়ে যায় যখন প্রতিটি forপুনরাবৃত্তির পরে পাইপলাইন ফ্লাশ করা হয় । প্রতিটি পুনরাবৃত্তির কেবলমাত্র আমরা বৃদ্ধিশীল করছি $iদ্বারা $i*=2পরের যেতে বৃত্তাকার জন্য।


5

হাস্কেল, 35 32 বাইট

সম্পাদনা করুন: -৩ বাইটস @ ডেল্ফ্যাড0 আরকে ধন্যবাদ।

[(y,2^x)|x<-[1..],y<-[1,3..2^x]]

এটি পূর্ণসংখ্যা জোড়াগুলির একটি অসীম তালিকা।

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


5

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

s=(1,2):[(i*2+u,j*2)|(i,j)<-s,u<-[-1,1]]

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

সংখ্যার পূর্ণসংখ্যার হিসাবে অসীম ক্রম (শুরু থেকে (1,2))।

@ নিমির উত্তরের চেয়ে বেশ খানিকটা লম্বা , তবে পদ্ধতিটি সম্পূর্ণ আলাদা, তাই আমি যাইহোক এটি পোস্ট করার সিদ্ধান্ত নিয়েছি।

এই সমাধানটি নিম্নলিখিত পর্যবেক্ষণের ভিত্তিতে তৈরি।

{12,14,34,18,38,58,78,116,316,}

  • ij{2i12j,2i+12j}
    {{14,34},{18,38},{58,78},{116,316},}
  • {14,34,18,38,58,78,116,316,}
  • 12
    {12,14,34,18,38,58,78,116,316,}

আপনি যে অনুক্রমটি দিয়ে শুরু করেছিলেন সেটি কীভাবে ফিরে পাবেন তা লক্ষ্য করুন!

সিক্যুয়েন্সটি গণনা করার জন্য সমাধানটি এই সত্যটিকে (হাস্কেলের অলসতার সাথে একত্রে) কাজে লাগায় s


4

পাইথন 2 - 68 66 বাইট

-২ বাইট কেভিনকে ধন্যবাদ

from math import*
def g(n):a=2**floor(log(n,2));print(n-a)*2+1,2*a

অনলাইনে চেষ্টা করে দেখুন!


আপনি পরিবর্তন করে গলফ 1 বাইট করতে পারেন return 2*(n-a)থেকে return(n-a)*2। এবং আপনি পাইথন 2 ব্যবহার করে 3 এর পরিবর্তে একটি অতিরিক্ত বাইট সংরক্ষণ returnকরতে পারেন , তাই print(প্যারেন্টেসিস সহ) হতে পারে ।
কেভিন ক্রুইজসেন

2
@ কেভিন ক্রুজসেন যে কেউ পাইথন ব্যবহার করেন না তার পক্ষে আপনি আমার চেয়ে অবশ্যই পাইথন প্রোগ্রামার।
ডন হাজার হাজার

হে হে। : ডি সাধারণ জিনিসগুলি অনুমান সহ অভিজ্ঞতার সাথে আসে। আমি প্রায় দুই বছর এই সাইটে রয়েছি এখন আমার মনে হয় (সম্পাদনা: এপ্রিল 2016 থেকে) আমি কখনও কখনও এমন উত্তরগুলির জন্য গল্ফকে এমন জিনিসগুলির পরামর্শও দিয়ে থাকি যা আমি আগে কখনও দেখিনি এমন ভাষাগুলিতে লেখা হয় .. কিছু প্রাথমিক জিনিস বেশিরভাগ ভাষায় কাজ করে। উদাহরণস্বরূপ, গত সপ্তাহে আমি টি-এসকিউএল উত্তরের জন্য একটি গল্ফের পরামর্শ দিয়েছিলাম এবং আমি একবার লাল উত্তরে একটি গল্ফের পরামর্শ দিয়েছিলাম । এক্সডি
কেভিন ক্রুইজসেন

2
44 বাইট ব্যবহার lenএবং binপরিবর্তে log
ovs


4

পাইথন 3 , 53 51 বাইট

def f(m=2,n=1):n<m and print(n/m)&f(m,2+n)or f(m+m)

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


2 বাইট সংরক্ষণের জন্য প্যারামিটারগুলি অদলবদল করুন:def f(m=2,n=1):n<m and print(n/m)&f(m,n+2)or f(m+m)
মাইপটেলিয়ন

1
@ মাইপিটলিয়ন কুল, ধন্যবাদ!
জোনাথন ফ্রেচ 14'18



3

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

BnWGEy-Q

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

সংখ্যক, তারপরে ডিনোমিনেটর প্রদান করে। এটি আমার আর উত্তর হিসাবে একই পদ্ধতি ব্যবহার করে , যদিও এটি কিছুটা বেশি দক্ষ।

ইনপুট সহ ব্যাখ্যা 5:

           # implicit input 5
B          # convert to array of bits
           # STACK: [[1 0 1]]
n          # length (place of Most Significant Bit)
           # STACK: [3]
W          # elementwise raise 2^x
           # STACK: [8]
G          # paste input
           # STACK: [8, 5]
E          # double
           # STACK: [8, 10]
y          # copy from below
           # STACK: [8, 10, 8]
-          # subtract
           # STACK: [8, 2]
Q          # increment
           # STACK: [8, 3]
           # implicit end of program, display stack contents

2

শেক্সপিয়ার প্রোগ্রামিং ল্যাঙ্গুয়েজ , 426 বাইট

,.Ajax,.Ford,.Act I:.Scene I:.[Exeunt][Enter Ajax and Ford]Ajax:You be the sum ofyou a cat.Ford:You cat.Scene V:.Ford:Is twice you nicer I?If solet usScene X.You be twice you.Let usScene V.Scene X:.Ford:Remember twice you.You be the sum oftwice the remainder of the quotient betweenI you a cat.Open heart.You big big big big big cat.Speak thy.Recall.Open heart.You be twice the sum ofa cat a big big cat.Speak thy.Let usAct I.

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

উভয় সংখ্যা একটি স্পেস দ্বারা পৃথক করা হিসাবে প্রতিটি আইটেম একটি নতুন লাইন দ্বারা পৃথক করা হয় হিসাবে অসীম ক্রম আউটপুট।


এটা ভাল। ললYou be twice the sum of a cat
কুলুব

আসলে, এটি "বড় বিড়ালের যোগফলের দ্বিগুণ" (কোনও কারণে 10) 10
জোশিহায়ারানওয়ান

2

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

def f(n):m=2**len(bin(n))/4;return 2*n-m+1,m

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

ফাংশনটি একটি সংখ্যার (সংখ্যক, ডিনোমিনেটর) প্রদান করে। 0 এর ইনপুট পরিচালনা করা হয় না (এটি alচ্ছিক ছিল) was


1
return 2*n-m+1,mprint-~n+n-m,m2 বাইট সংরক্ষণ করতে পারে ।
কেভিন ক্রুইজসেন

2

এক্সেল 48 28 বাইট

টিশকে ধন্যবাদ 20 বাইট (!) সংরক্ষণ করা হয়েছে

=(A1+0.5)/2^INT(LOG(A1,2))-1

= MOD এর (ক 1 + + 0.5,2 ^ (int (লগ (A1,2)))) / 2 ^ INT (লগ (A1,2))

A1 এর মান ধরে, আউটপুট দশমিক হয়। আপনি যদি আউটপুটটিকে ভগ্নাংশে রাখতে চান তবে আপনি আউটপুট সেলটির জন্য "0 / ### 0" হিসাবে একটি কাস্টম ফর্ম্যাট তৈরি করতে পারেন এবং এটি এটি ভগ্নাংশ হিসাবে দেখায়।

ব্যাখ্যা: ব্যাখ্যা করতে অসুবিধা, যেহেতু এই সূত্রটিতে যাওয়ার জন্য একটি শর্টকাট নেওয়া হয়েছে। মূলত অঙ্কটি ইনপুটটির কিছুটা শিফট বাম, এবং ডিনোমিনেটর সংখ্যার ইনপুট থেকে 2 উচ্চতর পরবর্তী শক্তি।

আমি প্রথমে বিটলশিফ্ট এবং বিট্রাশিফ্টের জন্য ফাংশনগুলিতে নির্মিত এক্সেল দিয়ে শুরু করেছি, তবে তারা 48 টি বিট স্থানান্তর করবে যা আপনি চান না। DEC2BIN (এবং BIN2DEC) ফাংশনগুলির সীমা -512 থেকে 511 (10 বিট) রয়েছে তাই এটি কাজ করবে না। পরিবর্তে আমাকে মূল সংখ্যার মডুলাস দিয়ে সংখ্যাটি পুনরায় তৈরি করতে হয়েছিল, তারপরে দু'বার, তারপরে 1 যুক্ত করুন (যেহেতু বাম সংখ্যাটি শিফটের আগে সর্বদা 1 হবে)।

=MOD(A1                        Use MOD for finding what the right digits are
       +0.5                    this will later add the left "1" to the right digits
           ,2^INT(LOG(A1,2)))) Take Log base 2 number of digits on the right
                               this creates the numerator divided by 2 (explained later)
/ 2^INT(LOG(A1,2))             The denominator should be 2^ (Log2 + 1) but instead of 
                               adding a 1 here, we cause the numerator to be divided by 2 instead
                               This gives us a fraction.  In the numerator, we also added .5
                               instead of 1 so that we wouldn't need to divide it in both the
                               numerator and denominator
Then tsh showed how I could take the int/log out of the mod and remove it from numerator/denominator. 

উদাহরণ: এখানে চিত্র বর্ণনা লিখুন


কি হবে =(A1+0.5)/2^INT(LOG(A1,2))-1?
tsh

2

সি ++, 97 75 71 বাইট

-26 বাইট ধন্যবাদ tsh, সিলিংক্যাট, জাকারি

float f(int i){float d=2,n=1;while(--i)n=d-n==1?d*=2,1:n+2;return n/d;}

পরীক্ষার কোড:

std::cout << "1\t:\t" << f(1) << '\n';
std::cout << "2\t:\t" << f(2) << '\n';
std::cout << "3\t:\t" << f(3) << '\n';
std::cout << "4\t:\t" << f(4) << '\n';
std::cout << "10\t:\t" << f(10) << '\n';
std::cout << "100\t:\t" << f(100) << '\n';
std::cout << "511\t:\t" << f(511) << '\n';
std::cout << "512\t:\t" << f(512) << '\n';

আপনি কেবল বাদ দিতে পারেন if(!i)return 0;যেহেতু চ্যালেঞ্জে 0 প্রয়োজন হয় না।
tsh

1
গল্ফ সি-জাতীয় ভাষার চেষ্টা করার সময়। আপনার ব্যবহার এড়ানো উচিত whileকিন্তু চেষ্টা করা উচিত forfor(;exp;)হিসাবে সমান while(exp)তবে আপনি এটিতে আরও দুটি বিবৃতি লিখতে পারেন। এর ?:পরিবর্তে পছন্দ করুন if else, যা বেশিরভাগ ক্ষেত্রে সংক্ষিপ্ত হবে।
tsh

1
আমি মনে করি না আপনার (...)চারপাশের দরকার d-n-1
জাকারি






1

> <> , 19 18 বাইট

জো কিং দ্বারা নির্ধারিত এক্সনোরের ধারণাটি ব্যবহার করে , -1 মিররগুলির আরও ভাল ব্যবহার করে বাইট এবং জো কিং দ্বারা আরও একটি -2 বাইট কারণ এটি !অতিমাত্রায় ছিল এবং ;এটি প্রয়োজনীয় নয়।

2*1+\1-n
2:,2/?(

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


এটি পরীক্ষা করা উচিত যে এটি প্রথম 2 এর চেয়ে কম ছোট, অন্যথায় প্রথম উপাদানটি -0.25একই পরিমাণ বাইটের জন্য ঠিক করুন
জো কিং

ধন্যবাদ! আমি আয়নাগুলি আবার ব্যবহার করে অন্য একটি বাইট অপসারণ করতে সক্ষম হয়েছি।
পিজেইউজেডগাস্ট

আপনি শর্তটি উল্টে দিলেন কেন? 16 বাইট
জো কিং

এটি লুপটি চালিয়ে যাবে তা লক্ষ্য করেননি। আমাদের কি সঠিকভাবে শেষ না করার অনুমতি দেওয়া হচ্ছে?
পিজেইউজেডগাস্ট

হ্যাঁ, কোনও ত্রুটি দিয়ে সমাপ্তি ঠিক আছে যতক্ষণ না ওপি অন্যথায় নির্দিষ্ট করে না
জো কিং


1

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

1-⍨.5∘+÷2*∘⌊2⍟⊢

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

নামবিহীন উপসর্গ লাম্বদা।

4 বাইটের জন্য অ্যাডম এবং 2 বাইটের জন্য গাভীটিকে ধন্যবাদ জানাই।

কিভাবে:

1-⍨.5∘+÷2*∘⌊2⍟⊢  Anonymous lambda, argument   10
            2⍟⊢  Log (⍟) of  in base 2. 210  3.32192809489...
                 Floor. 3.32192809489...  3
        2*∘       Take that power of 2. 2³  8
       ÷          Use that as denominator
   .5∘+            + 0.5  10.5. Using that as numerator: 10.5÷8  1.3125
1-⍨               Swap the arguments (⍨), then subtract. 1-⍨1.3125  1.3125-1  0.3125

1

সি # (.নেট কোর) , 69 বাইট

a=>{int b=1,c=2;while(a-->1){b+=2;if(b>c){b=1;c*=2;}}return b+"/"+c;}

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

Ungolfed:

a=> {
    int b = 1, c = 2;   // initialize numerator (b) and denominator (c)
    while (a-- > 1)     // while a decrements to 1
    {
        b += 2;         // add 2 to b
        if (b > c)      // if b is greater than c:
        {
            b = 1;      // reset numerator to 1
            c *= 2;     // double denominator
        }
    }
    return b + "/" + c; // return fraction as string
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.