Yleistetyt FiveThirtyEight-sekvenssit

dylnan 12/09/2017. 11 answers, 1.320 views
code-golf number sequence

Mukautettu tästä FiveThirtyEight- arvosta.

Tausta

Tarkastele seuraavaa ääretöntä sekvenssiä:

3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ... 

Sanotaan, että järjestys on 1-indeksoitu. Sekvenssin i -numero määrää, kuinka monta 3 s on ennen i : tä 2 ja minkä tahansa edellisen 2 s: n jälkeen. Joten koska sekvenssi alkaa 3 , sekvenssin täytyy alkaa 3 3 3 2 ja koska sekvenssin alussa on kolme 3 s, alisekvenssin 3 3 3 2 täytyy toistaa kolme kertaa. Tämän jälkeen saavutat 3 3 2 koska sekvenssin neljäs numero on 2 .

FiveThirtyEight-arvoitus kysyy raja-arvoa kolmesta sekunniksi (jota en petaa täällä), mutta voit myös kysyä, mikä kumulatiivinen suhde on indeksin i . Esimerkiksi suhde i=4 on 3/1 = 3 ja i=15 se on 11/4 = 2.75 .

Let's get general

Koska numeroilla n ja k voimme tehdä samanlaisen sekvenssin, joka alkaa n ja kuten alkuperäisellä sekvenssillä kuvataan indeksin numero i määrää, kuinka monta n näytetään ennen i : tä k ja minkä tahansa edellisen k s: n jälkeen.

esimerkkejä:

n=2, k=5 antaa sekvenssin 2 2 5 2 2 5 2 2 2 2 2 5 2 2 5 ...

n=3, k=0 antaa 3 3 3 0 3 3 3 0 3 3 3 0 0 3 3 3 0 ...

n=1, k=3 antaa 1 3 1 1 1 3 1 3 1 3 1 3 1 1 1 3 1 ...

Haaste

Kirjoita funktio / ohjelma ja tee se seuraavasti. Ota panoksena:

  • positiivinen kokonaisluku n
  • ei-negatiivinen kokonaisluku k ≠ n
  • positiivinen kokonaisluku i > n

Ensimmäiset kaksi tuloa n ja k määrittävät edellä kuvatun sekvenssin ja i on indeksi. Käytän esimerkkejä 1-indeksoinnissa, mutta sinulla on vapaus käyttää 0- tai 1-indeksointia. Jos 0-indeksoitu, i i ≥ n rajoitus on i ≥ n .

Kolmen numeron avulla saadaan suhde ns: ksi k aan sekvenssissä aina i indeksiin asti. Lähdön muoto voi olla joko desimaaliluku, jossa on vähintään 5 numeroa tarkkuutta tai tarkka arvo suhteessa 3524/837 tai 3524:837 .

Desimaalimuodossa viimeinen numero voidaan pyöristää haluamallasi tavalla. Nollat ​​ja tyhjätilat ovat sallittuja.

Kummassakin merkkijonossa kaksi numeroa on normalisoitava niin, että ne ovat kopiota. Esimerkiksi jos suhde oli 22/4, 11/2 ja 11:2 ovat hyväksyttäviä, mutta 22/4 ei ole.

Examples

n   k   i      output
2   4   15     2.75     or   11/4
6   0   666    5.1101   or   557:109
50  89  64     63       or   63:1
3   2   1000   2.7453   or   733/267
9   12  345    9.4545   or   104/11 

Tämä on koodi golf per kieli, joten lyhin lyhenne jokaisella kielellä on voittaja.

5 Comments
2 dylnan 12/09/2017
@JonathanAllan Kyllä tosiasiallisesti tarkoitan sitä, kiitos. Mikä on hiekkalaatikon kohta, jos kukaan ei lue ja odottaa varsinaisia ​​viestejä näiden kommenttien tekemiseen?
1 dylnan 12/10/2017
@JonathanAllan Minun täytyy vaatia todellista suhdetta, ei vain numerointipari, nimittäjä. Mutta näen Jelly-vastauksenne ja enintään kolme ylimääräistä tavua saada sen hyväksyttävään muotoon
3 J42161217 12/10/2017
Mielestäni OP on selvä, "kaksi numeroa on normalisoitava niin, että ne ovat coprime"
2 J42161217 12/10/2017
@JonathanAllan katso vain viimeistä koetinkiviä: pari [312,33] ei ole oikein, koska se voidaan normalisoida [104,11] ensimmäinen koodi tuottaa [312,33]

11 Answers


Zgarb 12/10/2017.

Huskata , 16 tavua

¤/#ωȯ↑⁰J¹`C∞²N¹² 

Kokeile verkossa!

