Delvis summa av harmonisk sekvens!

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

Definition

I matematik hänvisar Harmonic Sequence till en sekvens där

Harmonisk sekvenslikvation

dvs n : n termen av sekvensen är lika med den ömsesidiga av n .


Introduktion

I denna utmaning, med ett positivt heltal n som ingång, matar du ut den dela summan av de första n termen i harmoniska sekvensen.


Inmatning

Du får ett positivt heltal (inom antalet siffror som stöds av ditt språk). Det kan vara antingen Signerat och Unsigned (beror på dig), eftersom utmaningen endast kräver positiva heltal.

Du kan ta in inmatningen på något sätt förutom att du antar att den är närvarande i en fördefinierad variabel. Läsning från fil, terminal, modalt fönster ( prompt() i JavaScript) etc. är tillåtet. Att använda inmatningen som funktionsargument är också tillåtet.


Produktion

Ditt program ska mata ut summan av de första n termerna i Harmonic Sequence som en float (eller heltal om utdata är jämnt delbar med 1) med precision av 5 signifikanta siffror, där n avser ingången. För att förmedla detsamma i matematiskt jargong måste du beräkna

Harmonisk sekvens Delvinkel av första n termer

där n hänvisar till ingången.

Du kan mata ut på något sätt förutom att skriva utmatningen till en variabel. Skrivning till skärm, terminal, fil, modalt fönster ( alert() i JavaScript) etc. är tillåtet. Utmatning som funktionens returvärde är också tillåtet.


Ytterligare regler


Testfall

Testfallen antar att ingången är 1-indexerad

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

Vinnande kriterium

Detta är , så den kortaste koden i byte vinner!

5 Comments
Cows quack 05/28/2017
Kan du ge oss några provkassar?
2 Level River St 05/28/2017
Vilken precision krävs? Exakt produktion är i allmänhet endast möjlig som en fraktion, men på många språk måste det finnas separata siffror för täljare och nämnare. Kan vi mata ut a) en flottör, b) en fraktion eller heltalspar c) heller?
2 Level River St 05/28/2017
@Arjun Den harmoniska serien växer till oändlighet så det blir svårt att träffa 10 decimaler, eftersom antalet kommer in i tusentals och miljoner. Jag skulle gå för betydande siffror i stället för decimaler, och jag ser ingen anledning att vara så exakt. 5 betydande siffror bör räcka till. så 9.9999E10 snarare än 99999999999.9999999999
Erik the Outgolfer 05/28/2017
Kan vi gå över 5 signifikanta siffror?
Greg Martin 05/28/2017
För övrigt är det känt att den harmoniska sekvensen inte innehåller några andra heltal än initialen a_1 = 1. (Idé av bevis att a_n inte är ett heltal för n> 1: låt 2 ^ k vara den största effekten av 2 som inte överskrider n, då dividerar 2 ^ k nivån av a_n.)

24 Answers


Erik the Outgolfer 05/29/2017.

Gelé , 3 byte

İ€S 

Prova det online!

1-indexerade.

Förklaring:

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

shooqie 05/28/2017.

Python 3, 27 byte

h=lambda n:n and 1/n+h(n-1) 
4 comments
Arjun 05/28/2017
0-indexering eller 1-indexering?
2 sagiksp 05/28/2017
RuntimeError vid hantering av inmatning som är större än rekursionsgränsen, 1000 som standard.
cat 05/29/2017
du kan göra sys.setrecursionlimit(473755252663) men stacken kommer så småningom att översvämma ganska enkelt
shooqie 05/29/2017
@Arjun det är 1-indexerat

Cows quack 05/28/2017.

JavaScript, 19 18 byte

1 byte saved thanks to @RickHitchcock

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

Detta är 1-indexerat.

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

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

