হারমোনিক সিকোয়েন্সের আংশিক যোগফল!


13

সংজ্ঞা

গণিতে, হারমোনিক সিকোয়েন্সটি যেখানে একটি অনুক্রম বোঝায়

হারমোনিক সিকোয়েন্স সমীকরণ

অর্থাত এন ক্রম মেয়াদের পারস্পরিক সমান এন


ভূমিকা

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


ইনপুট

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

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


আউটপুট

আপনার প্রোগ্রামে হরমোনিক সিকোয়েন্সের প্রথম এন পদগুলির যোগফলকে একটি ফ্লোট হিসাবে আউটপুট করা উচিত (বা আউটপুট সমানভাবে 1 দ্বারা বিভাজ্য হয়) 5 টি উল্লেখযোগ্য পরিসংখ্যানের নির্ভুলতার সাথে, যেখানে এন ইনপুটকে বোঝায়। গাণিতিক জারগনে একই বোঝাতে আপনার গণনা করা দরকার

প্রথম এন পদগুলির হারমোনিক সিকোয়েন্সের আংশিক যোগফল

যেখানে এন ইনপুট বোঝায়।

ভেরিয়েবলের আউটপুট লেখার ব্যতীত আপনি যে কোনও উপায়ে আউটপুট করতে পারেন। স্ক্রিন, টার্মিনাল, ফাইল, মডেল উইন্ডোতে ( alert()জাভাস্ক্রিপ্টে) ইত্যাদি লেখার অনুমতি রয়েছে। ফাংশন returnমান হিসাবে আউটপুটিং এছাড়াও অনুমোদিত।


অতিরিক্ত বিধি


পরীক্ষার কেস

টেস্ট কেসগুলি ইনপুটটিকে 1-সূচকযুক্ত বলে ধরে নেয়

Input     Output
1         1
2         1.5
3         1.8333
4         2.0833
5         2.2833

বিজয়ী মানদণ্ড

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী!


আপনি কিছু টেস্টকেস দিতে পারেন?
ব্যবহারকারী 41805

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

2
@ অর্জুন হারমোনিক সিরিজটি অসীমের দিকে বেড়ে যায় তাই সংখ্যাটি দশ হাজার দশকের সাথে মিলিত হওয়া শক্ত হয়ে উঠবে কারণ সংখ্যাটি হাজারে ও লক্ষ লক্ষ হয়ে যায়। আমি দশমিক জায়গাগুলির চেয়ে উল্লেখযোগ্য পরিসংখ্যানগুলিতে যাব এবং আমি দেখতে এতটা নির্ভুল হওয়ার দরকার নেই। 5 উল্লেখযোগ্য পরিসংখ্যান যথেষ্ট হতে হবে। তাই 9.9999E10বদলে99999999999.9999999999
শ্রেনী নদী সেন্ট

আমরা কি 5 টি গুরুত্বপূর্ণ ব্যক্তির উপরে যেতে পারি?
এরিক আউটগল্ফার

যাইহোক, এটি পরিচিত যে সুরেলা অনুক্রমের প্রাথমিক a_1 = 1 ব্যতীত অন্য কোনও পূর্ণসংখ্যা থাকে না proof n; তারপরে 2 ^ কে ভাগ করে a_n।)
গ্রেগ মার্টিন

উত্তর:



9

পাইথন 3, 27 বাইট

h=lambda n:n and 1/n+h(n-1)

0-ইনডেক্সিং বা 1-ইনডেক্সিং?
অর্জুন

2
RuntimeErrorডিফল্ট হিসাবে 1000 পুনরাবৃত্তির সীমা চেয়ে বেশি ইনপুট পরিচালনা করার সময় ছুড়ে ফেলে ।
sagiksp

আপনি করতে পারেন sys.setrecursionlimit(473755252663)তবে স্ট্যাকটি শেষ পর্যন্ত বেশ সহজেই উপচে পড়বে
বিড়াল

@ অর্জুন এটি 1-
সূচকযুক্ত

8

জাভাস্ক্রিপ্ট, 19 18 বাইট

@ রিকহিচককে ধন্যবাদ 1 বাইট সংরক্ষিত হয়েছে

f=a=>a&&1/a+f(--a)

এটি 1-সূচকযুক্ত।

f=a=>a&&1/a+f(--a)

for(i=0;++i<10;)console.log(f(i))


