Salta come un coniglio!

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

Dato un elenco di numeri interi non negativi in ​​qualsiasi formato ragionevole, iterate su di esso, saltando così tanti elementi come ogni numero intero che passi.


Ecco un esempio lavorato:

[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 

Un altro esempio lavorato, non così tutti uguali-delti:

[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 

Un esempio di out-of-bounds:

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

Regole

  • Non si può usare alcun truffatore noioso tra questi , rendono la sfida noiosa e poco interessante.
  • È sufficiente restituire / stampare il risultato finale. L'uscita STDERR viene ignorata.
  • Non è possibile ottenere l'input come una stringa di cifre in qualsiasi base (ad esempio "0102513162" per il primo caso).
  • È necessario utilizzare l'ordine di ingresso sinistro per destra.
  • Come negli esempi funzionati, se si esce dai limiti, l'esecuzione termina come altrimenti.
  • Devi utilizzare 0 per ignorare 0 elementi.
  • Dato l'elenco vuoto ( [] ) come input, dovresti tornare [] .

Casi test

[]                                                     => []
[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] 

Questo è il , quindi la risposta più breve vince!

5 Comments
Erik the Outgolfer 07/28/2017
Sandbox (solo 2k + utenti)
3 Shaggy 07/28/2017
Sì, l'ho appena visto. / mette gli occhiali
2 Rod 07/28/2017
Probabilmente un leprechaun ¯ \ _ (ツ) _ / ¯
1 Roman Gräf 07/28/2017
È opportuno avere degli zeri in ritardo nella mia matrice? mi salverebbe ~ 18 byte
1 Erik the Outgolfer 07/28/2017
@ RomanGräf Mi dispiace ma no, che sarebbe troppo ambiguo poiché ci sono casi che dovreste trascinare 0 s nell'output.

30 Answers


Rod 07/28/2017.

Python 2 , 36 byte

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

Prova online!

4 comments
Mr. Xcoder 07/28/2017
Mi aspettavo di uscire, ma non così male :)
Erik the Outgolfer 07/28/2017
Non si può fare x[0] invece di x[:1] ?
Rod 07/28/2017
@EriktheOutgolfer sì, ma deve essere una lista, quindi sarebbe [x[0]]
Erik the Outgolfer 07/28/2017
@Rod Non state salvando alcun byte con x[:1] comunque ... f=lambda x:x and[x[0]]+f(x[x[0]+1:])

Mr. Xcoder 08/19/2017.

Python 2 , 49 46 * 41 byte

Crossed out 4 è ancora regolare 4 :(

* -3 thanks to @ASCII-only .

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

Prova online!

Stampa i risultati separati da una nuova riga, come OP è consentito in chat. Non credo che possa diventare più breve come un non-recursive full program .


Come funziona?

  • l=input() - Legge l'elenco dall'ingresso standard.

  • while l: - Abusisce il fatto che gli elenchi vuoti siano falsamente in Python, cicli fino a quando l'elenco è vuoto.

  • print l[0]; - Stampa il primo elemento dell'elenco.

  • l=l[l[0]+1:] - "Skips come un coniglio" - Trims il primo l[0]+1 dall'elenco.

Prendiamo un esempio

Dato l'elenco [5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0] come input, il codice esegue le seguenti operazioni (secondo la spiegazione sopra riportata) - Stampa il primo elemento array: 5 , taglia i primi 6: [2, 1, 2, 1, 0, 0] . Quindi stampare 2 e tagliare i primi 3: [1,0,0] . Allo stesso modo, produciamo 1 , tagliamo i primi 2 e otteniamo [0] . Naturalmente, viene stampato 0 e il programma termina.

1 comments

w0lf 07/28/2017.

Haskell, 29 27 26 byte

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

Salvato 1 byte grazie a Zgarb.

Prova online.

2 comments
Zgarb 07/28/2017
f x=x sulla seconda riga salva un byte.
w0lf 07/28/2017
@Zgarb Cool, grazie!

Adnan 07/28/2017.

05AB1E , 10 9 byte

[¬Dg>#=ƒ¦ 

Utilizza la codifica 05AB1E . Prova online!

1 comments
Magic Octopus Urn 07/28/2017
Già, è così meglio di quello che stavo pensando.

Martin Ender 07/28/2017.

Mathematica, 46 44 byte

SequenceCases[#,NO 

alternative:

SequenceCases[#,NO 
1 comments
Mr.Wizard 07/28/2017
Wow e 'grandioso!

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] 

Vecchia soluzione 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 

Prova online!

Versione completa / formatta:

 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();
        }
    }
} 

Il ritorno di un elenco è più lungo a 107 byte.

 a=>{var l=new System.Collections.Generic.List();for(int i=0;i 
3 comments
2 TheLethalCoder 07/28/2017
Perché qualcuno ha sottovalutato questo?
Thomas Ayoub 07/31/2017
Per aggirare il tuo punteggio e fare un perfetto 5k?
TheLethalCoder 07/31/2017
@ThomasAyoub Possiamo solo supporre che sia stato qualcuno con OCD sì.

Zgarb 07/28/2017.

Husk , 8 6 byte

←TU¡Γ↓ 

Prova online!

-2 byte (e un'idea completamente nuova) grazie a Leo!

Spiegazione

Sto utilizzando la funzione di corrispondenza del modello di lista Γ . Richiede una funzione f e un elenco con testa x e coda xs e applica f a x e xs . Se l'elenco è vuoto, Γ restituisce un valore predefinito coerente con il suo tipo, in questo caso un elenco vuoto. Prendiamo f per essere , che scende x elementi da xs . Questa funzione viene quindi ripetuta e gli elementi risultanti vengono raccolti in un elenco.

←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
È possibile abbandonare il valore predefinito di ø, e tutto funzionerà ancora magicamente :)
Zgarb 07/28/2017
@Leo Oh wow, è intelligente!
Erik the Outgolfer 07/28/2017
Perché hai fatto questo?
Zgarb 07/28/2017
@ErikTheOutgolfer Questo è stato un errore (io sono sul mio telefono e apparentemente spinto qualcosa per caso). Sto cercando di annullarlo ...

Ruud 07/28/2017.

Python 2 , 59 55 byte

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

Prova online!

2 comments
1 Rod 07/28/2017
È possibile utilizzare l[i:i+l[i-1]]=[] invece di del l[i:i+l[i-1]] per salvare un byte
1 ASCII-only 07/28/2017

Dave 07/28/2017.

Pyth, 22 byte

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

Rimosso un inutile byte

4 comments
Erik the Outgolfer 07/28/2017
Vedo 23 byte lì.
Dave 07/28/2017
Typo :) mi dispiace ...
3 Wheat Wizard 07/28/2017
Non so perché tu abbia un voto negativo. C'è una possibilità che quando si editato la correzione della tua risposta, questo innesca un "voto automatico in discesa". Le ragioni di questo downvote automatico sono confuse e terribili, ma succede se il sistema ritiene che la tua risposta sia "bassa qualità" basata su di essa euristica. È anche possibile che qualcuno non ti piace la tua risposta, ma al momento non vedo niente di sbagliato, quindi non so perché questo sarebbe il caso.
isaacg 07/31/2017
Sono contento che stai utilizzando Pyth!

Rod 07/28/2017.

Python 2 , 60 42 byte

-18 byte grazie a Luis Mendo

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

Prova online!


Martin Ender 07/28/2017.

Retina , 36 byte

Il numero di byte assume la codifica ISO 8859-1.

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

L'ingresso e l'uscita sono separati da linefeed con un tracciato di traino.

Prova online! (Utilizza virgole invece di linefeeds per consentire comodi suite di test.)


Riley 07/28/2017.

Brain-Flak , 64 byte

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

Prova online!

([]){{}                          ([])}{}                         # Until the stack is empty
       (({})<>)<>                                                # Copy TOS to off stack
                 {({}[()]<{}>)}{}                                # Pop TOS times
                                        <>([]){{}({}<>)<>([])}<> # Reverse off stack 
2 comments
6 DJMcMayhem 07/28/2017
Cagna santa! Ho scritto una soluzione e poi scorciatoi per pubblicarlo, ma risulta che abbiamo scritto la stessa soluzione byte-by-byte! Anche piccoli dettagli come ({}[()]<{}>) vs ({}<{}>[()]) erano uguali! Che coincidenza!
2EZ 4RTZ 07/28/2017
@DJMcMayhem rubando tutta la fama XD

user202729 07/28/2017.

Mathematica, 64 50 byte

±x_List:=Prepend[±Drop[x,1+#&@@x],#&@@x]
±_=±{}={} 
1 comments
Mr.Wizard 07/28/2017
Non ho potuto resistere ulteriormente a giocare a questo codice; la mia risposta è sotto.

jkelm 07/28/2017.

C # (.NET Core) , 68 byte

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

Prova online!

Viene inserito come un array di interi, restituisce una stringa contenente i valori non saltati.

3 comments
TheLethalCoder 07/28/2017
È un modo piacevole per farlo e entra nello stesso conteggio della stampa.
jkelm 07/28/2017
Amo le soluzioni semplici. Devo ancora imparare LINQ però, come ho visto che accorciare tanti c # lambdas ..
TheLethalCoder 07/28/2017
Lo abbrevia perché puoi rimettere implicito la maggior parte del tempo. Anche se è un using System.Linq; tra il ritorno implicito con l' using System.Linq; e un ciclo normale.

Jarko Dubbeldam 07/28/2017.

R, 58 byte

f=function(x,p=1)NO 

Funzione ricorsiva. Prende un vettore x come argomento e inizia un puntatore p . Questo stampa l'entrata corrispondente di x , controlla se p+x[p] andrebbe fuori dai limiti e, se no, chiama la funzione per il nuovo puntatore.

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]))) 

