¡Suma parcial de la secuencia armónica!

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

Definición

En Matemáticas, la Harmonic Sequence refiere a una secuencia donde

Ecuación de secuencia armónica

es decir, el n ésimo término de la secuencia es igual al recíproco de n .


Introducción

En este desafío, dado un entero positivo n como entrada, da salida a la suma parcial de los primeros n términos de la secuencia armónica.


Entrada

Se te dará un número entero positivo (dentro del rango de números admitidos por tu idioma). Puede ser Firmado o Sin firmar (depende de usted), ya que el desafío solo requiere enteros positivos.

Puede tomar la entrada de cualquier manera excepto suponiendo que esté presente en una variable predefinida. Lectura desde archivo, terminal, ventana modal ( prompt() en JavaScript) etc. está permitido. También se permite tomar la entrada como argumento de la función.


Salida

Su programa debe generar la suma de los primeros n términos de la secuencia armónica como un flotante (o entero si la salida es divisible uniformemente por 1) con precisión de 5 cifras significativas, donde n refiere a la entrada. Para transmitir lo mismo en la jerga matemática, necesita calcular

Secuencia armónica Suma parcial de los primeros n términos

donde n refiere a la entrada.

Puede generar resultados de cualquier manera excepto escribir el resultado en una variable. Se permite escribir en pantalla, terminal, archivo, ventana modal ( alert() en JavaScript) etc. También se permite la salida como valor de return función.


Reglas adicionales


Casos de prueba

Los casos de prueba suponen que la entrada debe ser indexada en 1

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

Criterio ganador

Esto es , ¡así que el código más corto en bytes gana!

5 Comments
Cows quack 05/28/2017
¿Podría darnos algunos testcases?
2 Level River St 05/28/2017
¿Qué precisión se requiere? El resultado exacto generalmente solo es posible como una fracción, pero en muchos idiomas tendrán que ser números separados para el numerador y el denominador. ¿Podemos producir a) un flotante, b) una fracción o un par entero c)?
2 Level River St 05/28/2017
@Arjun La serie de armónicos crece hasta el infinito, por lo que será difícil cumplir con 10 decimales a medida que el número llegue a miles y millones. Buscaría cifras significativas en lugar de decimales, y no veo la necesidad de ser tan preciso. 5 cifras significativas deberían ser suficientes. entonces 9.9999E10 vez de 99999999999.9999999999
Erik the Outgolfer 05/28/2017
¿Podemos ver más de 5 cifras significativas?
Greg Martin 05/28/2017
Por cierto, se sabe que la secuencia armónica no contiene números enteros distintos de la inicial a_1 = 1. (Idea de la prueba de que a_n no es un número entero para n> 1: que 2 ^ k sea la mayor potencia de 2 que no exceda n; luego 2 ^ k divide el denominador de a_n)

24 Answers


Erik the Outgolfer 05/29/2017.

Jelly , 3 bytes

İ€S 

¡Pruébalo en línea!

1-indexado.

Explicación:

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

shooqie 05/28/2017.

Python 3, 27 bytes

h=lambda n:n and 1/n+h(n-1) 
4 comments
Arjun 05/28/2017
0-indexación o 1-indexación?
2 sagiksp 05/28/2017
Lanza RuntimeError cuando maneja una entrada mayor que el límite de recursión, 1000 por defecto.
cat 05/29/2017
puedes hacer sys.setrecursionlimit(473755252663) pero la pila eventualmente se desbordará con bastante facilidad
shooqie 05/29/2017
@Ajjun está indexado en 1

Cows quack 05/28/2017.

JavaScript, 19 18 bytes

1 byte saved thanks to @RickHitchcock

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

Esto es 1-indexado.

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

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

4 comments
Rick Hitchcock 05/28/2017
Por lo que he visto de otras publicaciones, puedes eliminar f= de tu respuesta para ahorrar 2 bytes.
1 Cows quack 05/28/2017
@RickHitchcock No puedo eliminar f= porque la función es recursiva y se refiere a sí misma en f(--a) . Pero si esta no fuera una solución recursiva, habría podido hacer eso
Rick Hitchcock 05/28/2017
Ah, tiene sentido! Guarde un byte con f=a=>a&&1/a+f(--a) .
Cows quack 05/28/2017
@RickHitchcock ¡Bien hecho!

Jenny_mathy 05/28/2017.

Mathematica, 21 20 16 bytes

Esta solución tiene 1 indexado.

Sum[1./i,NO 
5 comments
Jenny_mathy 05/28/2017
Es 1 indexación
1 MCCCS 05/28/2017
> No debe usar un built-in para calcular la suma parcial de los primeros n elementos. (Sí, es para ti Mathematica!)
3 Jenny_mathy 05/28/2017
OP significa que no puedo usar HarmonicNumber [#] &
4 Greg Martin 05/28/2017
Y uno puede acortar aún más a Tr[1./Range@#]& .
2 LLlAMnYP 05/30/2017
@Ian Mathematica puede display 5 sig fig, pero la función returns números de precisión de máquina (52 bits binarios o poco menos de 16 dígitos decimales de precisión)

Cows quack 05/28/2017.

APL (Dyalog) , 5 bytes

 +/÷∘⍳ 

¡Pruébalo en línea!

Puede agregar ⎕PP←NO al encabezado para cambiar la precisión a NO .

Esto es 1-indexado.

Explicación

 +/÷∘⍳                     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 indexación

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

¡Pruébalo en línea!


alephalpha 05/28/2017.

Pari / GP , 18 bytes

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

1-indexación.

¡Pruébalo en línea!


Erik the Outgolfer 05/29/2017.

CJam , 11 bytes

1.ri,:)f/:+ 

¡Pruébalo en línea!

1-indexado.


Shaggy 06/01/2017.

Japt , 8 6 5 3 + 1 = 4 bytes

+1 byte para la bandera -x .

õpJ 

Con algunas gracias a ETHproductions

Pruébalo en línea

5 comments
Arjun 05/28/2017
0-indexación o 1-indexación?
ETHproductions 05/28/2017
Creo que puedes guardar un byte con õ x@1/X
ETHproductions 05/28/2017
... y otros dos bytes usando XpJ lugar de 1/X :-)
Shaggy 05/28/2017
Gracias, @ETHproductions :) Me twgged esos tan pronto como me fui.
ETHproductions 05/28/2017
En realidad, no creo que necesite el _ debido a las funciones automáticas. Realmente debería escribir ese consejo: P (debería tener tiempo hoy o mañana, debido a que es el Día de los Caídos)

