আমি চাই আমার বইটি এই টেবিল থেকে দূরে থাকুক


21

গল্প

সুতরাং আমার কাছে একটি বই আছে যা আমি আমার টেবিল থেকে অন্য বই ছাড়া কিছুই বাদ দিতে চাই। বইয়ের দৈর্ঘ্য সহ এটি অর্জনের জন্য আমার কতগুলি বইয়ের প্রয়োজন তা জানতে চাই ।এন

ওল্ফ্রামের আমার বন্ধুটি আমার জন্য আকর্ষণীয় একটি দৃশ্য এখানে রইল:

ওল্ফ্রামের একটি দৃশ্য

ওল্ফ্রাম এবং উইকিপিডিয়ায় বিষয় সম্পর্কে আরও তথ্য ।

চ্যালেঞ্জ

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

মিএন

Σআমি=1মি12আমিএন

সম্পাদনা করুন: ভগ্নাংশের জন্য কমপক্ষে আইইইই একক-নির্ভুলতা ভাসমান পয়েন্ট ব্যবহার করুন। পোস্ট করার পরে চ্যালেঞ্জ সম্পাদনার জন্য দুঃখিত

( OEIS A014537 )

পরীক্ষার মামলা

 1          4
 2         31
 3        227
 5      12367
10  272400600


এটি কি বইয়ের এই বিশেষ বিন্যাসটি ব্যবহার করতে হবে , যা আইআইআরসি অনুকূল নয়?
ব্যবহারকারী 253751

উত্তর:


13

অক্টাভা , 41 40 33 বাইট

@ ডেনিসকে ধন্যবাদ 1 বাইট সংরক্ষিত

@(n)find(cumsum(.5./(1:9^n))>n,1)

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

ব্যাখ্যা

এটি এই সত্যটি ব্যবহার করে যে সুরযুক্ত সংখ্যাগুলি লোগারিথমিক ফাংশন দ্বারা নিম্ন-সীমাবদ্ধ হতে পারে।

এছাড়াও, >=তুলনাটি প্রতিস্থাপন করা যেতে পারে >কারণ সুরেলা সংখ্যা এমনকি পূর্ণসংখ্যা হতে পারে না (ধন্যবাদ, @ ডেনিস!)

@(n)                                   % Anonymous function of n
                     1:9^n             % Range [1 2 ... 9^n]
                .5./(     )            % Divide .5 by each entry
         cumsum(           )           % Cumulative sum
                            >n         % Is each entry greater than n?
    find(                     ,1)      % Index of first true entry


10

কাস্তে , 8 বাইট

V≥⁰∫m\İ0

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

যেহেতু হুস্ক যখন যুক্তিযুক্ত সংখ্যাগুলি ব্যবহার করে তখন এটি ব্যবহার করে, এর কোনও ভাসমান বিষয় নেই

ব্যাখ্যা

      İ0    The infinite list of positive even numbers
    m\      Reciprocate each
   ∫        Get the cumulative sum
V           Find the index of the first element
 ≥⁰         that is greater than or equal to the input

8 বাইট, কিন্তু কোন চরসেটে?
john16384

3
@ john16384 তুষ এটা নিজস্ব হয়েছে codepage একটি একক বাইট যেখানে প্রতিটি প্রতীক অনুরূপ। এখানে সম্পর্কিত হেক্সডাম্প
এইচ.পি.উইজ





3

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

n=>eval("for(i=0;n>0;n-=.5/i)++i")

Ungolfed

n => {
    for(i = 0; n > 0; ++i)
        n -= .5 / i
    return i;
}

পরীক্ষার মামলা


30 বাইটের জন্য পুনরাবৃত্তি ব্যবহার করে অনুরূপ সমাধান নিয়ে এসেছিলেন। আপনার দেখার পরে ডুনো এটি পোস্ট করুন বা না করুন।
শেগি