Questa è una soluzione comparabile che restituisce un vettore corretto invece di stampare le cifre.

3 comments
Giuseppe 07/28/2017
cosa su un input di numeric(0) ? aka vuoto array.
Jarko Dubbeldam 07/28/2017
@Giuseppe Lo vedo quando mi trovo dietro il mio pc
Giuseppe 08/24/2017
57 byte! e gestisce anche il caso vuoto.

Roman Gräf 07/28/2017.

Java (OpenJDK 8) , 53 byte

Grazie a @ PunPun1000 e @TheLethalCoder

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

Prova online!

5 comments
TheLethalCoder 07/28/2017
La stampa dei risultati, come nella mia risposta C #, ti salverà niente?
Roman Gräf 07/28/2017
@TheLethalCoder Ill try
TheLethalCoder 07/28/2017
Puoi salvare un byte muovendolo nel loop?
TheLethalCoder 07/28/2017
Inoltre, questo non sembra funzionare al momento.
PunPun1000 07/28/2017
Le funzioni mancano di un paren dopo che (a[n+=1+a[n]] Funzione genera anche un errore dopo aver emesso il valore corretto, non conosco il concetto su se è consentito o no (la domanda fa dire che qualsiasi errore standard è ignorato.) Se questo fosse l'intenzione, allora puoi rimuovere la n nel for lo loop, infine il codice TIO non funziona come lo è, anche con il paren. un Consumer e utilizzare func.accept(test)

Martin Ender 07/28/2017.

Alice , 15 byte

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

Prova online!

Inserisci ed esegue un elenco di interi decimali separati da linefeed.

Spiegazione

/   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. 

Memorizzazione di un intero n nella coda iteratore provoca l'esecuzione del comando successivo n volte. Gli specchi come / non sono comandi, quindi il comando successivo sarà I Pertanto, se abbiamo appena letto e stampato un valore x , leggiamo i valori x+1 sulla successiva iterazione, con l'ultima che finisce in cima alla pila. Questo ignora gli elementi della lista di numeri richiesti.


Mr.Wizard 07/28/2017.

Mathematica , 37 anni (30 anni)

Ulteriore golf del metodo fine del user202729.

±NO 

Le regole non sembrano esplicitamente specificare il formato di output, quindi forse:

±NO 

L'output per la seconda funzione sembra: 0.2.4.{} - notably {} viene restituito per un set vuoto, conformandosi alla regola finale.

2 comments
1 JungHwan Min 07/28/2017
±Drop[NO può essere ±NO perché ± ha una precedenza inferiore rispetto a Infix .
Mr.Wizard 07/28/2017
@JungHwanMin Ho perso questo; Grazie!

Jenny_mathy 07/28/2017.

Mathematica, 65 byte

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

Prova online!


w0lf 07/28/2017.

Rubino, 36 33 31

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

Prova online.

4 comments
sethrin 07/30/2017
È consentito di sottrarre il f= come elemento di intestazione.
w0lf 07/30/2017
@sethrin Anche se devo chiamarlo recursivamente?
sethrin 07/30/2017
Hmm, buona domanda. Suppongo no. Mi è piaciuto molto la tua soluzione, a proposito.
w0lf 07/30/2017
@sethrin Grazie! :)

AnonymousReality 07/28/2017.

Swift, 63 byte

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

Questa è la mia prima voce, mai, quindi non sono sicuro al 100% delle regole, ma spero che questa risposta sia sufficiente. Sono un po 'incerto delle regole su come ottenere l'input in un sistema. Ho una risposta più corta se mi è stato permesso di assumere una funzione da qualche parte che possa restituire l'input.

2 comments
Stephen 07/28/2017
Benvenuti in PPCG! Le regole predefinite sono che possiate avere un codice che funziona come un programma completo, quindi entri (di solito) in STDIN e uscite (di solito) a STDOUT or una funzione, quindi immettere (di solito) dai parametri di funzione e dall'uscita (di solito) funzione di ritorno.
AnonymousReality 07/28/2017
@StepHen - grazie! Suppongo che la mia altra versione non sia valida allora. In attesa di contribuire di più!

Perl 6 , 31 byte

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

Provalo

Allargato:

 {  # 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
} 

Per aiutare a capire come funziona il codice, senza [*;0] questo genererebbe una sequenza come quella seguente:

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

Common Lisp, 51 byte

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

Prova online!


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< 

Prova online

Il terribile (c/91?"":" ") È per la spaziatura corretta dell'uscita. Senza di essa (-15 byte) l'output è in forma: [0,2,4] , quando lo cambio a " " (-9 bytes) semplice è come [ 0, 2, 4] (spazio aggiuntivo all'inizio) .

<<(c/93?"":"]") alla fine è solo per gestire [] l'angolo di ingresso vuoto

Non stampa alcuna traccia finale.

1 comments
Erik the Outgolfer 07/30/2017
È inoltre possibile stampare i numeri separati da un separatore a cifre, senza bisogno di [] e potete avere l'output vuoto per quel bordo e non è necessario (c/91?"":" ") . Non è necessario abbinare il formato degli esempi nella sfida.

Jonathan Allan 07/29/2017.

Gelatina , 8 byte

ḢṄ‘ṫ@µL¿ 

Un programma completo che stampa i risultati seguiti da una nuova riga (la lista vuota non produce nessuna uscita).

Try it online!

Come?

ḢṄ‘ṫ@µ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
Finalmente una risposta Jelly! BTW posso farlo in 7 byte.
Erik the Outgolfer 07/30/2017
E ho anche una funzione di restituzione di liste in 18 byte.

Evpok 07/30/2017.

Python 3 , 35 byte

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

Prova online!

Esegui con f(*l) dove l è il tuo input. Probabilmente allungando le regole per l'input, ma amo solo l'espansione avanzata.


cliffroot 07/28/2017.

Clojure, 67 byte

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

Inizia con i parametri iniziali [0 []] , dove 0 è il contatore e [] è il risultato. Se il primo elemento di questo elenco è 0 aggiunge l'elemento n dall'argomento al risultato e passa ulteriormente questo elenco [n [... n]] altrimenti diminuisce il primo elemento. (questa spiegazione mi sembra orribile)

Vedere online


Dead Possum 07/28/2017.

Python 2.4, 85 byte

Non c'è possibilità di vincere in python con esso, ma amo gli oneliners e questo potrebbe essere interessante per gli altri.
Si scopre che c'è un trucco magico fantasioso per accedere all'elenco delle costruzioni all'interno della comprensione, ma funziona solo in 2.4 e con alcune modifiche in <= 2.3
locals()['_[1]'] è. Python crea un nome segreto _[1] per l'elenco, mentre viene creato e memorizzato in locals . Anche nomi _[2] , _[3] ... vengono utilizzati per elenchi nidificati.

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

Quindi conta il numero di elementi già aggiunti e la loro somma. Il risultato è l'indice dell'elemento desiderato successivo.
Penso che ci sia un modo per evitare di enumerare. Come accedere alla matrice di input direttamente per indice: [ n[len(locals()['_[1]'])+sum(locals()['_[1]'])] for ... ] . Ma non riesco a capire un modo compatto per proteggerlo dall'indice fuori gamma (pur mantenendolo oneliner)

immettere qui la descrizione dell'immagine


Neil 07/28/2017.

Batch, 69 byte

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

(Ho bisogno del () s intorno alla for altrimenti il goto accade all'interno del loop.)


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 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
5 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
6 BTS

Waste It On Me flac

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

Kiss And Make Up flac

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

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
9 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
10 Fitz And The Tantrums

HandClap flac

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

Told You So flac

Little Mix. 2018. Writer: Eyelar;MNEK;Raye.
12 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
13 Cher Lloyd

None Of My Business flac

Cher Lloyd. 2018. Writer: ​iamBADDLUCK;Alexsej Vlasenko;Kate Morgan;Henrik Meinke;Jonas Kalisch;Jeremy Chacon.
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 Ashley Tisdale

Voices In My Head flac

Ashley Tisdale. 2018. Writer: John Feldmann;Ashley Tisdale.
17 Imagine Dragons

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
18 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
19 Billie Eilish

When The Party's Over flac

Billie Eilish. 2018. Writer: Billie Eilish;FINNEAS.
20 Little Mix

Woman Like Me flac

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

Related questions

Hot questions

Language

Popular Tags