অন্যান্য পোস্টে আমি যা দেখেছি তা থেকে আপনি f=2 বাইট সংরক্ষণ করার জন্য আপনার উত্তরটি সরিয়ে ফেলতে পারেন ।
রিক হিচকক

1
@ রিকহিচকক আমি মুছে ফেলতে পারি না f=কারণ ফাংশনটি পুনরাবৃত্তি হয় এবং এটি নিজেই এতে উল্লেখ করে f(--a)। তবে এটি যদি পুনরাবৃত্তির সমাধান না হয় তবে আমি তা করতে সক্ষম
হয়েছি

আহ, বোধ হয়! সাথে একটি বাইট সংরক্ষণ করুন f=a=>a&&1/a+f(--a)
রিক হিচকক

পছন্দ করুন
ব্যবহারকারী 41805

6

এপিএল (ডায়ালগ) , 5 বাইট

+/÷∘⍳

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

⎕PP←{number}যথার্থটি পরিবর্তন করতে আপনি শিরোনামে যুক্ত করতে পারেন {number}

এটি 1-সূচকযুক্ত।

ব্যাখ্যা

+/÷∘⍳                     Right argument; n
                         Range; 1 2 ... n
  ÷                       Reciprocal; 1/1 1/2 ... 1/n
+/                        Sum; 1/1 + 1/2 + ... + 1/n

6

গণিত, 21 20 16 বাইট

এই দ্রবণটি 1-সূচকযুক্ত।

Sum[1./i,{i,#}]&

এটি 1-ইনডেক্সিং
J42161217

1
> আপনাকে অবশ্যই প্রথম এন উপাদানগুলির আংশিক যোগফল গণনা করার জন্য বিল্ট-ইন ব্যবহার করা উচিত নয়। (হ্যাঁ, এটি আপনার জন্য ম্যাথেমেটিকা!)
এমসিসিএস

4
ওপি মানে আমি হারমনিক নাম্বার ব্যবহার করতে পারি না [#] &
নাম্বার

4
এবং একটি আরও সংক্ষিপ্ত করতে পারেন Tr[1./Range@#]&
গ্রেগ মার্টিন

2
@Ian ম্যাথামেটিকাল পারে প্রদর্শন 5 স্বাক্ষর ডুমুর, কিন্তু ফাংশন আয় মেশিন-স্পষ্টতা সংখ্যা (52 বাইনারি বিট বা স্পষ্টতা 16 শুধু অধীন দশমিক সংখ্যার)
LLlAMnYP




5

জাপট -x , 8 6 5 3 বাইট

õpJ

ইটিএইচ প্রডাকশনগুলিতে কিছু ধন্যবাদ সহ

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


0-ইনডেক্সিং বা 1-ইনডেক্সিং?
অর্জুন

আমি মনে করি আপনি এই বাইটটি সংরক্ষণ করতে পারেনõ x@1/X
ETH প্রোডাকশনগুলি

... এবং আরেকটি দম্পতি বাইটস :-) এর XpJপরিবর্তে ব্যবহার করে1/X
ETH প্রোডাকশনগুলি

ধন্যবাদ, @ ইথ প্রডাকশনস :) আমি চলে যাওয়ার সাথে সাথে আমি সেগুলিকে দু'দিকে টেনে এনেছি।
শেগি

আসলে আমি মনে করি না এমনকি _অটো-ফাংশনগুলির কারণে আপনারও প্রয়োজন । আমার এই টিপটি সত্যই লিখতে হবে: পি (স্মৃতি দিবস হওয়ার কারণে আমার আজ বা কাল সময় হওয়া উচিত)
ETH প্রোডাকশনগুলি

4

সিজেম , 11 10 বাইট

1 বাইট অপসারণ করা এরিক ধন্যবাদ

ri),{W#+}*

এটি 1-ভিত্তিক সূচক ব্যবহার করে।

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

ব্যাখ্যা

ri            e# Read integer, n
  )           e# Increment by 1: gives n+1
   ,          e# Range: gives [0 1 2 ... n]
    {   }*    e# Fold this block over the array
     W#       e# Inverse of a number
       +      e# Add two numbers

আপনি Wপরিবর্তে ব্যবহার করতে পারেন -1
এরিক আউটগল্ফার

@ এরিকথ আউটগল্ফার নিজেকে ছাড়িয়ে গেছে :-)
লুইস মেন্ডো

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

