Hopp som en kanin!

Erik the Outgolfer 08/26/2017. 30 answers, 2.887 views
code-golf array-manipulation

Gitt en liste over ikke-negative heltall i et rimelig format, luk det over, hopper over så mange elementer som hvert heltall du går på, sier.


Her er et bearbeidet eksempel:

[0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | []
 ^ First element, always include it
[0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0]
    ^ Skip 0 elements
[0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0, 1]
          ^ Skip 1 element
[0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0, 1, 2]
                   ^ Skip 2 elements
[0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0, 1, 2, 3]
Skip 3 elements; you're done 

Et annet fungerte eksempel, ikke så likeverdige deltakere:

[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] | []
 ^ First element, always include it
[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] | [4]
                ^ Skip 4 elements
[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] | [4, 3]
                            ^ Skip 3 elements
[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] | [4, 3, 3]
                                        ^ Skip 3 elements
[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] | [4, 3, 3, 4]
Skip 4 elements; you're done 

Et eksternt eksempel:

[0, 2, 0, 2, 4, 1, 2] | []
^ First element, always include it
[0, 2, 0, 2, 4, 1, 2] | [0]
    ^ Skip 0 elements
[0, 2, 0, 2, 4, 1, 2] | [0, 2]
             ^ Skip 2 elements
[0, 2, 0, 2, 4, 1, 2] | [0, 2, 4]
Skip 4 elements; you're done (out of bounds) 

regler

  • Du kan ikke bruke noen kjedelig juks blant disse , de gjør utfordringen kjedelig og uinteressant.
  • Du bør bare returnere / skrive ut det endelige resultatet. STDERR-utgangen ignoreres.
  • Du kan ikke få inntastingen som en streng med sifre i en base (f.eks. "0102513162" for første tilfelle).
  • Du må bruke venstre til høyre rekkefølge for input.
  • Som i de bearbeidede eksemplene, hvis du går ut av grensen, avslutter kjøringen som om ellers.
  • Du bør bruke 0 for å hoppe over 0 elementer.
  • Gitt den tomme listen ( [] ) som input, bør du returnere [] .

Testtilfeller

[]                                                     => []
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]                     => [0, 1, 3, 7]
[5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0]                   => [5, 2, 1, 0]
[0, 1, 0, 2, 5, 1, 3, 1, 6, 2]                         => [0, 1, 2, 3]
[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] => [4, 3, 3, 4]
[0, 2, 0, 2, 4, 1, 2]                                  => [0, 2, 4] 

Dette er , så korteste svar vinner!

5 Comments
Erik the Outgolfer 07/28/2017
Sandkasse (kun 2k + brukere)
3 Shaggy 07/28/2017
Ja, bare oppdaget det. / setter briller på
2 Rod 07/28/2017
Sannsynligvis en leprechaun ¯ \ _ (ツ) _ / ¯
1 Roman Gräf 07/28/2017
Er det greit å ha tilbakevendende nuller i min matrise? ville redde meg ~ 18 byte
1 Erik the Outgolfer 07/28/2017
@ RomanGräf Beklager, men nei, det ville være for tvetydig siden det er tilfeller du burde ha etterfølgende 0 s i utgangen.

30 Answers


Rod 07/28/2017.

Python 2 , 36 bytes

 f=lambda x:x and x[:1]+f(x[x[0]+1:]) 

Prøv det på nettet!

4 comments
Mr. Xcoder 07/28/2017
Jeg ventet å få outgolfed, men ikke så dårlig :)
Erik the Outgolfer 07/28/2017
Kan du ikke gjøre x[0] stedet for x[:1] ?
Rod 07/28/2017
@EriktheOutgolfer ja, men det må være en liste, så det ville være [x[0]]
Erik the Outgolfer 07/28/2017
@Rod Du lagrer ikke noen byte med x[:1] uansett ... f=lambda x:x and[x[0]]+f(x[x[0]+1:])

Mr. Xcoder 08/19/2017.

Python 2 , 49 46 * 41 byte