Ottaa panokset samassa järjestyksessä kuin testitapaukset. Tulostaa järkevän numeron. Minusta tuntuu, että tämä on liian monta yläosaa, mutta en tiedä miten päästä eroon niistä ...

Selitys

¤/#ωȯ↑⁰J¹`C∞²N¹²  Inputs are n, k, i.
             N    Starting with the natural numbers [1,2,3..
   ωȯ             do this until a fixed point is reached:
                    Argument is a list s.
           ∞²       Take the infinite list [n,n,n..
         `C         and split it to the lengths in s.
       J¹           Join the resulting blocks with k.
     ↑⁰             Take the first i elements.
                  Call the result x.
¤             ¹²  For each of n and k,
  #               count their number of occurrences in x
 /                and perform exact division on the results. 

Neil 12/10/2017.

Python 3 , 94 92 89 87 tavua

 def g(n,k,i):o,t=[n],0;exec('o+=[n]*o[t]+[k];t+=1;'*i);return-1-i/(o[1:i+1].count(n)-i) 

Kokeile verkossa!

Laajuus

5 comments
Colera Su 12/10/2017
Eikö sen pitäisi olla .count(n) ?
Neil 12/10/2017
@ColeraSu Kiitos. En tiedä mistä olen kaipas, kiinteä.
Colera Su 12/10/2017
Neil 12/10/2017
@ColeraSu Kiitos, päivitetty. Yritän aloittaa käyttäjiä. Tuo on aika siistiä.
dylnan 12/10/2017

Erik the Outgolfer 12/10/2017.

Jelly , 22 tavua

³ẋЀ;€⁴Ẏḣ⁵
ẋ`;ÇÐLLƙ`÷/ 

Kokeile verkossa!

Koko ohjelma. Ottaa argumentit n , k , i .

On virhe, joka tekee siitä tarpeettoman pitemmän 1 tavulla.

2 comments
Jonathan Allan 12/10/2017
Käytti joitain temppuja - mukavaa. Mietitkö, mikä virhe korjattiin oikein ...
Erik the Outgolfer 12/10/2017
@JonathanAllan Mikä löi minua, tämä on linja , vaikka en ole varma miksi asettaa ` tekee sen toimimaan. Oi, ja jos vastauksesi on erilainen, unohdin toteuttaa golfin, jonka löysin toisella kielellä> _>

Jonathan Allan 12/10/2017.

Jelly , 25 16 tavua

-9 bytes ~ 50% johtuu Erik Outgolferin Jelly-vastauksesta (1. käyttämällä uutta-avainta nopealla ƙ vaikka ƙ tulkitsija, joka tällä hetkellä maksaa tavun, 2. käytä kartoitettua toistoa estääkseen laskemisen ja indeksoinnin nykyiseen sekvenssi.) Anna antaa hänelle luottoa!

³ẋЀj⁴ṁ⁵µÐLLƙ`÷/ 

Täysi ohjelma ottaen kolme argumenttia: n , k , i joka tulostaa tuloksen.

Try it online!

Millä tavalla?

³ẋЀj⁴ṁ⁵µÐLLƙ`÷/ - Main link
        µ        - monadic chain separation
         ÐL      - apply the monadic chain to the left repeatedly until no change occurs:
³                -   program's 1st argument, n
  Ѐ             -   map across the current sequence (initially just n)
 ẋ               -     repeat (the first run give triangle of n i.e. [[n],[n,n],...,[n]*n]
     ⁴           -     program's 2nd argument, k
    j            -     join
       ⁵         -     program's 3rd argument, i
      ṁ          -     mould like (repeat the list to fill, or cut it, to length i)
            ƙ    - keyed application, map over groups of identical items:
             `   - (this has an arity of 2, make it monadic by repeating the argument)
           L     -   length -> [numberOfNs, numberOfKs]
               / - reduce with:
              ÷  -   division -> [numberOfNs / numberOfKs]
                 - implicit print (a single item list just prints its content) 

esimerkki ajaa tuloilla n=2 , k=3 , i=30 :

Start the "loop until no change", ÐL
Note: Initial left argument, n=2, implicitly range-ified by Ѐ to become [1,2]
1. mapped repeat of n: [[2],[2,2]]
          join with k: [2,3,2,2]
         mould like i: [2,3,2,2,2,3,2,2,2,3,2,2,2,3,2,2,2,3,2,2,2,3,2,2,2,3,2,2,2,3]

2. mapped repeat of n: [[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2]]
          join with k: [2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2]
         mould like i: [2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2]
                          ^different to previous result

3. mapped repeat of n: [[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2]]
          join with k: [2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2]
         mould like i: [2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2]
                                  ^different to previous result

4. mapped repeat of n: [[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2]]
          join with k: [2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2]
         mould like i: [2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2]
                                                      ^different to previous result

5. mapped repeat of n: [[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2],[2,2],[2,2,2],[2,2]]
          join with k: [2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2]
         mould like i: [2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,3,2]
                       all the same as the previous result; stop loop and yield this.

length applied to equal elements: [length([2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]), length([3,3,3,3,3,3,3,3,3])]
                                = [21,9]
reduce by division              = [21/9] = [2.3333333333333335]
implicit print                  2.3333333333333335 

J42161217 12/10/2017.

Mathematica, 85 tavua

(s={#};Do[s=Join[s,#~Table~s[[t]],{#2}],NO 

Kokeile verkossa!


J. Sallé 12/14/2017.

APL (Dyalog Unicode) , 126 70 tavua

 k n i←⎕
j←⍴v←⍬
:While j 

Kokeile verkossa!

No, kiitos @ Adám, joka pyysi 56 tavua tästä vastauksesta.

Tämä on niladinen Tradfn ( trad f unctio n ), joka ottaa yhden syötteen, joka on 3 elementtiluettelo.

⎕PP←5 ää ei lisätä tavujärjestelmään, koska sitä käytetään rajoittamaan P rint P recision 5 numeroon.

∇f ja eivät ole lisätty tavuilukuihin, koska ne eivät ole osa koodia, vain tradfn: n raja-arvot.

Kuinka se toimii:

 k n i←⎕                   ⍝ Take input (←⎕) for k, n and i.
j←⍴v←⍬                    ⍝ Assign (←) an empty vector (⍬) to v, then assign its shape (⍴, which is 0) to j.
:While j 

duckmayr 12/10/2017.

R , 88 tavua

function(n,k,i){s=rep(n,n);for(j in 1:i){s=c(s,k,rep(n,s[j]))};z=sum(s[1:i]==n);z/(i-z)} 

Kokeile verkossa!

1 comments
Giuseppe 12/13/2017
voit päästä eroon silmukan rungon ympärillä olevista ripustuksista, koska on vain yksi lausunto.

Herman Lauenstein 12/10/2017.

Swift , 152 tavua

 func f(n:Int,k:Int,i:Int){var a=[0];(1...i).map{a+=(0..<(a.count>$0 ?a[$0]:n)).map{_ in n}+[k]};let m=a[1...i].filter{n==$0}.count;print("\(m)/\(i-m)")} 

Onko se lyhyempi kuin Java?

Selitys

 func f(n:Int,k:Int,i:Int){
  var a=[0]                                    // Initialize the array (the zero is to
                                               //  define the type of the array and will be
                                               //  ignored by the code)
  (1...i).map{                                 // Repeat i times (more than enough):
    a+=(0..<(a.count>$0 ?a[$0]:n)).map{_ in n} //  Add the right amount of n:s to the array
      +[k]                                     //  Add k to the array
  }                                            // End repeat
  let m=a[1...i].filter{n==$0}.count           // Count the amount of n:s in the first
                                               //  i elements of the array
  print("\(m)/\(i-m)")                         // Print the result
} 

iamnotmaynard 12/10/2017.

Ruby , 77 71 70 tavua

 ->n,k,i{r=[n]
i.times{|c|r+=[n]*r[c]+[k]}
1r*(j=r[1,i].count n)/(i-j)} 

Kokeile verkossa!

Palauttaa Rational-arvon, joka toimii molemmilla numeroilla ja kiristää täsmälleen pienempään osaan.


Leaky Nun 12/13/2017.

Pyth , 24 tavua

AEtcH/e.u 

Testisarja.

Kiinteä piste [n] tietyllä taulukon toiminnolla.


DLosc 12/14/2017.

Zephyr , 284 tavua

input n as Integer
input k as Integer
input m as Integer
set s to Array(m)
for i from 1 to n
set s[i]to n
next
set s[i]to k
set N to n
set K to 1
for a from 2 to m
for b from 1 to s[a]
inc i
if i<=m
set s[i]to n
inc N
end if
next
inc i
if i<=m
set s[i]to k
inc K
end if
next
print N/K 

Ottaa kolme numeroa stdin kolmelta eri riviltä. Tulostaa tarkan suhde, kuten 104/11 tai 63 .

Ungolfed

input n as Integer
input k as Integer
input maxIndex as Integer

set sequence to Array(maxIndex)
for i from 1 to n
    set sequence[i] to n
next
set sequence[i] to k

set nCount to n
set kCount to 1

for a from 2 to maxIndex
    for b from 1 to sequence[a]
        inc i
        if i <= maxIndex
            set sequence[i] to n
            inc nCount
        end if
    next
    inc i
    if i <= maxIndex
        set sequence[i] to k
        inc kCount
    end if
next

print nCount / kCount 

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