Lompati seperti kelinci!

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

Diberikan daftar bilangan bulat non-negatif dalam format yang beralasan, iterasi di atasnya, melewatkan banyak elemen karena setiap bilangan bulat yang Anda injak berkata.


Berikut ini contoh yang berfungsi:

[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 

Contoh lain yang berfungsi, tidak semua delta yang sama:

[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 

Contoh di luar batas:

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

Aturan

  • Anda tidak boleh menggunakan kecurangan yang membosankan di antara yang ini , mereka membuat tantangan membosankan dan tidak menarik.
  • Anda hanya harus mengembalikan / mencetak hasil akhir. Output STDERR diabaikan.
  • Anda mungkin tidak mendapatkan input sebagai string digit dalam basis apa pun (misalnya "0102513162" untuk kasus pertama).
  • Anda harus menggunakan urutan kiri-ke-kanan untuk input.
  • Seperti pada contoh-contoh yang berhasil, jika Anda keluar batas, eksekusi berakhir jika sebaliknya.
  • Anda harus menggunakan 0 untuk melewatkan 0 elemen.
  • Mengingat daftar kosong ( [] ) sebagai masukan, Anda harus mengembalikan [] .

Uji kasus

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

Ini adalah , jadi jawaban terpendek menang!

5 Comments
Erik the Outgolfer 07/28/2017
Kotak pasir (hanya 2k + pengguna)
3 Shaggy 07/28/2017
Ya, lihat saja. / memakai kacamata
2 Rod 07/28/2017
Mungkin leprechaun ¯ \ _ (ツ) _ / ¯
1 Roman Gräf 07/28/2017
Apakah saya tetap bisa mengikuti nol di array saya? akan menyelamatkan saya ~ 18 byte
1 Erik the Outgolfer 07/28/2017
@ RomanGräf Maaf tapi tidak, itu akan terlalu ambigu karena ada kasus Anda harus mengikuti 0 dalam output.

30 Answers


Rod 07/28/2017.

Python 2 , 36 byte

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

Coba online!

4 comments
Mr. Xcoder 07/28/2017
Saya mengharapkan untuk mendapatkan outgolfed, tapi tidak seburuk :)
Erik the Outgolfer 07/28/2017
Tidak bisakah kamu melakukan x[0] bukannya x[:1] ?
Rod 07/28/2017
@EriktheOutgolfer ya, tapi itu perlu daftar, jadi itu [x[0]]
Erik the Outgolfer 07/28/2017
@Rod Anda tidak menyimpan byte dengan x[:1] ... f=lambda x:x and[x[0]]+f(x[x[0]+1:])

Mr. Xcoder 08/19/2017.

Python 2 , 49 46 * 41 byte

Dilarang keluar 4 masih reguler 4 :(

* -3 thanks to @ASCII-only .

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

Coba online!

Mencetak hasil yang dipisahkan oleh baris baru, seperti yang diizinkan OP dalam obrolan. Saya tidak berpikir itu bisa lebih pendek sebagai non-recursive full program .


Bagaimana cara kerjanya?

  • l=input() - Membaca daftar dari input standar.

  • while l: - Menyalahgunakan fakta bahwa daftar kosong palsu dalam Python, loop sampai daftar kosong.

  • print l[0]; - Mencetak elemen pertama dari daftar.

  • l=l[l[0]+1:] - "Melompati seperti kelinci" - Memangkas l[0]+1 pertama l[0]+1 dari daftar.

Mari kita ambil contoh

Diberikan daftar [5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0] sebagai input, kode melakukan yang berikut (sesuai dengan penjelasan di atas) - Mencetak item pertama dari array: 5 , trim 6 pertama: [2, 1, 2, 1, 0, 0] . Kami kemudian mencetak 2 dan memangkas 3 pertama: [1,0,0] . Demikian juga, kami mengeluarkan 1 , memotong 2 pertama, dan kami mendapatkan [0] . Tentu saja, 0 dicetak dan program berakhir.

1 comments

w0lf 07/28/2017.

Haskell, 29 27 26 byte

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

Disimpan 1 byte berkat Zgarb.

Coba online.

2 comments
Zgarb 07/28/2017
f x=x pada baris kedua menyimpan satu byte.
w0lf 07/28/2017
@Zgarb Keren, terima kasih!

Adnan 07/28/2017.

05AB1E , 10 9 byte

[¬Dg>#=ƒ¦ 

Menggunakan enkode 05AB1E . Coba online!

1 comments
Magic Octopus Urn 07/28/2017
Ya, itu jauh lebih baik daripada yang aku pikirkan.

Martin Ender 07/28/2017.

Mathematica, 46 44 byte

SequenceCases[#,NO 

Alternatif:

SequenceCases[#,NO 
1 comments
Mr.Wizard 07/28/2017
Wow, itu hebat!

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] 

Solusi Lama 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 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 

Coba online!

Versi Lengkap / Terformat:

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

Mengembalikan daftar lebih panjang pada 107 byte.

 a=>{var l=new System.Collections.Generic.List();for(int i=0;i 
3 comments
2 TheLethalCoder 07/28/2017
Mengapa seseorang menurunkan peringkat ini?
Thomas Ayoub 07/31/2017
Untuk mengumpulkan skor Anda dan membuat 5k sempurna?
TheLethalCoder 07/31/2017
@ThomasAyoub Kita hanya bisa berasumsi itu adalah seseorang dengan OCD ya.

Zgarb 07/28/2017.

Sekam , 8 6 byte

←TU¡Γ↓ 

Coba online!

-2 byte (dan ide solusi yang benar-benar baru) berkat Leo!

Penjelasan

Saya menggunakan fungsi pencocokan pola daftar Γ . Dibutuhkan fungsi f dan daftar dengan x kepala dan x ekor, dan menerapkan f ke x dan xs . Jika daftar kosong, Γ mengembalikan nilai default yang konsisten dengan tipenya, dalam hal ini daftar kosong. Kami mengambil f menjadi , yang menjatuhkan x elemen dari xs . Fungsi ini kemudian diulang dan elemen yang dihasilkan dikumpulkan dalam daftar.

←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
Anda dapat menjatuhkan nilai default dari ø, dan semuanya masih akan bekerja secara ajaib :)
Leo 07/28/2017
Atau, bahkan untuk lebih sedikit byte, tio.run/##yygtzv7//1HbhJDQQwvPTX7UNvn////RBjpGOiBsomOoYxQLAA
Zgarb 07/28/2017
@Leo Oh wow, itu pintar!
Erik the Outgolfer 07/28/2017
Kenapa kamu CW ini?
Zgarb 07/28/2017
@ErikTheOutgolfer Itu adalah kesalahan (Saya menggunakan ponsel saya dan sepertinya mendorong sesuatu secara tidak sengaja). Saya mencoba membatalkannya ...

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 

Coba online!

2 comments
1 Rod 07/28/2017
Anda dapat menggunakan l[i:i+l[i-1]]=[] sebagai gantinya del l[i:i+l[i-1]] untuk menyimpan satu byte
1 ASCII-only 07/28/2017

Dave 07/28/2017.

Pyth, 22 Bytes

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

Menghapus byte yang tidak berguna

4 comments
Erik the Outgolfer 07/28/2017
Saya melihat 23 byte di sana.
Dave 07/28/2017
Typo :) maaf ...
3 Wheat Wizard 07/28/2017
Saya tidak yakin mengapa Anda memiliki suara yang rendah. Ada kemungkinan bahwa ketika Anda mengedit memperbaiki jawaban Anda, ini memicu "pemungutan suara otomatis". Alasan untuk downvote otomatis ini membingungkan dan mengerikan tetapi itu terjadi jika sistem menganggap jawaban Anda "berkualitas rendah" berdasarkan heuristiknya. Ini juga mungkin bahwa seseorang tidak menyukai jawaban Anda, tetapi saya tidak melihat ada yang salah dengan itu pada saat ini jadi saya tidak yakin mengapa itu terjadi.
isaacg 07/31/2017
Saya senang Anda menggunakan Pyth!

Rod 07/28/2017.

Python 2 , 60 42 byte

-18 byte berkat Luis Mendo

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

Coba online!


Martin Ender 07/28/2017.

Retina , 36 byte

Byte count mengasumsikan pengkodean ISO 8859-1.

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

Input dan output adalah linefeed-separated dengan trailing linefeed.

Coba online! (Menggunakan koma, bukan linefeed untuk memungkinkan test suite yang nyaman.)


Riley 07/28/2017.

Brain-Flak , 64 byte

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

Coba online!

([]){{}                          ([])}{}                         # Until the stack is empty
       (({})<>)<>                                                # Copy TOS to off stack
                 {({}[()]<{}>)}{}                                # Pop TOS times
                                        <>([]){{}({}<>)<>([])}<> # Reverse off stack 
2 comments
6 DJMcMayhem 07/28/2017
Holy crap! Saya menulis sebuah solusi, dan kemudian menggulir ke bawah untuk mempostingnya, tetapi ternyata kami menulis solusi yang sama exact untuk byte-byte! Bahkan detail kecil seperti ({}[()]<{}>) vs ({}<{}>[()]) juga sama! Kebetulan sekali!
2EZ 4RTZ 07/28/2017
@DJMcMayhem mencuri semua XD ketenaran

user202729 07/28/2017.

Mathematica, 64 50 byte

±x_List:=Prepend[±Drop[x,1+#&@@x],#&@@x]
±_=±{}={} 
1 comments
Mr.Wizard 07/28/2017
Saya tidak bisa menahan diri untuk bermain golf dengan kode rapi ini; jawabanku ada di bawah.

jkelm 07/28/2017.

C # (.NET Core) , 68 byte

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

Coba online!

Mengambil masukan sebagai larik bilangan bulat, mengembalikan string yang berisi nilai-nilai yang tidak dilewati.

3 comments
TheLethalCoder 07/28/2017
Cara yang bagus untuk melakukannya dan datang dengan hitungan yang sama seperti mencetak.
jkelm 07/28/2017
Saya suka solusi sederhana. Masih harus belajar LINQ, seperti yang telah saya lihat yang mempersingkat begitu banyak c # lambdas ..
TheLethalCoder 07/28/2017
Lebih pendek karena Anda dapat kembali implisit sebagian besar waktu. Meskipun itu adalah undian antara return implisit dengan using System.Linq; dan lingkaran normal.

Jarko Dubbeldam 07/28/2017.

R, 58 byte

f=function(x,p=1)NO 

Fungsi rekursif. Membawa vektor x sebagai argumen dan mengarahkan pointer ke p . Ini mencetak entri x sesuai, memeriksa apakah p+x[p] akan keluar dari batas, dan jika tidak, memanggil fungsi untuk penunjuk baru.

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

Ini adalah solusi yang sebanding yang mengembalikan vektor yang tepat daripada mencetak digit.

3 comments
Giuseppe 07/28/2017
bagaimana dengan input numeric(0) ? alias array kosong.
Jarko Dubbeldam 07/28/2017
@Giuseppe Saya akan melihatnya ketika saya berada di belakang komputer saya
Giuseppe 08/24/2017
57 byte! dan menangani kotak yang kosong juga.

Roman Gräf 07/28/2017.

Java (OpenJDK 8) , 53 byte

Terima kasih kepada @ PunPun1000 dan @TheLethalCoder

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

Coba online!

5 comments
TheLethalCoder 07/28/2017
Apakah mencetak hasil, seperti dalam jawaban C # saya, menghemat apa pun?
Roman Gräf 07/28/2017
@TheLethalCoder Ill mencoba
TheLethalCoder 07/28/2017
Bisakah Anda menyimpan satu byte dengan memindahkan n ke dalam loop?
TheLethalCoder 07/28/2017
Plus ini sepertinya tidak berfungsi saat ini.
PunPun1000 07/28/2017
Anda kehilangan paren setelah (a[n+=1+a[n]] .Fungsi juga melempar kesalahan setelah menghasilkan nilai yang benar, saya tidak tahu konsensus apakah ini diperbolehkan atau tidak (pertanyaannya tidak mengatakan apa pun untuk kesalahan standar adalah mengabaikan) .Jika itu adalah niat, maka Anda dapat menghapus n dalam for loop. Akhirnya kode TIO tidak berjalan apa adanya, bahkan dengan paren. Fungsi ini harus a Consumer dan gunakan func.accept(test)

Martin Ender 07/28/2017.

Alice , 15 byte

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

Coba online!

Input dan output daftar integer desimal yang dipisahkan oleh linefeed.

Penjelasan

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

Menyimpan bilangan bulat n dalam antrian iterator menyebabkan perintah berikutnya dieksekusi n kali. Cermin seperti / bukan perintah, jadi perintah selanjutnya adalah I Oleh karena itu jika kita hanya membaca dan mencetak nilai x , kita akan membaca nilai x+1 pada iterasi berikutnya, dengan yang terakhir dari mereka berakhir di atas tumpukan. Ini melompati elemen daftar nomor yang diperlukan.


Mr.Wizard 07/28/2017.

Mathematica , 37 (30?)

Golf lebih lanjut dari metode halus user202729 ini.

±NO 

Aturannya tampaknya tidak secara eksplisit menentukan format output, jadi mungkin:

±NO 

Output untuk fungsi kedua tampak seperti: 0.2.4.{} - terutama {} masih dikembalikan untuk satu set kosong, sesuai dengan aturan final.

2 comments
1 JungHwan Min 07/28/2017
±Drop[NO bisa ±NO karena ± memiliki preseden yang lebih rendah daripada Infix .
Mr.Wizard 07/28/2017
@JungHwanMin Aku merindukan itu; Terima kasih!

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

Coba online!


w0lf 07/28/2017.

Ruby, 36 33 31

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

Coba online.

4 comments
sethrin 07/30/2017
Anda diizinkan untuk mengurangi f= sebagai elemen header.
w0lf 07/30/2017
@sethrin Bahkan jika saya harus menyebutnya secara rekursif?
sethrin 07/30/2017
Hmm, pertanyaan bagus. Saya kira tidak. Saya melakukan banyak hal seperti itu tentang solusi Anda, omong-omong.
w0lf 07/30/2017
@sethrin Terima kasih! :)

AnonymousReality 07/28/2017.

Swift, 63 byte

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

Ini adalah entri pertama saya, selamanya, jadi saya tidak yakin 100% tentang aturan, tetapi semoga jawaban ini cukup. Saya sedikit tidak yakin tentang aturan tentang cara memasukkan input ke dalam sistem. Saya memiliki jawaban yang lebih pendek jika saya diizinkan untuk mengambil fungsi di suatu tempat yang dapat mengembalikan input.

2 comments
Stephen 07/28/2017
Selamat datang di PPCG! Aturan default adalah Anda dapat memiliki kode yang berfungsi sebagai program penuh, jadi masukkan (biasanya) di STDIN dan output (biasanya) ke STDOUT, or fungsi, jadi masukan (biasanya) dari parameter fungsi dan output (biasanya) dari kembali fungsi.
AnonymousReality 07/28/2017
@StepHen - terima kasih! Saya rasa itu membuat versi saya yang lain tidak valid. Berharap untuk berkontribusi lebih banyak!

Perl 6 , 31 byte

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

Menguji

Diperluas:

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

Untuk membantu memahami cara kerja kode, tanpa [*;0] ini akan menghasilkan urutan seperti berikut:

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

Lisp Biasa, 51 byte

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

Coba 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< 

Coba online

The mengerikan (c/91?"":" ") Adalah untuk jarak yang benar dalam output. Tanpa itu (-15 byte) output dalam bentuk: [0,2,4] , ketika saya mengubahnya ke sederhana " " (-9 byte) output seperti [ 0, 2, 4] (ruang tambahan di awal) .

<<(c/93?"":"]") pada akhirnya hanya untuk menangani [] kasus sudut masukan kosong

Mencetak tidak ada garis akhir tambahan.

1 comments
Erik the Outgolfer 07/30/2017
Anda juga dapat mencetak angka yang dipisahkan oleh pemisah no-digit, tidak perlu [] dan Anda dapat memiliki output kosong untuk kasus tepi itu, dan tidak perlu (c/91?"":" ") . Anda tidak harus mencocokkan format contoh dalam tantangan.

Jonathan Allan 07/29/2017.

Jelly , 8 byte

ḢṄ‘ṫ@µL¿ 

Sebuah program penuh mencetak hasil masing-masing diikuti oleh baris baru (daftar kosong tidak menghasilkan output).

Try it online!

Bagaimana?

ḢṄ‘ṫ@µ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
Akhirnya jawaban jelly! BTW saya bisa melakukannya dalam 7 byte.
Erik the Outgolfer 07/30/2017
Dan saya juga memiliki fungsi daftar kembali dalam 18 byte.

Evpok 07/30/2017.

Python 3 , 35 byte

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

Coba online!

Jalankan dengan f(*l) mana l adalah input Anda. Arguably meregangkan aturan untuk input, tapi saya suka membongkar maju.


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) 

Mulai dengan parameter awal [0 []] , di mana 0 adalah penghitung dan [] adalah hasilnya. Jika elemen pertama dalam daftar ini adalah 0 menambahkan item n dari argumen ke hasil dan meneruskan daftar ini [n [... n]] jika tidak, menguraikan elemen pertama. (penjelasan ini terasa mengerikan bagi saya)

Lihat secara online


Dead Possum 07/28/2017.

Python 2.4, 85 byte

Tidak ada kesempatan untuk menang dengan python dengannya, tapi saya suka oneliners dan yang satu ini mungkin menarik bagi orang lain.
Ternyata, ada trik sulap mewah untuk mengakses daftar bangunan di dalam pemahaman, tetapi hanya berfungsi di 2.4 dan dengan beberapa pengeditan di <= 2.3
locals()['_[1]'] . Python menciptakan nama rahasia _[1] untuk daftar, ketika dibuat dan menyimpannya di locals . Juga nama _[2] , _[3] ... digunakan untuk daftar bersarang.

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

Jadi itu menghitung jumlah elemen yang sudah ditambah ditambah jumlah mereka. Hasilnya adalah indeks elemen yang diinginkan berikutnya.
Saya pikir, bahwa harus ada cara untuk menghindari penghitungan. Seperti mengakses array input secara langsung oleh indeks: [ n[len(locals()['_[1]'])+sum(locals()['_[1]'])] for ... ] . Tapi saya tidak bisa menemukan cara yang kompak untuk melindunginya dari indeks-out-of-range (sambil tetap oneliner)

masukkan uraian gambar di sini


Neil 07/28/2017.

Batch, 69 byte

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

(Saya perlu () s di sekitar for jika tidak, goto terjadi di dalam loop.)


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 Anne-Marie

Rewrite The Stars flac

Anne-Marie. 2018. Writer: Benj Pasek;Justin Paul.
4 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
5 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
6 BTS

Waste It On Me flac

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

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
8 Imagine Dragons

Bad Liar flac

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

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
10 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.
11 Rita Ora

Cashmere flac

Rita Ora. 2018. Writer: Sean Douglas;Lindy Robbins.
12 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
13 Brooks

Limbo flac

Brooks. 2018.
14 Rita Ora

Velvet Rope flac

Rita Ora. 2018.
15 Fitz And The Tantrums

HandClap flac

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

Woman Like Me flac

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

None Of My Business flac

Cher Lloyd. 2018. Writer: ​iamBADDLUCK;Alexsej Vlasenko;Kate Morgan;Henrik Meinke;Jonas Kalisch;Jeremy Chacon.
18 Billie Eilish

When The Party's Over flac

Billie Eilish. 2018. Writer: Billie Eilish;FINNEAS.
19 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
20 Lil Pump

Arms Around You flac

Lil Pump. 2018. Writer: Rio Santana;Lil Pump;Edgar Barrera;Mally Mall;Jon Fx;Skrillex;Maluma;Swae Lee;XXXTENTACION.

Related questions

Hot questions

Language

Popular Tags