4 comments
Rick Hitchcock 05/28/2017
Från vad jag har sett av andra inlägg kan du ta bort f= från ditt svar för att spara 2 byte.
1 Cows quack 05/28/2017
@RickHitchcock Jag kan inte ta bort f= eftersom funktionen är rekursiv och refererar till sig själv i f(--a) . Men om det inte var en rekursiv lösning skulle jag ha kunnat göra det
Rick Hitchcock 05/28/2017
Åh, det är vettigt! Spara en byte med f=a=>a&&1/a+f(--a) .
Cows quack 05/28/2017
@RickHitchcock Trevlig!

Jenny_mathy 05/28/2017.

Mathematica, 21 20 16 bytes

Denna lösning är 1-indexerad.

Sum[1./i,NO 
5 comments
Jenny_mathy 05/28/2017
Det är 1-indexering
1 MCCCS 05/28/2017
> Du får inte använda en inbyggd för att beräkna summan av de första n-elementen. (Ja, det är för dig Mathematica!)
3 Jenny_mathy 05/28/2017
OP betyder att jag inte kan använda HarmonicNumber [#] &
4 Greg Martin 05/28/2017
Och man kan vidare förkorta Tr[1./Range@#]& .
2 LLlAMnYP 05/30/2017
@Ian Mathematica kan display 5 sig fig, men funktionen returns maskinens precisionsnummer (52 binära bitar eller knappt 16 decimaler i precision)

Cows quack 05/28/2017.

APL (Dyalog) , 5 byte

 +/÷∘⍳ 

Prova det online!

Du kan lägga till ⎕PP←NO till rubriken för att ändra precisionen till NO .

Detta är 1-indexerat.

Förklaring

 +/÷∘⍳                     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 Bytes

1-indexering

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

Prova det online!


alephalpha 05/28/2017.

Pari / GP , 18 byte

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

1-indexering.

Prova det online!


Erik the Outgolfer 05/29/2017.

CJam , 11 byte

1.ri,:)f/:+ 

Prova det online!

1-indexerade.


Shaggy 06/01/2017.

Japt , 8 6 5 3 + 1 = 4 byte

+1 byte för -x flaggan.

õpJ 

Med tack till ETHproductions

Prova det online

5 comments
Arjun 05/28/2017
0-indexering eller 1-indexering?
ETHproductions 05/28/2017
Jag tror att du kan spara en byte med õ x@1/X
ETHproductions 05/28/2017
... och ett annat par byte med hjälp av XpJ istället för 1/X :-)
Shaggy 05/28/2017
Tack, @ETHproductions :) Jag twigged dem så snart jag gick bort.
ETHproductions 05/28/2017
Egentligen tror jag inte att du ens behöver _ grund av auto-funktioner. Jag borde verkligen skriva det tipset: P (jag borde ha tid idag eller imorgon på grund av att det är Memorial Day)

Luis Mendo 05/28/2017.

CJam , 11 10 byte

1 byte bort tack vare Erik Outgolfer

ri),NO 

Detta använder 1-baserad indexering.

Prova det online!

Förklaring

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
Du kan använda W istället för -1 .
Luis Mendo 05/28/2017
@EriktheOutgolfer har outgolfed sig :-)
Erik the Outgolfer 05/28/2017
@LuisMendo Jag gillar mitt namn, det är bara ett namn. Och ja, jag utgav mig själv i processen att hjälpa en golfspelare golf ännu längre.
Luis Mendo 05/28/2017
@Erik Det var tänkt som ett skämt. Tack för hjälpen

Ryan McCleary 05/28/2017.

Haskell, 20 byte

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

Originallösning, 22 byte

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

Dessa lösningar antar 1-indexerad ingång.


Nitrodon 05/28/2017.

R , 15 byte

 sum(1/1:scan()) 

Prova det online!


avl42 05/28/2017.

Tcl 38 byte

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

Det är en väldigt smutsig hack, och de rekursiva samtalen passerar bokstavliga strängar som "5-1-1-1 ..." tills det utvärderas till 0.

2 comments
avl42 05/28/2017
Tack @ Christopher för formateringen. Med detta var duplikering av backslash inte längre nödvändigt.
Christopher 2EZ 4RTZ 05/28/2017
Inga problem! Det ser bättre ut