1
আমি কিছু মিস করছি, তবে আপনাকে কেন এটি evalবিবৃতিতে গুটিয়ে রাখতে হবে ?
২২ শে

1
@cairdcoinherigaahing ছাড়া পরিবর্তনশীল করা প্রয়োজন হবে , শেষে ed আরো কয়েকটি বাইটের খরচে। evalireturn
শেগি


2

হাস্কেল, 71 49 48 বাইট

f x=length.fst.span(<x).scanl(+)0$(0.5/)<$>[1..]

@ বিএমও আমাকে পুরো 22 টি বাইট সংরক্ষণ করেছে!



2

টিআই-বেসিক, 27 বাইট

ব্যবহারকারীকে ইনপুট দেওয়ার জন্য অনুরোধ করে এবং সমাপ্তির সময় আউটপুট প্রদর্শন করে। নোট: ⁻¹নয় -1 (বিপরীত) টোকেন।

Input N
1
Repeat 2N≤Σ(I⁻¹,I,1,Ans
Ans+1
End
Ans

2
আপনি সংরক্ষণ করতে যাচ্ছেন এমন Ansমধ্যে Nঅবিলম্বে, তারপর Input Nবা Prompt Nএকটি ইনপুট পদ্ধতির তোমাদের উপর এক বাইট সংরক্ষণ করে Ans→N। আর Mদ্বারা প্রতিস্থাপিত হতে পারে Ans, যাতে 1→Mহয়ে 1এবং M+1→Mহয়ে Ans+1। (কিন্তু আমি একটি আউটপুট সম্পর্কে সন্দিহান আছি Ansপ্রদর্শিত পেতে এই নয় যে - দেখুন এই - তাই হয়তো দিয়ে শেষ :Ansউপযুক্ত। তারপর মূল্যের "সম্পন্ন" জায়গা দেখানো হবে না)
মিশা লাভরভ

ধন্যবাদ! আমি জানতাম Ans→Nমজার কথা। ভাল অপ্টিমাইজেশন। কেবল নিরাপদ থাকার জন্য আউটপুট সম্পর্কে আপনার পরামর্শও নিয়েছে। এখনও নেট -3 বাইট নিয়ে আসে: ডি
কামোরসো94



1

জাপট , 12 বাইট

পুনরাবৃত্তির বিকল্প হিসাবে একই দৈর্ঘ্য, তবে তুলনায় সামান্য বেশি দক্ষ।

@T¨(Uµ½÷X}a1

চেষ্টা করে দেখুন


ব্যাখ্যা

@T¨(Uµ½÷X}a1
                 :Implicit input of integer U
@        }a1     :Return the first number X >=1 that returns truthy when passed through the following function
 T               :Zero
  ¨              :Greater than or equal to
    Uµ           :Decrement U by...
      ½÷X        :0.5 divided by X

1

জে, 22 বাইট

-6 বাইট ধন্যবাদ frownyfrog ধন্যবাদ