@ এরিক এটি রসিকতা হিসাবে বোঝানো হয়েছিল সহায়তার জন্য ধন্যবাদ
লুইস মেন্ডো



3

Tcl 38 বাইট

proc h x {expr $x?1./($x)+\[h $x-1]:0}

এটি একটি খুব নোংরা হ্যাক এবং পুনরাবৃত্ত কলগুলি "5-1-1-1 ..." এর মতো আক্ষরিক স্ট্রিংগুলি পাস করে যতক্ষণ না এটি 0 পর্যালোচনা করে।


ফর্ম্যাটিংয়ের জন্য @ খ্রিস্টোফারকে ধন্যবাদ। এটির সাথে, ব্যাকস্ল্যাশের সদৃশটির আর প্রয়োজন ছিল না।
avl42

সমস্যা নেই! এটি আরও ভাল দেখাচ্ছে
খ্রিস্টোফার


2

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

:l_^s

এই সমাধানটি 1-ভিত্তিক সূচক ব্যবহার করে।

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

ব্যাখ্যা

    % Implicitly grab input (N)
:   % Create an array from [1...N]
l_^ % Raise all elements to the -1 power (take the inverse of each)
s   % Sum all values in the array and implicitly display the result

2

অ্যাক্সিয়াম, 45 34 বাইট

f(x:PI):Any==sum(1./n,n=1..x)::Any

1-সূচিবদ্ধ; এটিতে একটি ইতিবাচক পূর্ণসংখ্যা (পিআই) রয়েছে এবং সিসগুলি পরবর্তী ফাংশন আর্গের জন্য দরকারী ধরণের রূপান্তর করে (বা রূপান্তর না করে) "যে কোনও" ফেরত দেয় (শেষ পর্যন্ত এটি উদাহরণের নীচে দেখে মনে হয়)

(25) -> [[i,f(i)] for i in 1..9]
   (25)
   [[1,1.0], [2,1.5], [3,1.8333333333 333333333], [4,2.0833333333 333333333],
    [5,2.2833333333 333333333], [6,2.45], [7,2.5928571428 571428572],
    [8,2.7178571428 571428572], [9,2.8289682539 682539683]]
                                                      Type: List List Any
(26) -> f(3000)
   (26)  8.5837498899 591871142
                                        Type: Union(Expression Float,...)
(27) -> f(300000)
   (27)  13.1887550852 056117
                                        Type: Union(Expression Float,...)
(29) -> f(45)^2
   (29)  19.3155689383 88117644
                                                   Type: Expression Float


1

সি, 54 বাইট

i;float f(n){float s;for(i=n+1;--i;s+=1./i);return s;}

1-ইনডেক্সড নম্বর ব্যবহার করে।




1

গোল> <> , 8 বাইট

F1LP,+|B

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

সম্পূর্ণ প্রোগ্রাম এবং এটি কীভাবে কাজ করে তার উদাহরণ

1AGIE;GN
F1LP,+|B

1AGIE;GN
1AG       Register row 1 as function G
   IE;    Take input as int, halt if EOF
      GN  Call G and print the result as number
          Repeat indefinitely

F1LP,+|B
F     |   Repeat n times...
 1LP,       Compute 1 / (loop counter + 1)
     +      Add
       B  Return



0

ব্রেনল্ফ, 20 বাইট [প্রতিদ্বন্দ্বী]

VR1-1[1,!/M,$_1+]v&+

এটি প্রকৃতপক্ষে ভাসমানদের সাথে কাজ করতে ব্রেনলফের অক্ষমতার কারণে কাজ করবে না তবে যুক্তিটি সঠিক।

ব্যাখ্যা:

VR1-1[1,!/M,$_1+]v&+   Implicit input
VR                     Create new stack and return to main stack
  1-                   Decrement input
    1                  Push 1
     [..........]      Loop, always runs once, then decrements first item on stack at ]
                       Breaks out of loop if first item on stack reaches 0
      1,!/             Push 1, swap last 2 values, and divide without popping
                       Original values are kept on stack, and result of division is pushed
          M,$_         Move result of division to next stack, then swap last 2 items and
                       Silently pop last item (1)
              1+       Increment last item on stack
                 v&+   Move to next stack, sum entire stack 
                       Implicit output of last item on current stack

এখানে একটি পরিবর্তিত দোভাষী যা ভাসমান সমর্থন করে। প্রথম যুক্তি ইনপুট হয়।


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