Erik the Outgolfer 05/29/2017.

05AB1E , 3 byte

LzO 

Prova det online!

1-indexerade.


Suever 05/28/2017.

MATL, 5 byte

:l_^s 

Denna lösning använder 1-baserad indexering.

Prova det på 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.

Axiom, 45 34 byte

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

1-indexeras; Den har argument ett positivt heltal (PI) och returnerar "Any" som sys konvertera (eller inte konvertera) till den typ som är användbar för nästa funktion arg (till sist verkar det så att se nedan exempel)

(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 bytes

scL1S 

Prova det här.

1-indexerade.


Uriel 05/28/2017.

C, 54 byte

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

Använder 1-indexerade nummer.


Fatalize 05/29/2017.

Brachylog , 6 byte

⟦₁/₁ᵐ+ 

Prova det online!

Detta är 1-indexerat.

Förklaring

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

steenbergh 05/30/2017.

QBIC , 13 byte

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

Förklaring

[ |        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 byte

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

Giacomo Garabello 05/30/2017.

C (gcc) , 35 byte

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

Prova det online!


Mayube 05/30/2017.

Braingolf, 20 byte [icke-konkurrerande]

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

Detta kommer inte att fungera tack vare braingolfs oförmåga att arbeta med flottor, men logiken är korrekt.

Förklaring:

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 

Här är en modifierad tolk som stöder flottor. Första argumentet är inmatat.


sergiol 06/14/2017.

Tcl, 61 byte

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

Prova det online!


HighResolutionMusic.com - Download Hi-Res Songs

1 The Chainsmokers

Beach House flac

The Chainsmokers. 2018. Writer: Andrew Taggart.
2 (G)I-DLE

POP/STARS flac

(G)I-DLE. 2018. Writer: Riot Music Team;Harloe.
3 Anne-Marie

Rewrite The Stars flac

Anne-Marie. 2018. Writer: Benj Pasek;Justin Paul.
4 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
5 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
6 BTS

Waste It On Me flac

BTS. 2018. Writer: Steve Aoki;Jeff Halavacs;Ryan Ogren;Michael Gazzo;Nate Cyphert;Sean Foreman;RM.
7 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
8 Imagine Dragons

Bad Liar flac

Imagine Dragons. 2018. Writer: Jorgen Odegard;Daniel Platzman;Ben McKee;Wayne Sermon;Aja Volkman;Dan Reynolds.
9 BlackPink

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
10 Nicki Minaj

No Candle No Light flac

Nicki Minaj. 2018. Writer: Denisia “Blu June” Andrews;Kathryn Ostenberg;Brittany "Chi" Coney;Brian Lee;TJ Routon;Tushar Apte;ZAYN;Nicki Minaj.
11 Rita Ora

Cashmere flac

Rita Ora. 2018. Writer: Sean Douglas;Lindy Robbins.
12 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
13 Brooks

Limbo flac

Brooks. 2018.
14 Rita Ora

Velvet Rope flac

Rita Ora. 2018.
15 Fitz And The Tantrums

HandClap flac

Fitz And The Tantrums. 2017. Writer: Fitz And The Tantrums;Eric Frederic;Sam Hollander.
16 Little Mix

Woman Like Me flac

Little Mix. 2018. Writer: Nicki Minaj;Steve Mac;Ed Sheeran;Jess Glynne.
17 Cher Lloyd

None Of My Business flac

Cher Lloyd. 2018. Writer: ​iamBADDLUCK;Alexsej Vlasenko;Kate Morgan;Henrik Meinke;Jonas Kalisch;Jeremy Chacon.
18 Billie Eilish

When The Party's Over flac

Billie Eilish. 2018. Writer: Billie Eilish;FINNEAS.
19 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
20 Lil Pump

Arms Around You flac

Lil Pump. 2018. Writer: Rio Santana;Lil Pump;Edgar Barrera;Mally Mall;Jon Fx;Skrillex;Maluma;Swae Lee;XXXTENTACION.

Related questions

Hot questions

Language

Popular Tags