Krysset ut 4 er fortsatt vanlig 4 :(

* -3 thanks to @ASCII-only .

 l=input()
while l:print l[0];l=l[l[0]+1:] 

Prøv det på nettet!

Skriver ut resultatene skilt av en ny linje, da OP-en tillatt i nettprat. Jeg tror ikke det kan bli kortere som et non-recursive full program .


Hvordan virker dette?

  • l=input() - Leser listen fra standardinngangen.

  • while l: - Misbruk det faktum at tomme lister er falske i Python, sløyfer til listen er tom.

  • print l[0]; - Skriver ut det første elementet i listen.

  • l=l[l[0]+1:] - "hopper som en kanin" - trims den første l[0]+1 fra listen.

La oss ta et eksempel

Gitt listen [5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0] som input, utfører koden følgende (i henhold til forklaringen ovenfor) - Skriver ut det første elementet i array: 5 , trim de første 6: [2, 1, 2, 1, 0, 0] . Vi skriver deretter ut 2 og trimmer de første 3: [1,0,0] . På samme måte utsender vi 1 , beskjærer de første 2, og vi får [0] . Selvfølgelig blir 0 skrevet ut og programmet avsluttes.

1 comments

w0lf 07/28/2017.

Haskell, 29 27 26 byte

 j(x:y)=x:j(drop x y)
j x=x 

Lagret 1 byte takket være Zgarb.

Prøv det på nettet.

2 comments
Zgarb 07/28/2017
f x=x på den andre linjen lagrer en byte.
w0lf 07/28/2017
@Zgarb Cool, takk!

Adnan 07/28/2017.

05AB1E , 10 9 bytes

[¬Dg>#=ƒ¦ 

Bruker 05AB1E kodingen. Prøv det på nettet!

1 comments
Magic Octopus Urn 07/28/2017
Ja, det er mye bedre enn det jeg tenkte på.

Martin Ender 07/28/2017.

Mathematica, 46 44 bytes

SequenceCases[#,NO 

alternativer:

SequenceCases[#,NO 
1 comments
Mr.Wizard 07/28/2017
Wow, det er bra!

Johan Karlsson 07/28/2017.

JavaScript (ES6), 42 39 35 byte

a=>a.map((n,i)=>a.splice(i+1,n))&&a 

 let f = 
a=>a.map((n,i)=>a.splice(i+1,n))&&a

console.log(f([]))                                                     // => []
console.log(f([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))                     // => [0, 1, 3, 7]
console.log(f([5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0]))                   // => [5, 2, 1, 0]
console.log(f([0, 1, 0, 2, 5, 1, 3, 1, 6, 2]))                         // => [0, 1, 2, 3]
console.log(f([4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2])) // => [4, 3, 3, 4]
console.log(f([0, 2, 0, 2, 4, 1, 2]))                                  // => [0, 2, 4] 

Gammel løsning 39 byte

a=>a.map(n=>i--||r.push(i=n),r=i=[])&&r 

-3 bytes thanks to @ThePirateBay

1 comments
ThePirateBay 07/28/2017
39 byte a=>a.map(n=>i--||r.push(i=n),r=i=[])&&r

TheLethalCoder 07/28/2017.

C #, 68 byte

 a=>{for(int i=0;i 

Prøv det på nettet!

Full / formatert versjon:

 namespace System
{
    class P
    {
        static void Main()
        {
            Action> f = a =>            {
                for (int i = 0; i < a.Count; i += a[i] + 1)
                    System.Console.Write(a[i] + " ");
            };

            f(new Collections.Generic.List() { });Console.WriteLine();
            f(new Collections.Generic.List() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });Console.WriteLine();
            f(new Collections.Generic.List() { 5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0 });Console.WriteLine();
            f(new Collections.Generic.List() { 0, 1, 0, 2, 5, 1, 3, 1, 6, 2 });Console.WriteLine();
            f(new Collections.Generic.List() { 4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2 });Console.WriteLine();
            f(new Collections.Generic.List() { 0, 2, 0, 2, 4, 1, 2 });Console.WriteLine();

            Console.ReadLine();
        }
    }
} 

Å returnere en liste er lengre på 107 byte.

 a=>{var l=new System.Collections.Generic.List();for(int i=0;i 
3 comments
2 TheLethalCoder 07/28/2017
Hvorfor har noen nedvurdert dette?
Thomas Ayoub 07/31/2017
Å runde poengsummen din og lage en perfekt 5k?
TheLethalCoder 07/31/2017
@ThomasAyoub Vi kan bare anta at det var noen med OCD ja.

Zgarb 07/28/2017.

Husk , 8 6 bytes

←TU¡Γ↓ 

Prøv det på nettet!

-2 byte (og en helt ny løsning ide) takket være Leo!

Forklaring

Jeg bruker Γ . Det tar en funksjon f og en liste med hodet x og halen xs , og gjelder f til x og xs . Hvis listen er tom, returnerer Γ en standardverdi som stemmer overens med sin type, i dette tilfellet en tom liste. Vi tar f til å være , som faller x elementer fra xs . Denne funksjonen blir deretter iterert og de resulterende elementene samles inn i en liste.

←TU¡Γ↓  Implicit input, e.g. [0,2,0,2,4,1,2]
    Γ↓  Pattern match using drop
   ¡    iterated infinitely: [[0,2,0,2,4,1,2],[2,0,2,4,1,2],[4,1,2],[],[],[],...
  U     Cut at first repeated value: [[0,2,0,2,4,1,2],[2,0,2,4,1,2],[4,1,2],[]]
 T      Transpose: [[0,2,4],[2,0,1],[0,2,2],[2,4],[4,1],[1,2],[2]]
←       First element: [0,2,4] 
5 comments
Leo 07/28/2017
Du kan slippe standardverdien til ø, og alt vil fortsatt fungere :)
Zgarb 07/28/2017
@Leo Oh wow, det er smart!
Erik the Outgolfer 07/28/2017
Hvorfor har du CW dette?
Zgarb 07/28/2017
@ErikTheOutgolfer Det var en feil (jeg er på telefonen min og tilsynelatende presset noe ved et uhell). Jeg prøver å angre det ...

Ruud 07/28/2017.

Python 2 , 59 55 bytes

 l=input()
i=0
while l[i:]:i+=1;l[i:i+l[i-1]]=[]
print l 

Prøv det på nettet!

2 comments
1 Rod 07/28/2017
Du kan bruke l[i:i+l[i-1]]=[] stedet del l[i:i+l[i-1]] å lagre en byte
1 ASCII-only 07/28/2017

Dave 07/28/2017.

Pyth, 22 Bytes

VQ aY.(Q0VeY .x.(Q0 ;Y 

Fjernet en ubrukelig byte

4 comments
Erik the Outgolfer 07/28/2017
Jeg ser 23 bytes der.
Dave 07/28/2017
Typo :) beklager ...
3 Wheat Wizard 07/28/2017
Jeg er ikke sikker på hvorfor du har en nedstemning. Det er en mulighet for at når du redigerte svaret ditt, utløste dette en "automatisk nedstemning". Årsakene til denne automatiske downvote er forvirrende og forferdelig, men det skjer hvis systemet anser ditt svar for å være "lav kvalitet" basert på det heuristics. Det er også mulig at noen ikke likte svaret ditt, men jeg ser ikke noe galt med det for øyeblikket, så jeg er ikke sikker på hvorfor det ville være tilfelle.
isaacg 07/31/2017
Jeg er glad for at du bruker Pyth!

Rod 07/28/2017.

Python 2 , 60 42 bytes

-18 byte takk til Luis Mendo

 x=input()
i=0
while 1:print x[i];i+=1+x[i] 

Prøv det på nettet!


Martin Ender 07/28/2017.

Retina , 36 bytes

Byte-tall antar ISO 8859-1-koding.

.+
$*
((1)*¶)(?<-2>1*¶)*
$1
%M`.
0$ 

Inngang og utgang er linefeed-separert med en etterfølgende linjefeed.

Prøv det på nettet! (Bruker kommaer i stedet for linefeeds for å tillate praktiske testpakker.)


Riley 07/28/2017.

Brain-Flak , 64 bytes

([]){{}(({})<>)<>{({}[()]<{}>)}{}([])}{}<>([]){{}({}<>)<>([])}<> 

Prøv det på nettet!

([]){{}                          ([])}{}                         # Until the stack is empty
       (({})<>)<>                                                # Copy TOS to off stack
                 {({}[()]<{}>)}{}                                # Pop TOS times
                                        <>([]){{}({}<>)<>([])}<> # Reverse off stack 
2 comments
6 DJMcMayhem 07/28/2017
Fy søren! Jeg skrev opp en løsning, og deretter rullet ned for å poste den, men det viser seg at vi skrev exact samme løsning byte-for-byte! Selv mindre detaljer som ({}[()]<{}>) vs ({}<{}>[()]) var de samme! For et sammentreff!
2EZ 4RTZ 07/28/2017
@DJMcMayhem stjeler all berømmelse XD

user202729 07/28/2017.

Mathematica, 64 50 bytes

±x_List:=Prepend[±Drop[x,1+#&@@x],#&@@x]
±_=±{}={} 
1 comments
Mr.Wizard 07/28/2017
Jeg kunne ikke motstå videre golf denne ryddige koden; Svaret mitt er under.

jkelm 07/28/2017.

C # (. NET Core) , 68 byte

 n=>{var t="";for(int i=0;i 

Prøv det på nettet!

Tar inn som en rekke integer, returnerer en streng som inneholder de ikke-hoppede verdiene.

3 comments
TheLethalCoder 07/28/2017
Fin måte å gjøre det på og kommer inn på samme telle som utskrift.
jkelm 07/28/2017
Jeg elsker de enkle løsningene. Likevel må jeg lære LINQ skjønt, som jeg har sett som forkorte så mange c # lambdas ..
TheLethalCoder 07/28/2017
Forkorter det fordi du kan implisitt returnere mesteparten av tiden. Selv om det er en kaste opp mellom implisitt retur med å using System.Linq; og en normal sløyfe.

Jarko Dubbeldam 07/28/2017.

R, 58 byte

f=function(x,p=1)NO 

Rekursiv funksjon. Tar en vektor x som argument og intiserer en peker p . Dette skriver den tilsvarende oppføringen av x , kontrollerer om p+x[p] vil gå ut av grensen, og hvis ikke, ringer funksjonen til den nye pekeren.

f=function(x,p=1,s=x[1])`if`((z<-x[p]+p+1)>sum(x|1),s,f(x,z,c(s,x[z]))) 

Dette er en sammenlignbar løsning som returnerer en riktig vektor i stedet for å skrive ut sifrene.

3 comments
Giuseppe 07/28/2017
Hva med en inntasting av numeric(0) ? aka tomt array.
Jarko Dubbeldam 07/28/2017
@Giuseppe Jeg tar en titt på det når jeg står bak min pc
Giuseppe 08/24/2017
57 byte! og det håndterer også den tomme saken.

Roman Gräf 07/28/2017.

Java (OpenJDK 8) , 53 byte

Takk til @ PunPun1000 og @TheLethalCoder

 a->{for(int n=0;;n+=1+a[n])System.out.println(a[n]);} 

Prøv det på nettet!

5 comments
TheLethalCoder 07/28/2017
Vil du skrive ut resultatene, som i mitt C # svar, redder du noe?
Roman Gräf 07/28/2017
@TheLethalCoder Ill prøve
TheLethalCoder 07/28/2017
Kan du lagre en byte ved å flytte n inn i løkken?
TheLethalCoder 07/28/2017
I tillegg ser dette ikke ut til å fungere for øyeblikket.
PunPun1000 07/28/2017
Du mangler en paren etter (a[n+=1+a[n]] . Funksjonen kaster også en feil etter å ha gitt riktig verdi, jeg vet ikke konsensus om dette er tillatt eller ikke (spørsmålet gjør si noe til standardfeil ignoreres.) Hvis det var meningen, da kan du fjerne n i n . Endelig løper ikke TIO-koden som den er, selv med paren. Funksjonen skal være en Consumer og bruk func.accept(test)

Martin Ender 07/28/2017.

Alice , 15 bytes

/$.. \h&
\I@nO/ 

Prøv det på nettet!

Inngang og utdata en linjefeedseparert liste over desimaltall.

Forklaring

/   Switch to Ordinal mode.
I   Read a line.
.   Duplicate it.
n   Logical NOT (gives truthy if we're at EOF).
/   Switch to Cardinal.
    The IP wraps around to the left.
\   Switch to Ordinal.
$@  Terminate the program if we're at EOF.
.   Duplicate the input line again.
O   Print it.
\   Switch to Cardinal.
h   Increment the value.
&   Store the result in the iterator queue.
    The program wraps around to the beginning. 

Lagring av et heltall n i iteratorkøen forårsaker at neste kommando blir utført n ganger. Speil som / er ikke kommandoer, så neste kommando blir I . Derfor, hvis vi bare leser og skriver ut en verdi x , leser vi x+1 verdier ved neste iterasjon, med den siste av dem som ender opp på toppen av stabelen. Dette hopper over de nødvendige nummerlisteelementene.


Mr.Wizard 07/28/2017.

Mathematica , 37 (30?)

Videre golf av user202729s fine metode.

±NO 

Reglene ser ikke ut til å spesifisere eksplisitt format, så kanskje:

±NO 

Output for den andre funksjonen ser ut som: 0.2.4.{} - spesielt {} blir fortsatt returnert for et tomt sett, i samsvar med den endelige regelen.

2 comments
1 JungHwan Min 07/28/2017
±Drop[NO kan være ±NO fordi ± har lavere prioritet enn Infix .
Mr.Wizard 07/28/2017
@JungHwanMin jeg savnet det; Takk!

Jenny_mathy 07/28/2017.

Mathematica, 65 bytes

(s=#;t=1;w={};While[t<=Length@s,AppendTo[w,k=s[[t]]];t=t+k+1];w)& 

Prøv det på nettet!


w0lf 07/28/2017.

Ruby, 36 33 31

f=->l{a,*l=l;a&&f[l.drop(p a)]} 

Prøv det på nettet.

4 comments
sethrin 07/30/2017
Du har lov til å trekke f= som et headerelement.
w0lf 07/30/2017
@sethrin Selv om jeg trenger å ringe det rekursivt?
sethrin 07/30/2017
Hmm, bra spørsmål. Jeg antar det ikke. Jeg gjorde veldig mye om løsningen din, forresten.
w0lf 07/30/2017
@sethrin takk! :)

AnonymousReality 07/28/2017.

Swift, 63 bytes

func a(d:[Int]){var i=0;while i 

Dette er min første oppføring, noensinne, så jeg er ikke 100% sikker på reglene, men forhåpentligvis er dette svaret nok. Jeg er litt usikker på regler om hvordan du får innspill i et system. Jeg har et kortere svar hvis jeg fikk lov til å anta en funksjon et sted som kan returnere inngangen.

2 comments
Stephen 07/28/2017
Velkommen til PPCG! Standardreglene er at du enten kan ha kode som fungerer som et fullt program, så input (vanligvis) i STDIN og output (vanligvis) til STDOUT, or en funksjon, så input (vanligvis) fra funksjonsparametere og utdata (vanligvis) fra funksjon avkastning.
AnonymousReality 07/28/2017
@StepHen - takk! Jeg antar at den andre versjonen min blir ugyldig da. Ser frem til å bidra mer!

Perl 6 , 31 byte

 {(@_,{.[1+.[0]..*]}...^0)[*;0]} 

Test det

Utvidet:

 {  # bare block lambda with implicit parameter 「@_」
  (
    # generate a sequence

    @_,

    {
      .[ # index into previous value in the sequence
        1 + .[0]  # start by skipping one plus the first element
                  # of the previous value in the sequence
        ..  *     # use that to create a Range with no end
      ]
    }

    ...^  # keep doing that until: (and throw away last value)
    0     # it generates an empty list

  )[ *; 0 ]  # from every value in the sequence, get the first element
} 

For å forstå hvordan koden fungerer, uten [*;0] dette generere en sekvens som følgende:

 [0, 1, 0, 2, 5, 1, 3, 1, 6, 2],
   (1, 0, 2, 5, 1, 3, 1, 6, 2),
         (2, 5, 1, 3, 1, 6, 2),
                  (3, 1, 6, 2) 

Renzo 07/29/2017.

Vanlig Lisp, 51 byte

(do((x(read)(nthcdr(1+(print(car x)))x)))((not x))) 

Prøv det på nettet!


C ++ (gcc), 172 byte

#includeint main(){std::istream& i=std::cin;char c;int a,b;while(i>>c&&i>>a){std::cout<>c&&i>>b);}std::cout< 

Prøv det på nettet

Den forferdelige (c/91?"":" ") Er for riktig avstand i utgang. Uten den (-15 bytes) -utgangen er i form: [0,2,4] , når jeg bytter den til enkel " " (-9 bytes), er utdata som [ 0, 2, 4] (ekstra plass i begynnelsen) .

<<(c/93?"":"]") på slutten er kun for å håndtere [] tomme inngangshjørne

Skriver ut ingen bakre endelinje.

1 comments
Erik the Outgolfer 07/30/2017
Du kan også skrive ut tallene atskilt med en ikke-siffer-separator, ikke behov for [] og du kan ha tom utgang for kanten og ikke behov for (c/91?"":" ") . Du trenger ikke å matche formatet på eksemplene i utfordringen.

Jonathan Allan 07/29/2017.

Gelé , 8 byte

ḢṄ‘ṫ@µL¿ 

Et fullt program skriver ut resultatene hver etterfulgt av en ny linje (tom liste gir ingen utgang).

Try it online!

Hvordan?

ḢṄ‘ṫ@µL¿ - Main link: list of non-negative integers  e.g. [2,5,4,0,1,2,0]
       ¿ - while:           Iteration:  1                  2             3          4        5
      L  -   length (0 is falsey)       7                  4             3          1        0
     µ   - ...do:                                                                            stop
Ḣ        -   head (pop & modify)        2 ([5,4,0,1,2,0])  0 ([1,2,0])   1 ([2,0])  0 ([0])
 Ṅ       -   print it (and yield it)   "2\n"              "0\n"         "1\n"      "0\n"
  ‘      -   increment                  3                  1             2          1
   ṫ@    -   tail from index            [0,1,2,0]          [1,2,0]      [0]         []
         -
         -                       i.e. a resulting in the printing of: '''2
                                                                         0
                                                                         1
                                                                         0
                                                                         ''' 
2 comments
Erik the Outgolfer 07/30/2017
Endelig et gelé svar! BTW Jeg kan gjøre det i 7 byte.
Erik the Outgolfer 07/30/2017
Og jeg har også en liste-returfunksjon i 18 byte.

Evpok 07/30/2017.

Python 3 , 35 bytes

 f=lambda h=0,*t:t and[h,*f(*t[h:])] 

Prøv det på nettet!

Kjør det med f(*l) hvor l er din inngang. Utvilsomt strekker reglene for innspill, men jeg elsker bare avansert utpakking.


cliffroot 07/28/2017.

Clojure, 67 bytes

#(nth(reduce(fn[[z k]b](if(= z 0)[b(conj k b)][(- z 1)k]))[0[]]%)1) 

Starter med de innledende parametrene [0 []] , hvor 0 er telleren og [] er resultatet. Hvis det første elementet i denne listen er 0 legger element n fra argumentet til resultatet og går videre denne listen [n [... n]] ellers reduserer det første elementet. (denne forklaringen føles fryktelig for meg)

Se den på nettet


Dead Possum 07/28/2017.

Python 2,4, 85 byte

Ingen sjanse til å vinne i python med det, men jeg elsker onelinere og denne kan være interessant for andre.
Viser seg, det er et fancy magisk knep for å få tilgang til byggelisten i forståelse, men den fungerer bare i 2.4 og med noen endringer i <= 2.3
locals()['_[1]'] det er. Python lager hemmelig navn _[1] for liste, mens det er opprettet og lagret det i locals . Også navnene _[2] , _[3] ... brukes til nestede lister.

lambda n:[j for i,j in enumerate(n)if i==len(locals()['_[1]'])+sum(locals()['_[1]'])] 

Så det teller antall allerede tilførte elementer pluss summen deres. Resultat er indeksen for neste ønsket element.
Jeg tror at det bør være en måte å unngå å oppsummere. Liker å få tilgang til inngangs array direkte etter indeks: [ n[len(locals()['_[1]'])+sum(locals()['_[1]'])] for ... ] . Men jeg kan ikke finne ut en kompakt måte å beskytte den mot indeks-out-of-range (mens du holder den oneliner)

skriv inn bildebeskrivelse her


Neil 07/28/2017.

Batch, 69 byte

:l
@if not "%1"=="" echo %1&(for /l %%i in (0,1,%1)do @shift)&goto l 

(Jeg trenger () s rundt for ellers skjer goto inne i løkken.)


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