Jumlah Separuh Harmonic Sequence!

Arjun 05/28/2017. 24 answers, 1.268 views
code-golf math sequence

Definisi

Dalam Matematik, Harmonic Sequence merujuk kepada urutan di mana

Persamaan Urutan Harmonik

iaitu jangka masa n urutan adalah sama dengan timbalan n .


Pengenalan

Dalam cabaran ini, diberi integer positif n sebagai input, keluarkan Jumlah Separa terma n pertama dari Sequence Harmonic.


Input

Anda akan diberi integer positif (dalam julat nombor yang disokong oleh bahasa anda). Ia boleh sama ada Signed and Unsigned (bergantung kepada anda), kerana cabaran memerlukan hanya integer positif.

Anda boleh mengambil input dalam apa cara sekalipun dengan mengandaikannya hadir dalam pembolehubah yang telah ditetapkan. Membaca dari fail, terminal, tetingkap modal ( prompt() dalam JavaScript) dan lain-lain dibenarkan. Mengambil input sebagai hujah fungsi dibenarkan juga.


Pengeluaran

Program anda harus mengeluarkan jumlah n terma pertama dari Sequence Harmonic sebagai float (atau integer jika output sama rata dibahagikan dengan 1) dengan ketepatan 5 angka signifikan, di mana n merujuk kepada input. Untuk menyampaikan perkara yang sama dalam jargon Matematik, anda perlu mengira

Sequence Harmonic Jumlah Sebatian n pertama

di mana n merujuk kepada input.

Anda boleh mengeluarkan apa-apa cara kecuali menulis output kepada pemboleh ubah. Menulis ke skrin, terminal, fail, tetingkap modal ( alert() dalam JavaScript) dan sebagainya dibenarkan. Pengeluaran sebagai nilai return fungsi juga dibenarkan.


Peraturan Tambahan


Kes Ujian

Kes-kes Ujian menganggap input untuk menjadi 1-diindeks

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

Kriteria Pemenang

Ini adalah , jadi kod terpendek dalam bait menang!

5 Comments
Cows quack 05/28/2017
Bolehkah anda memberi kami beberapa ujian?
2 Level River St 05/28/2017
Ketepatan apa yang diperlukan? Pengeluaran tepat pada umumnya hanya boleh dilakukan sebagai pecahan, tetapi dalam banyak bahasa yang perlu dipisahkan nombor untuk pengangka dan penyebut. Bolehkah kita mengeluarkan a) float, b) pecahan atau integer pasangan c) sama ada?
2 Level River St 05/28/2017
@Arjun Siri harmonik tumbuh ke tak terhingga sehingga sukar untuk bertemu dengan 10 tempat perpuluhan karena jumlahnya mencapai ribuan dan jutaan. Saya akan pergi untuk angka-angka penting dan bukannya tempat perpuluhan, dan saya tidak perlu melihatnya dengan tepat. 5 angka penting sepatutnya cukup. jadi 9.9999E10 daripada 99999999999.9999999999
Erik the Outgolfer 05/28/2017
Bolehkah kita pergi lebih dari 5 angka penting?
Greg Martin 05/28/2017
Dengan cara ini, diketahui bahawa urutan harmonik tidak mengandungi sebarang bilangan bulat selain dari awal a_1 = 1. (Idea bukti bahawa a_n bukan integer untuk n> 1: biarkan 2 ^ k menjadi kuasa terbesar 2 tidak melebihi n, maka 2 ^ k membahagi penyebut a_n.)

24 Answers


Erik the Outgolfer 05/29/2017.

Jeli , 3 bait

İ€S 

Cuba dalam talian!

1 diindeks.

Penjelasan:

İ€S Main link, monadic
İ€         1 / each one of [1..n]
  S Sum of 

shooqie 05/28/2017.

Python 3, 27 bait