Luis Mendo 05/28/2017.

CJam , 11 10 bytes

1 byte eliminado gracias a Erik the outgolfer

ri),NO 

Esto usa indexación basada en 1.

¡Pruébalo en línea!

Explicación

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
Puede usar W lugar de -1 .
Luis Mendo 05/28/2017
@EriktheOutgolfer se ha superado a sí mismo :-)
Erik the Outgolfer 05/28/2017
@LuisMendo Me gusta mi nombre, es solo un nombre. Y sí, me supero a mí mismo en el proceso de ayudar a un golfista compañero de golf aún más.
Luis Mendo 05/28/2017
@Erik Fue pensado como una broma. Gracias por la ayuda

Ryan McCleary 05/28/2017.

Haskell, 20 bytes

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

Solución original, 22 bytes

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

Estas soluciones asumen una entrada indexada.


Nitrodon 05/28/2017.

R , 15 bytes

 sum(1/1:scan()) 

¡Pruébalo en línea!


avl42 05/28/2017.

Tcl 38 bytes

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

Es un truco muy sucio, y las llamadas recursivas pasan cadenas literales como "5-1-1-1 ..." hasta que se evalúa como 0.

2 comments
avl42 05/28/2017
Gracias @Christopher por el formateo. Con eso, la duplicación de la barra invertida ya no era necesaria.
Christopher 2EZ 4RTZ 05/28/2017
¡No hay problema! Se ve mejor

Erik the Outgolfer 05/29/2017.

05AB1E , 3 bytes

LzO 

¡Pruébalo en línea!

1-indexado.


Suever 05/28/2017.

MATL, 5 bytes

:l_^s 

Esta solución usa indexación basada en 1.

Pruébalo en 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.

Axioma, 45 34 bytes

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

1-Indexado; Tiene el argumento de un entero positivo (PI) y devuelve "Cualquiera" que el sistema convierte (o no convierte) al tipo útil para la siguiente función arg (por fin parece que ve ejemplos a continuación)

(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 

Pruébalo aquí.

1-indexado.


Uriel 05/28/2017.

C, 54 bytes

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

Utiliza números de 1 índice.


Fatalize 05/29/2017.

Brachylog , 6 bytes

⟦₁/₁ᵐ+ 

¡Pruébalo en línea!

Esto es 1-indexado.

Explicación

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

steenbergh 05/30/2017.

QBIC , 13 bytes

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

Explicación

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

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

Giacomo Garabello 05/30/2017.

C (gcc) , 35 bytes

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

¡Pruébalo en línea!


Mayube 05/30/2017.

Braingolf, 20 bytes [no competidor]

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

Esto no funcionará realmente debido a la incapacidad de Braingolf para trabajar con flotadores, sin embargo, la lógica es correcta.

Explicación:

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 

Aquí hay un intérprete modificado que admite flotadores. El primer argumento es entrada.


sergiol 06/14/2017.

Tcl, 61 bytes

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

¡Pruébalo en línea!


HighResolutionMusic.com - Download Hi-Res Songs

1 (G)I-DLE

POP/STARS flac

(G)I-DLE. 2018. Writer: Riot Music Team;Harloe.
2 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
3 Imagine Dragons

Bad Liar flac

Imagine Dragons. 2018. Writer: Jorgen Odegard;Daniel Platzman;Ben McKee;Wayne Sermon;Aja Volkman;Dan Reynolds.
4 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
5 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
6 BTS

Waste It On Me flac

BTS. 2018. Writer: Steve Aoki;Jeff Halavacs;Ryan Ogren;Michael Gazzo;Nate Cyphert;Sean Foreman;RM.
7 Fitz And The Tantrums

HandClap flac

Fitz And The Tantrums. 2017. Writer: Fitz And The Tantrums;Eric Frederic;Sam Hollander.
8 BlackPink

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
9 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
10 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
11 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
12 Imagine Dragons

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
13 Little Mix

The Cure flac

Little Mix. 2018. Writer: Pete Kelleher;Camille Purcell;Tom Barnes;Ben Kohn.
14 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
15 Calum Scott

No Matter What flac

Calum Scott. 2018. Writer: Toby Gad;Calum Scott.
16 Frida Sundemo

Apologize flac

Frida Sundemo. 2018.
17 Little Mix

Woman Like Me flac

Little Mix. 2018. Writer: Nicki Minaj;Steve Mac;Ed Sheeran;Jess Glynne.
18 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
19 Ashley Tisdale

Voices In My Head flac

Ashley Tisdale. 2018. Writer: John Feldmann;Ashley Tisdale.
20 Haley Reinhart

Something Strange flac

Haley Reinhart. 2018.

Related questions

Hot questions

Language

Popular Tags