Laske alin numero, jossa numerojonon summa ylittää annetun arvon

StudleyJr 12/02/2017. 21 answers, 578 views
code-golf math

Koska sinulla on ääretön määrä numeroita, jotka määritellään seuraavasti:

1: 1 = 1
2: 1 + 2 = 3
3: 1 + 3 = 4
4: 1 + 2 + 4 = 7
5: 1 + 5 = 6
6: 1 + 2 + 3 + 6 = 12
7: 1 + 7 = 8
... 

Sekvenssi on n: n jakajien summa, mukaan lukien 1 ja n .

Kun lasketaan positiivinen kokonaisluku x syötteeksi, laske alin numero n joka tuottaa tuloksen, joka on suurempi kuin x .

Test cases

f(100) = 48, ∑ = 124
f(25000) = 7200, ∑ = 25389
f(5000000) = 1164240, ∑ = 5088960 

Expected Output

Ohjelmasi pitäisi palauttaa both n että sen jakajien summan, kuten:

$ ./challenge 100
48,124 

Rules

Tämä on koodi-golf, joten lyhin lyönti tavuina jokaisella kielellä voittaa.

5 Comments
3 Martin Ender♦ 12/02/2017
Onko tämä sekvenssi vain n n jakajien summa? Luultavasti haluat sanoa tämän nimenomaisesti.
3 Martin Ender♦ 12/02/2017
Voit myös arvioida "odotetulla tuotoksellasi" sekä n and f(n) , mutta et sanota niin missään määrityksessä.
2 Mr. Xcoder 12/02/2017
Bonukset ovat huonoja , varsinkin kun ne ovat epämääräisiä. Päätin poistaa sen, jotta sitä ei suojelisi.
2 caird coinheringaahing 12/02/2017
Voisitko tarkistaa f(1000) = 48 ? Jakajan summa 48 on 124
2 duckmayr 12/02/2017
Voitko tarkistaa f(500000) ? Uskon, että sekvenssin 126000. numero on 502944.

21 Answers


Zgarb 12/02/2017.

Brachylog , 9 tavua

∧;S?hf+S> 

Tämä ohjelma ottaa syötteen "tuotosmuuttujasta" . , ja tulostaa "tulomuuttujaan" ? . Kokeile verkossa!

Selitys

∧;S?hf+S>∧;S        There is a pair [N,S]
   ?       which equals the output
    h      such that its first element's
     f     factors'
      +    sum
       S   equals S,
        >  and is greater than the input. 

Implisiittinen muuttuja N on lueteltu kasvava järjestys, joten sen alin juridinen arvo on käytetty lähtöön.


Jelly , 18 12 11 10 tavua

1Æs>¥#ḢṄÆs 

Kokeile verkossa!

-1 tavua Mr. Xcoderin ansiosta!

Kuinka se toimii

1Æs>¥#ḢṄÆs - Main link. Argument: n (integer)
1   ¥#     - Find the first n integers where...
 Æs        -   the divisor sum
   >       -   is greater than the input
       Ṅ   - Print...
      Ḣ    -   the first element
        Æs - then print the divisor sum 
2 comments
dylnan 12/03/2017
Voisitteko selittää, miksi 1 on tarpeen ja miten toimii?
caird coinheringaahing 12/03/2017
@dylnan 1 kertoo # aloittaa laskemisen 1 ja ¥ ottaa edelliset kaksi linkkiä ( Æs ja > ) ja soveltaa niitä dyadiin (eli kahteen argumenttiin), jolloin vasen argumentti on iteraatio ja oikea argumentti syötettä.

Misha Lavrov 12/02/2017.

Wolfram Language (Mathematica) , 53 tavua

