Überspringe wie ein Hase!

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

Wenn Sie eine Liste nicht negativer Ganzzahlen in einem sinnvollen Format angeben, durchlaufen Sie sie und überspringen Sie so viele Elemente wie jede Ganzzahl, die Sie gerade ausführen.


Hier ist ein bearbeitetes Beispiel:

[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 

Ein anderes funktionierendes Beispiel, nicht so all-equal-deltas:

[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 

Ein Out-of-Bound-Beispiel:

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

Regeln

  • Sie dürfen keinen langweiligen Betrüger unter diesen verwenden , sie machen die Herausforderung langweilig und uninteressant.
  • Sie sollten nur das Endergebnis zurückgeben / drucken. STDERR-Ausgabe wird ignoriert.
  • Sie erhalten die Eingabe möglicherweise nicht als Ziffernfolge in einer Basis (z. B. "0102513162" für den ersten Fall).
  • Sie müssen die Reihenfolge von links nach rechts für die Eingabe verwenden.
  • Wie in den bearbeiteten Beispielen endet die Ausführung, wenn Sie sich außerhalb der Grenzen befinden, als ob andernfalls.
  • Sie sollten 0 zum Überspringen von 0 Elementen verwenden.
  • Gegeben die leere Liste ( [] ) als Eingabe, sollten Sie [] .

Testfälle

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

Das ist , also gewinnt die kürzeste Antwort!

5 Comments
Erik the Outgolfer 07/28/2017
Sandbox (nur 2k + Nutzer)
3 Shaggy 07/28/2017
Ja, habe es gerade gesehen. setzt eine Brille auf
2 Rod 07/28/2017
Wahrscheinlich ein Kobold ¯ \ _ (ツ) _ / ¯
1 Roman Gräf 07/28/2017
Ist es in Ordnung, nachgestellte Nullen in meinem Array zu haben? würde mich retten ~ 18 Bytes
1 Erik the Outgolfer 07/28/2017
@RomanGräf Sorry aber nein, das wäre zu vieldeutig da es Fälle geben sollte, die in der Ausgabe nach 0 s enden sollten.

30 Answers


Rod 07/28/2017.

Python 2 , 36 Bytes

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

Probieren Sie es online aus!

4 comments
Mr. Xcoder 07/28/2017
Ich hatte erwartet, dass ich aussteigen würde, aber nicht so schlimm :)
Erik the Outgolfer 07/28/2017
Kannst du nicht x[0] statt x[:1] ?
Rod 07/28/2017
@EriktheOutgolfer ja, aber es muss eine Liste sein, also wäre es [x[0]]
Erik the Outgolfer 07/28/2017
@Rod Sie speichern keine Bytes mit x[:1] anyways ... f=lambda x:x and[x[0]]+f(x[x[0]+1:])

Mr. Xcoder 08/19/2017.

Python 2 , 49 46 * 41 Bytes

Gekreuzt 4 ist immer noch normal 4 :(

* -3 thanks to @ASCII-only .

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

Probieren Sie es online aus!

Gibt die Ergebnisse getrennt durch einen Zeilenumbruch aus, wie das OP im Chat erlaubt. Ich denke nicht, dass es als non-recursive full program kürzer werden kann.


Wie funktioniert das?

  • l=input() - Liest die Liste von der Standardeingabe.

  • while l: - Missbraucht die Tatsache, dass leere Listen in Python falsch sind, Schleifen, bis die Liste leer ist.

  • print l[0]; - Druckt das erste Element der Liste.

  • l=l[l[0]+1:] - "Springt wie ein Hase" - Schneidet die ersten l[0]+1 aus der Liste.

Nehmen wir ein Beispiel

Wenn die Liste [5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0] eingegeben wird, führt der Code (gemäß der obigen Erklärung) Folgendes aus: - Druckt das erste Element des Array: 5 , trimmen Sie die erste 6: [2, 1, 2, 1, 0, 0] . Wir drucken dann 2 und trimmen die erste 3: [1,0,0] . Genauso geben wir 1 , schneiden die ersten 2 und wir erhalten [0] . Natürlich wird 0 gedruckt und das Programm endet.

1 comments

w0lf 07/28/2017.

Haskell, 29 27 26 Bytes

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

Gespeichert 1 Byte dank Zgarb.

Probieren Sie es online aus.

2 comments
Zgarb 07/28/2017
f x=x in der zweiten Zeile speichert ein Byte.
w0lf 07/28/2017
@ Zgarb Cool, danke!

Adnan 07/28/2017.

05AB1E , 10 9 Bytes

[¬Dg>#=ƒ¦ 

Verwendet die 05AB1E Codierung. Probieren Sie es online aus!

1 comments
Magic Octopus Urn 07/28/2017
Ja, das ist viel besser als das, was ich dachte.

Martin Ender 07/28/2017.

Mathematica, 46 44 Bytes

SequenceCases[#,NO 

Alternativen:

SequenceCases[#,NO 
1 comments
Mr.Wizard 07/28/2017
Wow! Das ist toll!

Johan Karlsson 07/28/2017.

JavaScript (ES6), 42 39 35 Bytes

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] 

Alte Lösung 39 Bytes

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

-3 bytes thanks to @ThePirateBay

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

TheLethalCoder 07/28/2017.

C #, 68 Bytes

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

Probieren Sie es online aus!

Voll / Formatierte Version:

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

Das Zurückgeben einer Liste ist länger bei 107 Bytes.

 a=>{var l=new System.Collections.Generic.List();for(int i=0;i 
3 comments
2 TheLethalCoder 07/28/2017
Warum hat jemand das abgelehnt?
Thomas Ayoub 07/31/2017
Um deine Punktzahl zu runden und ein perfektes 5k zu machen?
TheLethalCoder 07/31/2017
@ThomasAyoub Wir können nur annehmen, es war jemand mit OCD ja.

Zgarb 07/28/2017.

Husk , 8 6 Bytes

←TU¡Γ↓ 

Probieren Sie es online aus!

-2 Byte (und eine komplett neue Lösungsidee) dank Leo!

Erläuterung

Ich verwende die Listenmuster-Vergleichsfunktion Γ . Es nimmt eine Funktion f und eine Liste mit Kopf x und Schwanz xs und wendet f auf x und xs . Wenn die Liste leer ist, gibt a einen Standardwert zurück, der mit seinem Typ übereinstimmt, in diesem Fall eine leere Liste. Wir nehmen f , um , was x Elemente von xs . Diese Funktion wird dann iteriert und die resultierenden Elemente werden in einer Liste gesammelt.

←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
Sie können den Standardwert von ø löschen, und alles wird immer noch magisch funktionieren :)
Leo 07/28/2017
Zgarb 07/28/2017
@Leo Oh wow, das ist schlau!
Erik the Outgolfer 07/28/2017
Warum hast du das CW?
Zgarb 07/28/2017
@ErikTheOutgolfer Das war ein Fehler (ich bin auf meinem Handy und habe scheinbar etwas aus Versehen geschoben). Ich versuche es rückgängig zu machen ...

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 

Probieren Sie es online aus!

2 comments
1 Rod 07/28/2017
Sie können l[i:i+l[i-1]]=[] anstelle von del l[i:i+l[i-1]] , um ein Byte zu speichern
1 ASCII-only 07/28/2017

Dave 07/28/2017.

Pyth, 22 Bytes

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

Ein nutzloses Byte wurde entfernt

4 comments
Erik the Outgolfer 07/28/2017
Ich sehe 23 Bytes dort.
Dave 07/28/2017
Tippfehler :) Entschuldigung ...
3 Wheat Wizard 07/28/2017
Ich bin mir nicht sicher, warum Sie eine Down-Abstimmung haben. Es besteht die Möglichkeit, dass Sie beim Bearbeiten Ihrer Antwort eine "automatische Abwahl" ausgelöst haben. Die Gründe für diesen automatischen Downvote sind verwirrend und schrecklich, aber es passiert, wenn das System Ihre Antwort aufgrund der Heuristik als "geringe Qualität" ansieht. Es ist auch möglich, dass jemand deine Antwort nicht mochte, aber ich sehe im Moment nichts falsch damit, also bin ich mir nicht sicher warum das der Fall ist.
isaacg 07/31/2017
Ich bin froh, dass du Pyth benutzt!

Rod 07/28/2017.

Python 2 , 60 42 Bytes

-18 Bytes dank Luis Mendo

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

Probieren Sie es online aus!


Martin Ender 07/28/2017.

Netzhaut , 36 Bytes

Die Bytezählung setzt die Codierung nach ISO 8859-1 voraus.

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

Eingang und Ausgang werden durch Zeilenvorschub getrennt.

Probieren Sie es online aus! (Verwendet Kommas anstelle von Zeilenvorschub, um bequeme Testsuiten zu ermöglichen.)


Riley 07/28/2017.

Gehirn-Flak , 64 Bytes

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

Probieren Sie es online aus!

([]){{}                          ([])}{}                         # Until the stack is empty
       (({})<>)<>                                                # Copy TOS to off stack
                 {({}[()]<{}>)}{}                                # Pop TOS times
                                        <>([]){{}({}<>)<>([])}<> # Reverse off stack 
2 comments
6 DJMcMayhem 07/28/2017
Heiliger Strohsack! Ich schrieb eine Lösung auf und scrollte dann nach unten, um sie zu posten, aber es stellte sich heraus, dass wir exact dieselbe Lösung byteweise geschrieben hatten! Selbst kleine Details wie ({}[()]<{}>) vs ({}<{}>[()]) waren gleich! Was für ein Zufall!
2EZ 4RTZ 07/28/2017
@DJMcMayhem stiehlt all die Ruhm XD

user202729 07/28/2017.

Mathematica, 64 50 Bytes

±x_List:=Prepend[±Drop[x,1+#&@@x],#&@@x]
±_=±{}={} 
1 comments
Mr.Wizard 07/28/2017
Ich konnte nicht widerstehen, diesen ordentlichen Code weiter zu spielen; Meine Antwort ist unten.

jkelm 07/28/2017.

C # (.NET Core) , 68 Byte

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

Probieren Sie es online aus!

Nimmt die Eingabe als ein Array von Ganzzahlen entgegen und gibt eine Zeichenfolge zurück, die die nicht übersprungenen Werte enthält.

3 comments
TheLethalCoder 07/28/2017
Schöne Art, es zu tun und kommt in der gleichen Anzahl wie beim Drucken.
jkelm 07/28/2017
Ich liebe die einfachen Lösungen. Ich muss immer noch LINQ lernen, wie ich gesehen habe, dass so viele c # lambdas gekürzt werden.
TheLethalCoder 07/28/2017
Verkürzt es, weil Sie die meiste Zeit implizit zurückkehren können. Obwohl es eine implizite Rückkehr mit using System.Linq; und eine normale Schleife.

Jarko Dubbeldam 07/28/2017.

R, 58 Bytes

f=function(x,p=1)NO 

Rekursive Funktion. Nimmt einen Vektor x als Argument und initiiert einen Zeiger p . Dies gibt den entsprechenden Eintrag von x , prüft, ob p+x[p] außerhalb der Grenzen liegt, und ruft andernfalls die Funktion für den neuen Zeiger auf.

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

Dies ist eine vergleichbare Lösung, die einen richtigen Vektor zurückgibt, anstatt die Ziffern zu drucken.

3 comments
Giuseppe 07/28/2017
Was ist mit einer Eingabe von numeric(0) ? aka leeres Array.
Jarko Dubbeldam 07/28/2017
@Giuseppe Ich werde es mir ansehen, wenn ich hinter meinem PC bin
Giuseppe 08/24/2017
57 Bytes! und es behandelt auch den leeren Fall.

Roman Gräf 07/28/2017.

Java (OpenJDK 8) , 53 Bytes

Danke an @ PunPun1000 und @TheLethalCoder

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

Probieren Sie es online aus!

5 comments
TheLethalCoder 07/28/2017
Würde das Drucken der Ergebnisse, wie in meiner C # -Antwort, Sie speichern?
Roman Gräf 07/28/2017
@TheLethalCoder Ill versuchen
TheLethalCoder 07/28/2017
Können Sie ein Byte speichern, indem Sie n in die Schleife verschieben?
TheLethalCoder 07/28/2017
Plus scheint dies im Moment nicht zu funktionieren.
PunPun1000 07/28/2017
Du verpasst einen Paren nach dem (a[n+=1+a[n]] . Die Funktion gibt auch einen Fehler nach der Ausgabe des korrekten Wertes aus, ich weiß nicht, ob dies erlaubt ist oder nicht (die Frage trifft zu) sag irgendwas zu Standardfehler wird ignoriert) n das die Absicht war, dann kannst du das n in der for-Schleife entfernen. Schließlich läuft der TIO-Code nicht so wie er ist, auch nicht mit dem paren. Die Funktion sollte sein ein Consumer und benutze func.accept(test)

Martin Ender 07/28/2017.

Alice , 15 Bytes

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

Probieren Sie es online aus!

Geben Sie eine durch Zeilenvorschub getrennte Liste von Dezimalzahlen ein und geben Sie sie aus.

Erläuterung

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

Durch das Speichern einer Ganzzahl n in der Iterator-Warteschlange wird der nächste Befehl n mal ausgeführt. Mirrors like / sind keine Befehle, daher wird der nächste Befehl I . Wenn wir also nur einen Wert x lesen und drucken, lesen wir bei der nächsten Iteration Werte x+1 , wobei der letzte auf dem Stapel liegt. Dies überspringt die erforderlichen Nummernlistenelemente.


Mr.Wizard 07/28/2017.

Mathematica , 37 (30?)

Weiteres Golfen der feinen Methode von user202729.

±NO 

Die Regeln scheinen das Ausgabeformat nicht explizit anzugeben, also vielleicht:

±NO 

Die Ausgabe für die zweite Funktion sieht folgendermaßen aus: 0.2.4.{} - insbesondere {} wird immer noch für eine leere Menge zurückgegeben, die der endgültigen Regel entspricht.

2 comments
1 JungHwan Min 07/28/2017
±Drop[NO kann ±NO weil ± eine niedrigere Priorität hat als Infix .
Mr.Wizard 07/28/2017
@ JungHwanMin Ich habe das verpasst; Vielen Dank!

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

Probieren Sie es online aus!


w0lf 07/28/2017.

Rubin, 36 33 31

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

Probieren Sie es online aus.

4 comments
sethrin 07/30/2017
Sie dürfen das f= als Kopfelement subtrahieren.
w0lf 07/30/2017
@sethrin Auch wenn ich es rekursiv aufrufen muss?
sethrin 07/30/2017
Hmm, gute Frage. Ich vermute nicht. Das hat mir übrigens sehr an Ihrer Lösung gelegen.
w0lf 07/30/2017
@ethrin Danke! :)

AnonymousReality 07/28/2017.

Schnell, 63 Bytes

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

Dies ist mein erster Eintrag überhaupt, also bin ich mir bei den Regeln nicht 100% sicher, aber hoffentlich reicht diese Antwort. Ich bin ein wenig unsicher bezüglich Regeln, wie man die Eingabe in ein System bekommt. Ich habe eine kürzere Antwort, wenn ich irgendwo eine Funktion annehmen durfte, die die Eingabe zurückgeben kann.

2 comments
Stephen 07/28/2017
Willkommen bei PPCG! Die Standardregeln sind, dass Sie entweder Code haben können, der als volles Programm funktioniert, also (normalerweise) in STDIN eingibt und (normalerweise) nach STDOUT or eine Funktion ausgibt, also (normalerweise) von Funktionsparametern eingibt und (normalerweise) ausgibt Funktionsrückgabe.
AnonymousReality 07/28/2017
@StepHen - danke! Ich schätze, das macht meine andere Version dann ungültig. Ich freue mich darauf, mehr beizutragen!

Perl 6 , 31 Bytes

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

Probier es aus

Erweitert:

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

Um zu verstehen, wie der Code funktioniert, ohne [*;0] würde dies eine Sequenz wie die folgende erzeugen:

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

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

Probieren Sie es online aus!


C ++ (gcc), 172 Bytes

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

Probieren Sie es online aus

Das schreckliche (c/91?"":" ") Ist für den richtigen Abstand in der Ausgabe. Ohne es (-15 Bytes) Ausgabe ist in Form: [0,2,4] , wenn ich es in einfache " " ändern (-9 Bytes) Ausgabe ist wie [ 0, 2, 4] (zusätzlicher Platz am Anfang) .

<<(c/93?"":"]") am Ende ist nur, um [] leere Eingabe Ecke Fall zu behandeln

Druckt keine abschließende Endlinie.

1 comments
Erik the Outgolfer 07/30/2017
Sie können die Zahlen auch getrennt durch ein Trennzeichen ohne Ziffern ausgeben, ohne dass [] erforderlich ist, und Sie können für diesen Randfall eine leere Ausgabe und keine Notwendigkeit für (c/91?"":" ") Haben. Sie müssen nicht mit dem Format der Beispiele in der Herausforderung übereinstimmen.

Jonathan Allan 07/29/2017.

Gelee , 8 Bytes

ḢṄ‘ṫ@µL¿ 

Ein vollständiges Programm, das die Ergebnisse druckt, gefolgt von einem Zeilenumbruch (leere Liste erzeugt keine Ausgabe).

Try it online!

Wie?

ḢṄ‘ṫ@µ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
Endlich eine Jelly Antwort! BTW Ich kann es in 7 Bytes tun.
Erik the Outgolfer 07/30/2017
Und ich habe auch eine Liste zurückgebende Funktion in 18 Bytes.

Evpok 07/30/2017.

Python 3 , 35 Bytes

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

Probieren Sie es online aus!

Führen Sie es mit f(*l) wobei l Ihre Eingabe ist. Die Regeln für die Eingabe werden wohl gestreckt, aber ich liebe einfach das fortgeschrittene Entpacken.


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) 

Beginnt mit den Anfangsparametern [0 []] , wobei 0 der Zähler und [] das Ergebnis ist. Wenn das erste Element in dieser Liste 0 hängt Element n vom Argument an das Ergebnis an und überschreitet weiter diese Liste [n [... n]] dekrementiert andernfalls das erste Element. (Diese Erklärung fühlt sich für mich schrecklich an)

Sehen Sie es online an


Dead Possum 07/28/2017.

Python 2.4, 85 Bytes

Keine Chance, in Python damit zu gewinnen, aber ich liebe oneliner und dieser könnte für andere interessant sein.
Es stellt sich heraus, dass es einen magischen Trick gibt, um auf die Gebäudeliste innerhalb des Verständnisses zuzugreifen, aber es funktioniert nur in 2.4 und mit einigen Bearbeitungen in <= 2.3
locals()['_[1]'] es. Python erstellt den geheimen Namen _[1] für die Liste, während sie erstellt und in locals Speichern gespeichert wird. Auch die Namen _[2] , _[3] ... werden für verschachtelte Listen verwendet.

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

Es zählt also die Anzahl der bereits hinzugefügten Elemente plus deren Summe. Ergebnis ist der Index des nächsten gewünschten Elements.
Ich denke, dass es einen Weg geben sollte, aufzuzählen. So wie der Zugriff auf das Eingabearray direkt über den Index erfolgt: [ n[len(locals()['_[1]'])+sum(locals()['_[1]'])] for ... ] . Aber ich kann keine kompakte Methode finden, sie vor Index-out-of-range zu schützen (und dabei oneliner zu behalten)

Bildbeschreibung hier eingeben


Neil 07/28/2017.

Stapel, 69 Bytes

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

(Ich brauche die () s um die for sonst in der Schleife passiert.)


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 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 Calum Scott

No Matter What flac

Calum Scott. 2018. Writer: Toby Gad;Calum Scott.
10 Lady Gaga

I'll Never Love Again flac

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

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
12 Imagine Dragons

Machine flac

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

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
14 Cher Lloyd

None Of My Business flac

Cher Lloyd. 2018. Writer: ​iamBADDLUCK;Alexsej Vlasenko;Kate Morgan;Henrik Meinke;Jonas Kalisch;Jeremy Chacon.
15 Ashley Tisdale

Voices In My Head flac

Ashley Tisdale. 2018. Writer: John Feldmann;Ashley Tisdale.
16 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
17 Halsey

Without Me flac

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

Woman Like Me flac

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

Told You So flac

Little Mix. 2018. Writer: Eyelar;MNEK;Raye.
20 Frida Sundemo

Apologize flac

Frida Sundemo. 2018.

Related questions

Hot questions

Language

Popular Tags