h=lambda n:n and 1/n+h(n-1) 
4 comments
Arjun 05/28/2017
0-pengindeksan atau pengindeksan 1?
2 sagiksp 05/28/2017
Melemparkan RuntimeError semasa mengendalikan input yang lebih besar daripada had rekursi, 1000 secara lalai.
cat 05/29/2017
anda boleh melakukan sys.setrecursionlimit(473755252663) tetapi timbunan akhirnya akan melimpah dengan mudah
shooqie 05/29/2017
@Arjun itu 1 diindeks

Cows quack 05/28/2017.

JavaScript, 19 18 bait

1 byte saved thanks to @RickHitchcock

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

Ini adalah 1 diindeks.

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

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

4 comments
Rick Hitchcock 05/28/2017
Daripada apa yang saya lihat daripada jawatan lain, anda boleh mengalih keluar f= dari jawapan anda untuk menyimpan 2 bait.
1 Cows quack 05/28/2017
@RickHitchcock Saya tidak dapat mengalih keluar f= kerana fungsi tersebut adalah rekursif dan ia merujuk kepada f(--a) . Tetapi jika ini bukan penyelesaian rekursif, saya akan dapat melakukannya
Rick Hitchcock 05/28/2017
Ah, masuk akal! Simpan satu byte dengan f=a=>a&&1/a+f(--a) .
Cows quack 05/28/2017
@RickHitchcock Nice one!

Jenny_mathy 05/28/2017.

Mathematica, 21 20 16 bait

Penyelesaian ini adalah 1 diindeks.

Sum[1./i,NO 
5 comments
Jenny_mathy 05/28/2017
Ia adalah pengindeksan 1
1 MCCCS 05/28/2017
> Anda tidak boleh menggunakan terbina dalam untuk mengira jumlah separa n elemen pertama. (Ya, itu untuk anda Mathematica!)
3 Jenny_mathy 05/28/2017
OP bermakna saya tidak boleh menggunakan HarmonicNumber [#] &
4 Greg Martin 05/28/2017
Dan seseorang dapat memendekkan lagi ke Tr[1./Range@#]& .
2 LLlAMnYP 05/30/2017
@Ian Mathematica boleh display 5 sig ara, tetapi fungsi itu returns nombor ketepatan mesin (52 bit biner atau hanya di bawah 16 digit ketepatan keputihan)

Cows quack 05/28/2017.

APL (Dyalog) , 5 bait

 +/÷∘⍳ 

Cuba dalam talian!

Anda boleh menambah ⎕PP←NO ke tajuk untuk menukar ketepatan ke NO .

Ini adalah 1 diindeks.

Penjelasan

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

Jörg Hülsermann 05/28/2017.

PHP, 33 bait

1 pengindeksan

for(;$i++<$argn;)$s+=1/$i;echo$s; 

Cuba dalam talian!


alephalpha 05/28/2017.

Pari / GP , 18 bait

n->sum(i=1,n,1./i) 

1 pengindeksan.

Cuba dalam talian!


Erik the Outgolfer 05/29/2017.

CJam , 11 bait

1.ri,:)f/:+ 

Cuba dalam talian!

1 diindeks.


Shaggy 06/01/2017.

Japt , 8 6 5 3 + 1 = 4 bait

+1 byte untuk bendera -x .

õpJ 

Dengan beberapa terima kasih kepada produk ETH

Cuba dalam talian

5 comments
Arjun 05/28/2017
0-pengindeksan atau pengindeksan 1?
ETHproductions 05/28/2017
Saya fikir anda boleh menyimpan bait dengan õ x@1/X
ETHproductions 05/28/2017
... dan satu lagi bait pasangan dengan menggunakan XpJ bukannya 1/X :-)
Shaggy 05/28/2017
Terima kasih, @ETHproductions :) Saya mengikat mereka sebaik sahaja saya berjalan pergi.
ETHproductions 05/28/2017
Sebenarnya saya tidak fikir anda juga memerlukan _ disebabkan fungsi auto. Saya sepatutnya menulis hujung itu: P (saya harus mempunyai masa hari ini atau esok, kerana ia adalah Hari Memorial)

Luis Mendo 05/28/2017.

CJam , 11 10 bait