{#,f@#}&@@Select[Range[x=#]+1,(f=Tr@*Divisors)@#>x&]& 

Kokeile verkossa!

Tarkistaa kaikki arvot välillä 2 ja x + 1, missä x on tulo.

( Select palauttaa luettelon kaikista tehdyistä arvoista, mutta funktio {#,f@#}& ottaa kaikki nämä syötteiksi ja jättää sitten kaikki sen syötteet, mutta ensimmäinen.)


Bruce Forte 12/02/2017.

Huskata , 12 11 tavua

§eVḟ>⁰moΣḊN 

-1 tavua kiitos @Zgarb!

Kokeile verkossa!

3 comments
Zgarb 12/02/2017
Tallenna tavu §: llä. Älä korvaa e : tä , koska se aiheuttaa joitain outoja juttuja tyypin päättelyn kanssa ...
Bruce Forte 12/02/2017
Clever! Se on kummallista, miten se ei toimi (tai päättymisestä kestää liian kauan?).
Zgarb 12/02/2017
Se päättelee tyypin, mutta tuottaa äärettömän luettelon. Se voi johtua ḟ: n ylikuormituksesta, joka ottaa kokonaislukun toisen argumenttina, mutta se on vain arvaus.

Shaggy 12/02/2017.

Japt, 15 tavua

[@<(V=Xâ x}a V] 

Kokeile

1 comments
Shaggy 12/02/2017
@ Mr.Xcoder: Ah, jäi siitä; Menin kappaleen edellä testi tapauksissa, jotka vain pyytää meitä löytämään n . Päivitetään pian.

Giuseppe 12/02/2017.

R , 73 tavua

 n=scan();while(1)NO 

Kokeile verkossa!


duckmayr 12/02/2017.

R , 71 tavua

function(x)for(n in 1:x){z=sum(which(n%%1:n==0));if(z>x)return(c(n,z))} 

Kokeile verkossa!

1 comments
Giuseppe 12/03/2017
59 tavua, mutta se pinoa ylivuotoa suurelle x .

Mr. Xcoder 12/03/2017.

05AB1E , 11 tavua

>LʒÑO‹}нDÑO 

Kokeile verkossa!

Leikkaa tuotos pinoon, kuten sallitaan meta-konsensuksen mukaan . Lisäsin ) visualisoinnin vuoksi, mutta ohjelma myös implisiittisesti tulostaa pinon yläosan.


Uriel 12/02/2017.

APL (Dyalog) , 32 tavua

 {⍺ 

Kokeile verkossa!

⍵o⍺⍵.


dzaima 12/02/2017.

SOGL V0.12 , 14 tavua

1[:Λ∑:A.>?ao←I 

Kokeile täältä!

Selitys:

1               push 1
 [              while ToS != 0
  :Λ              get the divisors
    ∑             sum
     :A           save on variable A without popping
       .>?  ←     if greater than the input
          ao        output the variable A
            ←       and stop the program, implicitly outputting ToS - the counter
             I    increment the counter 

Steadybox 12/02/2017.

C, 79 78 tavua

i,n,s;f(x){for(i=n=s=0;x>s;s+=n%++i?0:i)i-n||(++n,i=s=0);printf("%d %d",n,s);} 

Kokeile verkossa!


Luis Mendo 12/02/2017.

MATL , 12 tavua

`@Z\sG>~}@6M 

Kokeile verkossa!

Selitys

`      % Do...while
  @    %   Push iteration index (1-based)
  Z\   %   Array of divisors
  s    %   Sum of array
  G    %   Push input
  >~   %   Greater than; logical negate. This is the loop condition
}      % Finally (execute on loop exit)
  @    %   Push latest iteration index
  6M   %   Push latest sum of divisors again
       % End (implicit). Run new iteration if top of the stack is true
       % Display stack (implicit) 

Mr. Xcoder 12/02/2017.

Gaia , 11 tavua

dΣ@>↑#(:dΣ 

Kokeile verkossa!

Leikkaa tuotos pinoon, kuten sallitaan meta-konsensus . Lisäsin €. visualisoinnin vuoksi, mutta ohjelma myös epäsuorasti tulostaa pinon yläosan.


Bruce Forte 12/02/2017.

Haskell , 59 tavua

 f x=[(i,s)|i<-[1..],s<-[sum[d|d<-[1..i],i`mod`d<1]],s>x]!!0 

-1 tavua, kiitos @nimi!

Kokeile verkossa!


Unihedron 12/02/2017.

Ruby , 58 tavua

Täysi ohjelma, koska en ole varma, sallivatko lambdat. / olankohautuksella

 gets
$.+=1until$_.to_i. 

Kokeile verkossa!

Selitys

 gets     # read line ($_ is used instead of v= because it cuts a space)
$.+=1    # $. is "lines read" variable which starts at 1 because we read 1 line
    until     # repeat as long as the next part is not true
$_.to_i  # input, as numeric
  . add to sum, non-factor -> 0
  }
p$.,v    # output n and sum 
1 comments
2 Giuseppe 12/03/2017
Lambdat ovat varmasti sallittuja.

fede s. 12/02/2017.

Factor , 88

USE: math.primes.factors [ 0 0 [ drop 1 + dup divisors sum pick over > ] loop rot drop ] 

Brute-force-haku. Se on lainaus (lambda), call se x : llä pinoon, lähtee n ja f(n) pinoon.

Sana:

: f(n)>x ( x -- n f(n) )
  0 0 [ drop 1 + dup divisors sum pick over > ] loop rot drop ; 

Neil 12/03/2017.

JavaScript (ES6), 61 58 tavua

 f=(n,i=1,s=j=0)=>j++n?[i,s]:f(n,++i) 
 
 

Muokkaa: Tallennettu 3 tavua kiitos @Arnauld.


Cinaski 12/02/2017.

Ohm v2 , 11 tavua

£^DVΣD³>‽;« 

Kokeile verkossa!


noob 12/02/2017.

Python 3, 163 tavua

def f(x):
    def d(x):return[i for i in range(1,x+1) if x%i==0]
    return min(i for i in range(x) if sum(d(i)) >x),sum(d(min(i for i in range(x) if sum(d(i)) >x))) 
2 comments
3 Jonathan Frech 12/02/2017
Hei ja tervetuloa PPCG: hen; mukava ensimmäinen viesti! Golfin näkökulmasta voit säästää joitakin tavuja poistamalla välilyöntiä käyttämällä lambda-toimintoja, jolloin kaikki yhteen riviin voidaan sortata eikä toistaa itsesi. Olemme myös yleensä yhteydessä online-testausympäristöön, kuten esimerkiksi TIO ( 105 tavua edellä kuvattujen tekniikoiden avulla).
Eric Duminil 12/03/2017
@JonathanFrech: Erinomainen kommentti. Kiitos kärsivällisyydestä noobies yleensä ja noob erityisesti;)

Alonoaky 12/03/2017.

Clojure, 131 tavua

Ensin yritä codegolfing, kaikki vinkit ovat tervetulleita

(defn f[n](reduce +(filter #(zero? (rem n %))(range 1(inc n)))))
(defn e[n](loop[i 1 n n](if(>(f i) n){i,(f i)}(recur(inc i) n)))) 

Kokeile verkossa!

1 comments
caird coinheringaahing 12/03/2017
Tervetuloa sivustolle!

Michael Boger 12/03/2017.

Python 3 , 100 tavua

 d=lambda y:sum(i+1for i in range(y)if y%-~i<1)
f=lambda x:min((j,d(j))for j in range(x+1)if x<=d(j)) 

Kokeile verkossa!

Kiitos Jonathan Frechin kommentista edellisestä python 3 -yrityksestä, olen juuri laajentanut tietämykseni python-syntaksista. En olisi koskaan ajatellut - ~ i + 1 -tavoitetta, joka tallentaa kaksi merkkiä.

Kuitenkin tämä vastaus on 1) ei minimaalinen ja 2) ei toimi x = 1 (johtuen virheestä, joka on helppo tehdä lyhytaikaisesti, ja ehdotan, että jokainen muu tarkistaa vastauksensa tähän reunaan tapaus!).

Nopea selitys: sum(i+1for i in range(y)if y%-~i<1) sum(i for i in range(1,y+1)if y%i<1) sum(i+1for i in range(y)if y%-~i<1) vastaa sum(i for i in range(1,y+1)if y%i<1) merkkiä. Kiitos vielä kerran herra Frechille.

d=lambda y:sum(i+1for i in range(y)if y%-~i<1) palauttaa y: n jakajat.

f=lambda x:min((j,d(j))for j in range(x+1)if x<=d(j)) missä toimisin todella. Koska tuplasto vertailee sanakirjojen järjestyksessä, voimme vertailla j, d (j) yhtä helposti kuin voimme vertailla j: tä, jolloin emme tarvitse löytää minimaalia j, tallenna se muuttujaan ja / sitten / laskea tuplata erillisessä operaatiossa. Lisäksi on oltava <=, ei <, x<=d(j) , koska d (1) on 1, joten jos x on 1, et saa mitään. Siksi tarvitaan myös range(x+1) eikä range(x) .

Minulla olisi aiemmin ollut d palauttaa tuple, mutta sitten minun on alaindeksiä f, niin että kestää kolme muuta merkkiä.

3 comments
caird coinheringaahing 12/03/2017
Tervetuloa sivustoon ja mukava ensimmäinen viesti. Voit saada 98 tavua poistamalla f= kuin nimettömät toiminnot ovat täysin hyväksyttäviä täällä!
Michael Boger 12/03/2017
Et voi kutsua nimettömää toimintoa toiselta koodiriviltä, ​​on ongelma - minulla on erillinen tuloste (f (100)), joka testaa, että toiminto toimii.
caird coinheringaahing 12/03/2017
Se ei ole ongelma tässä. Se on täysin hyväksyttävää, ja se ei tue f= tavulaskennassa, ja se on hyvä tapa golfilla Pythona. Tarkista tämä lisää Python-golfin vinkkejä!

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 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
4 Anne-Marie

Rewrite The Stars flac

Anne-Marie. 2018. Writer: Benj Pasek;Justin Paul.
5 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
6 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.
7 BlackPink

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
8 Imagine Dragons

Bad Liar flac

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

Waste It On Me flac

BTS. 2018. Writer: Steve Aoki;Jeff Halavacs;Ryan Ogren;Michael Gazzo;Nate Cyphert;Sean Foreman;RM.
10 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
11 Little Mix

Woman Like Me flac

Little Mix. 2018. Writer: Nicki Minaj;Steve Mac;Ed Sheeran;Jess Glynne.
12 Brooks

Limbo flac

Brooks. 2018.
13 Fitz And The Tantrums

HandClap flac

Fitz And The Tantrums. 2017. Writer: Fitz And The Tantrums;Eric Frederic;Sam Hollander.
14 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
15 Lady Gaga

I'll Never Love Again flac

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

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
17 Rita Ora

Velvet Rope flac

Rita Ora. 2018.
18 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
19 Imagine Dragons

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
20 Erika Sirola

Speechless flac

Erika Sirola. 2018. Writer: Teemu Brunila;Stefan Dabruck;Jürgen Dohr;Guido Kramer;Dennis Bierbrodt;Chris Braide;Robin Schulz.

Related questions

Hot questions

Language

Popular Tags