Langkau seperti arnab!

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

Memandangkan senarai integer bukan negatif dalam apa-apa format yang munasabah, tolak ia, melangkau seberapa banyak unsur sebagai setiap integer yang anda gunakan.


Berikut adalah contoh kerja:

[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 

Satu lagi contoh kerja, tidak begitu 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 

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

Peraturan

  • Anda tidak boleh menggunakan mana-mana cheat membosankan di antara mereka, mereka membuat cabaran membosankan dan tidak menarik.
  • Anda hanya perlu kembali / mencetak hasil akhir. Output STDERR diabaikan.
  • Anda mungkin tidak mendapat input sebagai rentetan angka dalam mana-mana asas (contohnya "0102513162" untuk kes pertama).
  • Anda mesti menggunakan perintah kiri-ke-kanan untuk input.
  • Seperti dalam contoh yang bekerja, jika anda keluar daripada batas, pelaksanaan akan tamat seolah-olah sebaliknya.
  • Anda harus menggunakan 0 untuk melangkau 0 elemen.
  • Memandangkan senarai kosong ( [] ) sebagai input, anda perlu mengembalikan [] .

Kes ujian

[]                                                     => []
[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 jawapan yang paling cepat menang!

5 Comments
Erik the Outgolfer 07/28/2017
Kotak Pasir (pengguna 2k + sahaja)
3 Shaggy 07/28/2017
Ya, hanya melihatnya. / meletakkan cermin pada
2 Rod 07/28/2017
Mungkin sebuah leprechaun ¯ \ _ (ツ) _ / ¯
1 Roman Gräf 07/28/2017
Adakah ia baik untuk mempunyai sifar di array saya? akan menyelamatkan saya ~ 18 bait
1 Erik the Outgolfer 07/28/2017
@ RomanGräf Maaf tapi tidak, itu akan menjadi terlalu kabur kerana terdapat kes-kes yang anda harus menguntukkan 0 s dalam output.

30 Answers


Rod 07/28/2017.

Python 2 , 36 bait

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

Cuba dalam talian!

4 comments
Mr. Xcoder 07/28/2017
Saya menjangkakan untuk mendapatkan outgolfed, tetapi tidak yang teruk :)
Erik the Outgolfer 07/28/2017
Tidakkah anda melakukan x[0] dan bukan x[:1] ?
Rod 07/28/2017
@EriktheOutgolfer ya, tetapi ia perlu menjadi senarai, jadi ia akan menjadi [x[0]]
Erik the Outgolfer 07/28/2017
@Rod Anda tidak menyimpan sebarang bait dengan 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 bait

Diseberang 4 tetap biasa 4 :(

* -3 thanks to @ASCII-only .

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

Cuba dalam talian!

Mencetak keputusan yang dipisahkan oleh baris baru, seperti OP yang dibenarkan dalam sembang. Saya tidak fikir ia boleh menjadi lebih pendek sebagai non-recursive full program .


Bagaimanakah ini berfungsi?

  • l=input() - Membaca senarai dari input standard.

  • while l: - Menyalahgunakan hakikat bahawa senarai kosong palsu dalam Python, gelung sehingga senarai kosong.

  • print l[0]; - Mencetak elemen pertama dalam senarai.

  • l=l[l[0]+1:] - "Melangkau seperti arnab" - Memberi l[0]+1 pertama l[0]+1 dari senarai.

Mari ambil contoh

Memandangkan senarai [5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0] sebagai input, kod tersebut melakukan perkara berikut (mengikut penjelasan di atas) - Mencetak item pertama array: 5 , trim pertama 6: [2, 1, 2, 1, 0, 0] . Kami kemudian mencetak 2 dan trim yang pertama 3: [1,0,0] . Begitu juga, kita output 1 , tanaman pertama 2, dan kita mendapat [0] . Sudah tentu, 0 dicetak dan program itu tamat.

1 comments

w0lf 07/28/2017.

Haskell, 29 27 26 bait

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

Disimpan 1 bait terima kasih kepada Zgarb.

Cuba dalam talian.

2 comments
Zgarb 07/28/2017
f x=x pada baris kedua menjimatkan bait.
w0lf 07/28/2017
@Zgarb Cool, thanks!

Adnan 07/28/2017.

05AB1E , 10 9 bait

[¬Dg>#=ƒ¦ 

Menggunakan encoding 05AB1E . Cuba dalam talian!

1 comments
Magic Octopus Urn 07/28/2017
Ya, itu lebih baik daripada apa yang saya fikirkan.

Martin Ender 07/28/2017.

Mathematica, 46 44 bytes

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 bait

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] 

Penyelesaian Lama 39 Btit

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 bait

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

Cuba dalam talian!

Versi Penuh / Format:

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

Kembali senarai lebih panjang pada 107 bait.

 a=>{var l=new System.Collections.Generic.List();for(int i=0;i 
3 comments
2 TheLethalCoder 07/28/2017
Kenapa seseorang menurunkan ini?
Thomas Ayoub 07/31/2017
Untuk pusingan skor anda dan buat 5k yang sempurna?
TheLethalCoder 07/31/2017
@ ThomasAyoub Kita hanya boleh mengandaikan ia adalah seseorang yang mempunyai OCD ya.

Zgarb 07/28/2017.

Husk , 8 6 bait

←TU¡Γ↓ 

Cuba dalam talian!

-2 bait (dan idea penyelesaian sepenuhnya) terima kasih kepada Leo!

Penjelasan

Saya menggunakan fungsi Γ corak senarai Γ . Ia mengambil fungsi f dan senarai dengan kepala x dan ekor xs , dan menggunakan f ke x dan xs . Jika senarai kosong, Γ mengembalikan nilai lalai selaras dengan jenisnya, dalam hal ini senarai kosong. Kami mengambil f menjadi , yang menurunkan unsur x dari xs . Fungsi ini kemudian diulang dan unsur yang dihasilkan dikumpulkan dalam senarai.

←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 boleh menggugurkan nilai lalai ø, dan semuanya masih berfungsi secara ajaib :)
Zgarb 07/28/2017
@Leo Oh wow, itu pandai!
Erik the Outgolfer 07/28/2017
Kenapa awak CW ini?
Zgarb 07/28/2017
@ErikTheOutgolfer Itu adalah kesilapan (saya di telefon saya dan nampaknya menolak sesuatu secara tidak sengaja). Saya cuba membatalkannya ...

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 

Cuba dalam talian!

2 comments
1 Rod 07/28/2017
Anda boleh menggunakan l[i:i+l[i-1]]=[] sebaliknya del l[i:i+l[i-1]] untuk menyimpan bait
1 ASCII-only 07/28/2017

Dave 07/28/2017.

Pyth, 22 Btit

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

Mengeluarkan bait yang tidak berguna

4 comments
Erik the Outgolfer 07/28/2017
Saya melihat 23 bait di sana.
Dave 07/28/2017
Typo :) maaf ...
3 Wheat Wizard 07/28/2017
Saya tidak pasti mengapa anda mempunyai undi undur. Terdapat kemungkinan bahawa apabila anda mengedit menetapkan jawapan anda ini mencetuskan undi "undur automatik". Sebab-sebab untuk downvote automatik ini membingungkan dan dahsyat tetapi ia berlaku jika sistem menganggap jawapan anda untuk "rendah kualiti" berdasarkan ia heuristik. Ia juga mungkin bahawa seseorang tidak menyukai jawapan anda, tetapi saya tidak melihat apa-apa yang salah dengannya pada masa ini jadi saya tidak pasti mengapa itu akan berlaku.
isaacg 07/31/2017
Saya gembira anda menggunakan Pyth!

Rod 07/28/2017.

Python 2 , 60 42 bait

-18 bait terima kasih kepada Luis Mendo

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

Cuba dalam talian!


Martin Ender 07/28/2017.

Retina , 36 bait

Kiraan byte mengandaikan pengekodan ISO 8859-1.

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

Input dan output adalah berpisah dengan garis garisan beracun.

Cuba dalam talian! (Menggunakan koma dan bukannya garis jejari untuk membolehkan suite ujian mudah.)


Riley 07/28/2017.

Brain-Flak , 64 bait

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

Cuba dalam talian!

([]){{}                          ([])}{}                         # Until the stack is empty
       (({})<>)<>                                                # Copy TOS to off stack
                 {({}[()]<{}>)}{}                                # Pop TOS times
                                        <>([]){{}({}<>)<>([])}<> # Reverse off stack 
2 comments
6 DJMcMayhem 07/28/2017
Omong kosong! Saya menulis penyelesaian, dan kemudian menatal ke bawah untuk menyiarkannya, tetapi ternyata kami menulis penyelesaian yang sama sama byte-for-byte! Malah butiran kecil seperti ({}[()]<{}>) vs ({}<{}>[()]) adalah sama! Satu kebetulan!
2EZ 4RTZ 07/28/2017
@DJMcMayhem mencuri semua kemasyhuran XD

user202729 07/28/2017.

Mathematica, 64 50 bytes

±x_List:=Prepend[±Drop[x,1+#&@@x],#&@@x]
±_=±{}={} 
1 comments
Mr.Wizard 07/28/2017
Saya tidak dapat menahan gol golf yang lebih baik ini; jawapan saya ada di bawah.

jkelm 07/28/2017.

C # (.NET Core) , 68 bait

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

Cuba dalam talian!

Mengambil input sebagai pelbagai bilangan bulat, mengembalikan rentetan yang mengandungi nilai yang tidak dilangkau.

3 comments
TheLethalCoder 07/28/2017
Cara yang baik untuk melakukannya dan masuk pada kiraan yang sama seperti percetakan.
jkelm 07/28/2017
Saya suka penyelesaian mudah. Masih perlu belajar LINQ walaupun, kerana saya telah melihat bahawa memendekkan banyak c # lambdas ..
TheLethalCoder 07/28/2017
Keluarkannya kerana anda dapat kembali secara tersirat sepanjang masa. Walaupun ia melambung antara pulangan yang tersirat dengan using System.Linq; dan gelung biasa.

Jarko Dubbeldam 07/28/2017.

R, 58 bait

f=function(x,p=1)NO 

Fungsi rekursif. Mengambil vektor x sebagai hujah dan menyerahkan penunjuk p . Ini mencetak kemasukan yang sama x , memeriksa jika p+x[p] akan keluar dari batas, dan jika tidak, panggil fungsi untuk penuding 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 penyelesaian setanding yang mengembalikan vektor yang betul dan bukan percetakan digit.

3 comments
Giuseppe 07/28/2017
bagaimana dengan input numeric(0) ? alias kosong.
Jarko Dubbeldam 07/28/2017
@Gususeppe Saya akan melihatnya apabila saya berada di belakang pc saya
Giuseppe 08/24/2017
57 bait! dan ia mengendalikan kes kosong juga.

Roman Gräf 07/28/2017.

Java (OpenJDK 8) , 53 bait

Terima kasih kepada @ PunPun1000 dan @TheLethalCoder

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

Cuba dalam talian!

5 comments
TheLethalCoder 07/28/2017
Akan mencetak keputusan, seperti dalam jawapan C # saya, menjimatkan apa-apa?
Roman Gräf 07/28/2017
@TheLethalCoder Ill try
TheLethalCoder 07/28/2017
Bolehkah anda menyimpan bait dengan menggerakkan n ke dalam gelung?
TheLethalCoder 07/28/2017
Plus ini seolah-olah tidak berfungsi pada masa ini.
PunPun1000 07/28/2017
Anda kehilangan paren selepas (a[n+=1+a[n]] . Fungsi juga membuang ralat selepas mengeluarkan nilai yang betul, saya tidak tahu konsensus sama ada ini dibenarkan atau tidak (persoalannya katakan apa-apa jua kepada kesilapan standard yang tidak n itu adalah niat, maka anda boleh mengeluarkan n dalam gelung. Akhirnya kod TIO tidak berjalan seperti yang ada, walaupun dengan paren. seorang Consumer dan menggunakan func.accept(test)

Martin Ender 07/28/2017.

Alice , 15 bait

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

Cuba dalam talian!

Masukkan dan keluarkan senarai dipisahkan linefeed bagi bilangan bulat perpuluhan.

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 integer n dalam barisan iterator menyebabkan perintah seterusnya dijalankan n kali. Cermin seperti / tidak perintah, jadi perintah seterusnya akan I . Oleh itu jika kita hanya membaca dan mencetak nilai x , kita akan membaca nilai x+1 pada lelaran seterusnya, dengan yang terakhir dari mereka berakhir di atas timbunan. Ini melangkau unsur senarai nombor yang diperlukan.


Mr.Wizard 07/28/2017.

Mathematica , 37 (30?)

Lagi bermain golf dengan cara yang baik.

±NO 

Peraturannya tidak menyatakan secara eksplisit format output, jadi mungkin:

±NO 

Output untuk fungsi kedua kelihatan seperti: 0.2.4.{} - terutamanya {} masih dikembalikan untuk set kosong, mematuhi peraturan akhir.

2 comments
1 JungHwan Min 07/28/2017
±Drop[NO boleh ±NO kerana ± mempunyai keutamaan yang lebih rendah daripada Infix .
Mr.Wizard 07/28/2017
@JungHwanMin Aku merindui itu; terima kasih!

Jenny_mathy 07/28/2017.

Mathematica, 65 bait

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

Cuba dalam talian!


w0lf 07/28/2017.

Ruby, 36 33 31

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

Cuba dalam talian.

4 comments
sethrin 07/30/2017
Anda dibenarkan untuk menolak f= sebagai elemen pengepala.
w0lf 07/30/2017
@sethrin Walaupun saya perlu memanggilnya secara rekursif?
sethrin 07/30/2017
Hmm, soalan yang baik. Saya tidak fikir. Saya sangat menyukainya tentang penyelesaian anda, dengan cara ini.
w0lf 07/30/2017
@sethrin Terima kasih! :)

AnonymousReality 07/28/2017.

Swift, 63 bait

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

Ini adalah catatan pertama saya, sebelum ini, jadi saya tidak 100% pasti mengenai peraturan, tapi semoga jawapan ini cukup. Saya agak tidak pasti tentang kaedah bagaimana untuk mendapatkan input ke dalam sistem. Saya mempunyai jawapan yang lebih pendek jika saya dibenarkan menganggap fungsi di suatu tempat yang boleh mengembalikan input.

2 comments
Stephen 07/28/2017
Selamat datang ke PPCG! Peraturan lalai adalah bahawa anda boleh mempunyai kod yang berfungsi sebagai program penuh, jadi input (biasanya) dalam STDIN dan output (biasanya) kepada STDOUT, or fungsi, jadi input (biasanya) dari parameter fungsi dan output (biasanya) fungsi pulangan.
AnonymousReality 07/28/2017
@StepHen - terima kasih! Saya rasa yang membuat versi saya yang lain tidak sah. Looking forward untuk menyumbang lebih banyak!

Perl 6 , 31 bait

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

Uji ia

Dikembangkan:

 {  # 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 bagaimana kod berfungsi, tanpa [*;0] ini akan menjana 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.

Common Lisp, 51 bait

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

Cuba dalam talian!


C ++ (gcc), 172 bait

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

Cuba dalam talian

Yang mengerikan (c/91?"":" ") Adalah untuk jarak yang betul dalam output. Tanpa output (-15 bytes) dalam bentuk: [0,2,4] , apabila saya menukarnya kepada output " " (-9 bait) yang mudah seperti [ 0, 2, 4] (ruang tambahan pada permulaan) .

<<(c/93?"":"]") pada akhirnya hanya untuk mengendalikan [] sudut sudut input kosong

Cetakan tiada akhir jejak.

1 comments
Erik the Outgolfer 07/30/2017
Anda juga boleh mencetak nombor yang dipisahkan oleh pemisah tidak-digit, tidak perlu untuk [] dan anda boleh mempunyai output kosong untuk kes tepi itu dan tidak perlu untuk (c/91?"":" ") . Anda tidak sepadan dengan format contoh dalam cabaran.

Jonathan Allan 07/29/2017.

Jelly , 8 bait

ḢṄ‘ṫ@µL¿ 

Satu program penuh mencetak keputusan masing-masing diikuti dengan baris baru (senarai kosong menghasilkan tiada 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 jawapan Jelly! BTW saya boleh melakukannya dalam 7 bait.
Erik the Outgolfer 07/30/2017
Dan saya juga mempunyai fungsi senarai-kembali dalam 18 bait.

Evpok 07/30/2017.

Python 3 , 35 bait

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

Cuba dalam talian!

Jalankan dengan f(*l) di mana l adalah input anda. Boleh dikatakan meregangkan peraturan untuk masukan, tetapi saya suka canggih mengemas kini.


cliffroot 07/28/2017.

Clojure, 67 bait

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

Bermula dengan parameter permulaan [0 []] , di mana 0 adalah kaunter dan [] adalah hasilnya. Jika elemen pertama dalam senarai ini adalah 0 item n dari hujah kepada hasilnya dan lulus lagi senarai ini [n [... n]] jika tidak, maka pengurangan elemen pertama. (penjelasan ini terasa dahsyat kepada saya)

Lihat dalam talian


Dead Possum 07/28/2017.

Python 2.4, 85 bait

Tiada peluang untuk menang di dalam python dengannya, tetapi saya suka oneliners dan ini mungkin menarik kepada orang lain.
Ternyata, ada silap mata mewah untuk mengakses senarai bangunan di dalam pemahaman, tetapi hanya berfungsi dalam 2.4 dan dengan beberapa suntingan dalam <= 2.3
locals()['_[1]'] ia adalah. Python mencipta nama rahsia _[1] untuk senarai, sementara ia dicipta dan disimpan di locals . Juga nama _[2] , _[3] ... digunakan untuk senarai bersarang.

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

Jadi ia mengira bilangan unsur yang sudah ditambah ditambah jumlahnya. Hasil ialah indeks elemen yang dikehendaki seterusnya.
Saya fikir, harus ada cara untuk mengelakkan enumerate. Seperti mengakses array input secara langsung oleh indeks: [ n[len(locals()['_[1]'])+sum(locals()['_[1]'])] for ... ] . Tetapi saya tidak dapat memikirkan cara yang kompak untuk melindunginya dari indeks-out-of-range (sambil menjaga ia oneliner)

masukkan keterangan imej di sini


Neil 07/28/2017.

Batch, 69 bait

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

(Saya perlukan () s di sekelilingnya jika tidak, goto berlaku di dalam gelung.)


HighResolutionMusic.com - Download Hi-Res Songs

1 (G)I-DLE

POP/STARS flac

(G)I-DLE. 2018. Writer: Riot Music Team;Harloe.
2 The Chainsmokers

Beach House flac

The Chainsmokers. 2018. Writer: Andrew Taggart.
3 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
4 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.
5 Clean Bandit

Baby flac

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

Bad Liar flac

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

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
8 BTS

Waste It On Me flac

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

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
10 Fitz And The Tantrums

HandClap flac

Fitz And The Tantrums. 2017. Writer: Fitz And The Tantrums;Eric Frederic;Sam Hollander.
11 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
12 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
13 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
14 Anne-Marie

Rewrite The Stars flac

Anne-Marie. 2018. Writer: Benj Pasek;Justin Paul.
15 Little Mix

Woman Like Me flac

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

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
17 Little Mix

The Cure flac

Little Mix. 2018.
18 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
19 Rita Ora

Velvet Rope flac

Rita Ora. 2018.
20 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.

Related questions

Hot questions

Language

Popular Tags