I.~0+/\@,1%2*1+[:i.9&^

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

মূল উত্তর

জে লুইসের উত্তর:

1+]i.~[:<.[:+/\1%2*1+[:i.9&^

Ungolfed

1 + ] i.~ [: <. [: +/\ 1 % 2 * 1 + [: i. 9&^

এটি একেবারে উন্নত করা যায় কিনা তা দেখার জন্য বেশিরভাগ কৌতূহল ( কাশির পেজিং মাইল)

ব্যাখ্যা

1 +      NB. 1 plus... 
] i.~    NB. find the index of the arg in...
[: <.    NB. the floor of...
[: +/\   NB. the sumscan of...
1 %      NB. the reciprical of...
2 *      NB. two times...
1 +      NB. 1 plus...
[: i.    NB.  the integers up to 
9&^      NB. 9 raised to the power of the arg

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


1+]i.~[:<.-> 1+]I.~->I.~0,
ফ্রাউনফ্রগ

Ofc! ধন্যবাদ frownyfrog
জোনা

এবং তারপরেI.~0+/\@,
ফ্রাউনফ্রোগ

আপনি যদি সম্পাদনা করেন তবে আপনি জুলিয়াকে পরাজিত করবেন :)
ফ্রাউনফ্রগ

@ ফ্রাউনফ্র্যাগ, সম্পন্ন আপনার যদি কিছুটা সময় থাকে তবে আমি আপনাকে এটির সমাধান করতে আগ্রহী: কোডগল্ফ.স্ট্যাকেক্সচেঞ্জ প্রশ্নগুলি 154345 ব্র্যাককেট- এক্সপেনশন । সব সমাধান আমি ভাল বিবেক পোস্ট করতে খুব বাগাড়ম্বরপূর্ণ হয় মনে করতে পারেন ...
ইউনুস

0

পিএইচপি, 35 বাইট

while($argv[1]>$s+=.5/++$i);echo$i;

সিএলআই ব্যবহার করে এটি চালান:

$ php -d error_reporting=0 -r 'while($argv[1]>$s+=.5/++$i);echo$i;' 5


0

জাভা 8, 49 বাইট

n->{float r=0,s=0;for(;s<n;)s+=.5f/++r;return r;}

ব্যাখ্যা:

এটি অনলাইনে চেষ্টা করুন। (উপরের পরীক্ষার মামলার জন্য টাইমস আউট n=7।)

n->{             // Method with integer parameter and float return-type
  float r=0,     //  Result-float, starting at 0
        s=0;     //  Sum-float, starting at 0
  for(;s<n;)     //  Loop as long as the sum is smaller than the input
    s+=.5f/++r;  //   Increase the sum by `0.5/(r+1)`,
                 //   by first increasing `r` by 1 with `r++`
  return r;}     //  Return the result-float

0

টিনাইলিস্প , 98 বাইট

(load library
(d _(q((k # N D)(i(l N(* D # 2))(_(inc k)#(+(* N k)D)(* D k))(dec k
(q((#)(_ 1 # 0 1

শেষ লাইনটি একটি নামবিহীন ল্যাম্বদা ফাংশন যা বইয়ের দৈর্ঘ্যের সংখ্যা নেয় এবং প্রয়োজনীয় বইয়ের সংখ্যাটি দেয়। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

টিনাইলিস্পের একমাত্র সংখ্যা সংক্রান্ত ডেটা টাইপটি পূর্ণসংখ্যা হয়, তাই আমরা সংখ্যার এবং ডিনোমিনেটরের খোঁজ রেখে হারমোনিক সিরিজটিকে ভগ্নাংশ হিসাবে গণনা করি। প্রতিটি পদক্ষেপে,N , লব হয় Dহর, এবং kসমষ্টি সূচি। আমরা চাই নতুন আংশিক যোগফল হোক N/D + 1/kবা (N*k + D)/(D*k)। সুতরাং, আমরা একটি নতুন সংখ্যার N*K + D, একটি নতুন বিভাজন D*kএবং এর একটি নতুন সূচক দিয়ে পুনরাবৃত্তি করিk+1

আংশিক যোগফল #বইয়ের দৈর্ঘ্যের চেয়ে বেশি বা তার সমান হয়ে গেলে পুনরাবৃত্তিটি থামতে হবে । এই মুহুর্তে, আমরা একটি বই খুব বেশি এগিয়ে গিয়েছি, তাই আমরা ফিরে আসছি k-1। শর্তটি 1/2 * N/D < #; ডিনোমিনেটরকে গুণ করে, আমরা এটি পাই N < D*#*2, এটি এটি লেখার সবচেয়ে গল্ফিয়তম উপায়।

পুনরাবৃত্ত হেল্পার ফাংশন _এই সমস্ত গণনা করে; প্রধান ফাংশন নিছক একটি এক যুক্তি মোড়কের যে কল _সঠিক শুরুর মান জন্য k, NএবংD

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