1 bait disingkirkan terima kasih kepada Erik the outgolfer

ri),NO 

Ini menggunakan pengindeksan berasaskan 1.

Cuba dalam talian!

Penjelasan

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 
4 comments
Erik the Outgolfer 05/28/2017
Anda boleh menggunakan W bukannya -1 .
Luis Mendo 05/28/2017
@EriktheOutgolfer telah keluar sendiri :-)
Erik the Outgolfer 05/28/2017
@LuisMendo Saya suka nama saya, itu hanya nama. Dan ya, saya mengalahkan diri saya dalam proses membantu golf golf pemain lain.
Luis Mendo 05/28/2017
@Erik Ia dimaksudkan sebagai jenaka. Terima kasih atas bantuan ini

Ryan McCleary 05/28/2017.

Haskell, 20 bait

f 0=0
f n=1/n+f(n-1) 

Penyelesaian asal, 22 bait

f n=sum[1/k|k<-[1..n]] 

Solutios ini menganggap input 1-indeks.


Nitrodon 05/28/2017.

R , 15 bait

 sum(1/1:scan()) 

Cuba dalam talian!


avl42 05/28/2017.

Tcl 38 bait

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

Itulah hack yang sangat kotor, dan panggilan rekursif lulus rentetan literal seperti "5-1-1-1 ..." sehingga ia menilai kepada 0.

2 comments
avl42 05/28/2017
Terima kasih @Christopher untuk pemformatan. Dengan itu, pertindihan backslash tidak diperlukan lagi.
Christopher 2EZ 4RTZ 05/28/2017
Tiada masalah! Ia kelihatan lebih baik

Erik the Outgolfer 05/29/2017.

05AB1E , 3 bait

LzO 

Cuba dalam talian!

1 diindeks.


Suever 05/28/2017.

MATL, 5 bait

:l_^s 

Penyelesaian ini menggunakan pengindeksan berasaskan 1.

Cuba di MATL Online

Explanation

% 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 

RosLuP 05/28/2017.

Aksiom, 45 34 bait

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

1 Terindeks; Ia mempunyai hujah satu integer positif (PI) dan mengembalikan "Mana-mana" yang sys mengkonversi (atau tidak diubah) kepada jenis yang berguna untuk fungsi seterusnya arg (akhirnya ia kelihatan seperti di bawah contoh)

(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 

Erik the Outgolfer 05/29/2017.

Pyth, 5 bait

scL1S 

Cuba di sini.

1 diindeks.


Uriel 05/28/2017.

C, 54 bait

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

Menggunakan nombor yang diindeks 1.


Fatalize 05/29/2017.

Brachylog , 6 bait

⟦₁/₁ᵐ+ 

Cuba dalam talian!

Ini adalah 1 diindeks.

Penjelasan

⟦₁         Range [1, …, Input]
    ᵐ      Map:
  /₁         Inverse
     +     Sum 

steenbergh 05/30/2017.

QBIC , 13 bait

[:|c=c+1/a]?c 

Penjelasan

[ |        FOR a = 1 to
 :            the input n
   c=c+    Add to c (starts off as 0)
   1/a     the reciprocal of the loop iterator
]          NEXT
?c         PRINT c 

Uri Goren 05/29/2017.

Haskell, 21 bait

f n=sum$map(1/)[1..n] 

Giacomo Garabello 05/30/2017.

C (gcc) , 35 bait

 float f(n){return n?1./n+f(--n):0;} 

Cuba dalam talian!


Mayube 05/30/2017.

Braingolf, 20 bait [tidak bersaing]

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

Ini tidak akan berfungsi kerana kegagalan braingolf bekerja dengan terapung, namun logiknya betul.

Penjelasan:

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 

Berikut adalah jurubahasa yang diubah suai yang menyokong terapung. Hujah pertama adalah input.


sergiol 06/14/2017.

Tcl, 61 bait

proc h {x s\ 0} {time {set s [expr $s+1./[incr i]]} $x;set s} 

Cuba dalam talian!

Related questions

Hot questions

Language

Popular Tags