Atla bir tavşan gibi!

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

Herhangi bir makul biçimde negatif olmayan tamsayının bir listesi verildiğinde, üzerinde adım attığınız her tam sayı kadar elemanı atlayarak yineleyin.


İşte çalıştı bir örnek:

[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 

Bir diğer çalıştı örnek, hepsi değil eşit deltalar:

[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 

Sınır dışı bir örnek:

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

kurallar

  • Bunlar arasında sıkıcı hile kullanamazsınız, meydan okumayı sıkıcı ve ilginç yapmazlar.
  • Yalnızca nihai sonucu iade etmeniz / basmanız gerekir. STDERR çıktısı yok sayılır.
  • Girişi, herhangi bir tabanda bir basamak dizisi olarak alamazsınız (ör. Ilk durum için "0102513162").
  • Giriş için soldan sağa doğru sırayla kullanmanız gerekir.
  • Çalışılan örneklerde olduğu gibi, sınırların dışına çıkarsanız, yürütme aksi halde sona erer.
  • 0 unsuru atlamak için 0 kullanmalısınız.
  • Boş liste ( [] ) girdi olarak verildiğinde, [] döndürmelisiniz.

Test vakaları

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

Bu , bu nedenle en kısa cevap kazanır!

5 Comments
Erik the Outgolfer 07/28/2017
Sandbox (2k + yalnızca kullanıcılar)
3 Shaggy 07/28/2017
Evet, fark ettiniz. / Gözlük takar
2 Rod 07/28/2017
Muhtemelen bir leprechaun ¯ \ _ (ツ) _ / ¯
1 Roman Gräf 07/28/2017
Dizimimin sonunda sıfır olması uygun mu? Beni kurtaracak ~ 18 bayt
1 Erik the Outgolfer 07/28/2017
@ RomanGräf Özür dilerim ama hayır, sonuçta 0 s sürükleyecek olmanız gereken durumlar olduğundan çok belirsiz olurdu.

30 Answers


Rod 07/28/2017.

Python 2 , 36 bayt

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

Çevrimiçi deneyin!

4 comments
Mr. Xcoder 07/28/2017
Dışarıda kalmamı bekliyordum, ama o kadar da kötü değil :)
Erik the Outgolfer 07/28/2017
x[:1] yerine x[0] yapamazmısın?
Rod 07/28/2017
@EriktheOutgolfer evet, ancak bir liste olması gerekiyor, bu yüzden [x[0]] olurdu
Erik the Outgolfer 07/28/2017
@Rod Herhangi baytları x[:1] ile kaydetmiyorsunuz herhalde ... f=lambda x:x and[x[0]]+f(x[x[0]+1:])

Mr. Xcoder 08/19/2017.

Python 2 , 49 46 * 41 bayt

Çarpı 4, hala normal 4 :(

* -3 thanks to @ASCII-only .

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

Çevrimiçi deneyin!

Sohbette izin verilen OP sonuçlarını, yeni satırla ayrılmış olarak yazdırır. non-recursive full program bir non-recursive full program olarak daha kısa süreceğini sanmıyorum.


Bu nasıl çalışıyor?

  • l=input() - Listeyi standart girdiden okur.

  • while l: - Boş listelerin Python'da yanlış olduğunu kötüye while l: , liste boşalıncaya kadar döngüler.

  • print l[0]; - Listenin ilk öğesini basar.

  • l=l[l[0]+1:] - "Tavşan gibi atlar" - Listedeki ilk l[0]+1 sadeleştirir.

Örnek alalım

Giriş olarak liste [5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0] verildiğinde, kod aşağıdaki işlemleri gerçekleştirir (yukarıdaki açıklamaya göre) - Dizi: 5 , ilk 6'yı düzeltin: [2, 1, 2, 1, 0, 0] . Daha sonra 2 basarak ilk 3'ü [1,0,0] : [1,0,0] . Aynı şekilde, 1 çıktılar, ilk 2'yi kırparız ve biz [0] alırsınız. Elbette, 0 yazdırılır ve program sonlandırılır.

1 comments

w0lf 07/28/2017.

Haskell, 29 27 26 bayt

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

Zgarb sayesinde 1 bayta kaydedildi.

Onu çevrimiçi deneyin.

2 comments
Zgarb 07/28/2017
f x=x ikinci satırda bir bayt kaydeder.
w0lf 07/28/2017
@Zgarb Cool, teşekkürler!

Adnan 07/28/2017.

05AB1E , 10 9 bayt

[¬Dg>#=ƒ¦ 

05AB1E kodlamayı kullanır. Çevrimiçi deneyin!

1 comments
Magic Octopus Urn 07/28/2017
Evet, bu, düşündüğümden daha iyi.

Martin Ender 07/28/2017.

Mathematica, 46 44 bayt

SequenceCases[#,NO 

Alternatifler:

SequenceCases[#,NO 
1 comments
Mr.Wizard 07/28/2017
Vay bu harika!

Johan Karlsson 07/28/2017.

JavaScript (ES6), 42 39 35 bayt

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] 

Eski Çözüm 39 Bayt

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

-3 bytes thanks to @ThePirateBay

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

TheLethalCoder 07/28/2017.

C #, 68 bayt

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

Çevrimiçi deneyin!

Tam / Biçimlendirilmiş sürüm:

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

Bir listeye geri dönmek 107 bayta daha uzun.

 a=>{var l=new System.Collections.Generic.List();for(int i=0;i 
3 comments
2 TheLethalCoder 07/28/2017
Neden biri bunu reddetti?
Thomas Ayoub 07/31/2017
Puanınızı çevirmek ve mükemmel bir 5k yapmak için?
TheLethalCoder 07/31/2017
@ThomasAyoub Sadece OKB'ye sahip birinin evet olduğunu varsayabiliriz.

Zgarb 07/28/2017.

Husk , 8 6 bayt

←TU¡Γ↓ 

Çevrimiçi deneyin!

Leo sayesinde -2 bayt (ve tamamen yeni bir çözüm fikri)!

açıklama

Liste desen eşleştirme işlevi Γ . Bir fonksiyon f ve kafa x ve kuyruk xs içeren bir liste alır ve x ve xs için f uygular. Liste boşsa, Γ , türüne uygun, bu durumda boş bir liste ile uyumlu bir varsayılan değer döndürür. F'yi x elemanlarını düşüren olarak alıyoruz. Bu fonksiyon daha sonra tekrarlanır ve ortaya çıkan öğeler bir listede toplanır.

←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
Varsayılan değer olan ø'yi bırakabilir ve her şey hala sihirle çalışır :)
Zgarb 07/28/2017
@Leo Oh vay be, bu çok zekice!
Erik the Outgolfer 07/28/2017
Neden bunu yaptın?
Zgarb 07/28/2017
@ErikTheOutgolfer Bu bir yanlışlıktı (telefonumdayım ve görünüşe göre kazayla ittim). Onu geri almaya çalışıyorum ...

Ruud 07/28/2017.

Python 2 , 59 55 bayt

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

Çevrimiçi deneyin!

2 comments
1 Rod 07/28/2017
Bir bayt kaydetmek için del l[i:i+l[i-1]] yerine l[i:i+l[i-1]]=[] del l[i:i+l[i-1]] kullanabilirsiniz
1 ASCII-only 07/28/2017

Dave 07/28/2017.

Pyth, 22 Bayt

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

İşe yaramaz bir bayt kaldırıldı

4 comments
Erik the Outgolfer 07/28/2017
Orada 23 bayt görüyorum.
Dave 07/28/2017
Tipo :) özür dilerim ...
3 Wheat Wizard 07/28/2017
Neden oyunuzu vereceğinizden emin değilim. Cevabınızı düzelttiğinizde bunun bir "otomatik oylama" başlatması ihtimali var. Bu otomatik downvote'un nedenleri kafa karıştırıcı ve korkunç ama sistem, cevabını heuristik temelli "düşük kalite" olarak görürse olur. Ayrıca, birisinin cevabınızı beğenmemesi mümkündü, ancak şu anda bununla ilgili yanlış bir şey görmüyorum, dolayısıyla bunun neden olacağından emin değilim.
isaacg 07/31/2017
Pyth kullandığınıza sevindim!

Rod 07/28/2017.

Python 2 , 60 42 bayt

Luis Mendo sayesinde -18 bayt

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

Çevrimiçi deneyin!


Martin Ender 07/28/2017.

Retina , 36 bayt

Bayt sayısı ISO 8859-1 kodlamasını varsayar.

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

Giriş ve çıkış, satır sonu besleme ile satır besleme ile ayrılır.

Çevrimiçi deneyin! (Uygun test takımlarına izin vermek için satır besleme yerine virgül kullanır.)


Riley 07/28/2017.

Beyin-Flak , 64 bayt

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

Çevrimiçi deneyin!

([]){{}                          ([])}{}                         # Until the stack is empty
       (({})<>)<>                                                # Copy TOS to off stack
                 {({}[()]<{}>)}{}                                # Pop TOS times
                                        <>([]){{}({}<>)<>([])}<> # Reverse off stack 
2 comments
6 DJMcMayhem 07/28/2017
Kahretsin! Bir çözüm yazdım ve daha sonra yayımlamak için aşağıya doğru kaydırdım, fakat sonuçta exact aynı çözümü byte-by-byte yazdık! ({}[()]<{}>) Vs ({}<{}>[()]) gibi küçük ayrıntılar bile aynıydı! Ne tesadüf!
2EZ 4RTZ 07/28/2017
@DJMcMayhem tüm şöhreti XD'yi çaldı

user202729 07/28/2017.

Mathematica, 64 50 bayt

±x_List:=Prepend[±Drop[x,1+#&@@x],#&@@x]
±_=±{}={} 
1 comments
Mr.Wizard 07/28/2017
Bu temiz kodu daha fazla golf oynamaya direndim değil; Cevabım aşağıda.

jkelm 07/28/2017.

C # (.NET Core) , 68 bayt

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

Çevrimiçi deneyin!

Girdiyi bir dizi tamsayı olarak alır, atlanmayan değerleri içeren bir dize döndürür.

3 comments
TheLethalCoder 07/28/2017
Bunu yapmak için güzel bir yol ve aynı baskı olarak gelir.
jkelm 07/28/2017
Basit çözümleri seviyorum. Hala LINQ öğreneceğim, çünkü o kadar çok c # lambdas kısalttığını gördüm ..
TheLethalCoder 07/28/2017
Kısaltır çünkü çoğu zaman dönüşü örtbas edebilirsiniz. using System.Linq; örtülü dönüş arasında bir toss olsa da using System.Linq; Ve normal bir halka.

Jarko Dubbeldam 07/28/2017.

R, 58 bayt

f=function(x,p=1)NO 

Özyinelemeli işlev. Bir x vektörünü argüman olarak alır ve bir işaretçi p girer. Bu, x karşılık gelen girdisini yazdırır, p+x[p] 'nin sınırların dışına çıkıp çıkmadığını denetler; yoksa yeni işaretçi için işlevi çağırır.

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

Bu, basamakların yerine doğru bir vektörü döndüren karşılaştırılabilir bir çözümdür.

3 comments
Giuseppe 07/28/2017
numeric(0) girdisine ne dersiniz? Aka boş dizi.
Jarko Dubbeldam 07/28/2017
@Giuseppe Bilgisayarımın arkasında olduğumda ona bir göz atacağım
Giuseppe 08/24/2017
57 bayt! Ve boş kutuyu da yönetir.

Roman Gräf 07/28/2017.

Java (OpenJDK 8) , 53 bayt

@ PunPun1000 ve @TheLethalCoder'a teşekkürler

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

Çevrimiçi deneyin!

5 comments
TheLethalCoder 07/28/2017
C # yanıtımdaki gibi sonuçları yazdırabilir miyim?
Roman Gräf 07/28/2017
@TheLethalCoder Ben deneyin
TheLethalCoder 07/28/2017
n yi ilmek içine alarak bir bayt kaydedebilir misiniz?
TheLethalCoder 07/28/2017
Ayrıca bu şu anda çalışmıyor gibi görünüyor.
PunPun1000 07/28/2017
(a[n+=1+a[n]] sonrasında bir paren eksikliyorsunuz. İşlev doğru değeri verdikten sonra da bir hata attığında bunun izinli olup olmadığı konusunda fikir birliğine varamıyorum (soru şu. Standart hataya bir şey yok saymak demek) n , for döngüsündeki n kaldırabilirsiniz Son olarak, TIO kodu olduğu gibi n ile bile çalışmaz. Bir Consumer kullanın ve func.accept(test) kullanın

Martin Ender 07/28/2017.

Alice , 15 bayt

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

Çevrimiçi deneyin!

Satır besleme ile ayrılmış ondalıklı tamsayılar listesini girin ve verin.

açıklama

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

Yineleyici sırasına bir tamsayının n depolanması, bir sonraki komutu n defa yürütmeye neden olur. Aynalar, komutlar değil, bu yüzden bir sonraki komut benim olacak. Bu nedenle x değerini okumak ve bastırırsak sonraki italasyonda x+1 değerlerini okuruz, sonuncusu da yığının üzerinde kalır. Bu, gerekli sayı listesi öğelerini atlar.


Mr.Wizard 07/28/2017.

Mathematica , 37 (30)

User202729'un güzel yönteminin daha fazla golfçiliği.

±NO 

Kurallar çıktı formatını açıkça belirtmiyormuş gibi görünüyor, belki de:

±NO 

İkinci işlevin çıktısı şu 0.2.4.{} : 0.2.4.{} - özellikle son kurala uygun, boş bir küme için {} .

2 comments
1 JungHwan Min 07/28/2017
±Drop[NO , ±NO çünkü ± , Infix daha düşük önceliğe sahiptir.
Mr.Wizard 07/28/2017
@JungHwanMin Bunu kaçırdım; Teşekkürler!

Jenny_mathy 07/28/2017.

Mathematica, 65 bayt

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

Çevrimiçi deneyin!


w0lf 07/28/2017.

Ruby, 36 33 31

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

Onu çevrimiçi deneyin.

4 comments
sethrin 07/30/2017
f= 'yi bir başlık öğesi olarak çıkarmanıza izin verilir.
w0lf 07/30/2017
@sethrin Buna tekrar tekrar çağırmam gerekse bile mi?
sethrin 07/30/2017
Hmm, iyi soru. Sanmıyorum. Bu arada çözümünüz hakkında çok beğendim.
w0lf 07/30/2017
@ Sethrin Teşekkürler! :)

AnonymousReality 07/28/2017.

Swift, 63 bayt

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

Bu, ilk girişimi, şimdiye kadar, bu yüzden kuralları% 100 emin değilim, ama umarım bu cevap yeterli. Bir sisteme girdi alma kuralları konusunda biraz emin değilim. Girişi geri getirebilecek bir işlevi üstlenmeme izin verildiysek, daha kısa bir yanıtım var.

2 comments
Stephen 07/28/2017
PPCG'ye hoşgeldiniz! Varsayılan kurallar, ya tam bir program olarak çalışan, bu nedenle STDIN'de girdi (genellikle) ve çıkış (genellikle) ile STDOUT'a or bir fonksiyona sahip olmanızdır, böylece fonksiyon parametrelerinden ve çıktıdan (genellikle) gelen bir giriş Işlev geri dönüşü.
AnonymousReality 07/28/2017
@StepHen - teşekkürler! Sanırım bu benim diğer sürümümü geçersiz kılıyor. Katkıda bulunmak için sabırsızlanıyoruz!

Perl 6 , 31 bayt

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

Dene

Expanded:

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

[*;0] olmadan kodun nasıl çalıştığını anlamanıza yardımcı olması için aşağıdakine benzer bir dizi üretiriz:

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

Ortak Lisp, 51 bayt

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

Çevrimiçi deneyin!


C ++ (gcc), 172 bayt

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

Çevrimiçi deneyin

Berbat (c/91?"":" ") Çıktıdaki doğru aralık içindir. [0,2,4] , basit " " (-9 bayt) çıktısına dönüştüğünde [ 0, 2, 4] (başlangıçta ek alan) .

Sonunda <<(c/93?"":"]") Yalnızca [] boş giriş köşesi davasını işlemek için

Arka bitiş çizgisi yazdırmaz.

1 comments
Erik the Outgolfer 07/30/2017
Rakamları hiçbir basamaklı ayraç ile ayrılmış olarak yazdırabilir, [] gerekmez ve bu kenar durum için boş bir çıktıa sahip olabilirsiniz ve (c/91?"":" ") . Meydan okumadaki örneklerin biçimiyle eşleşmeniz gerekmez.

Jonathan Allan 07/29/2017.

Jöle , 8 bayt

ḢṄ‘ṫ@µL¿ 

Sonuçların her birini bir satırsonu karakteriyle yazan tam bir program (boş liste çıktı oluşturmaz).

Try it online!

Nasıl?

ḢṄ‘ṫ@µ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
Sonunda bir Jöle cevabı! BTW 7 bayt olarak yapabilirsiniz.
Erik the Outgolfer 07/30/2017
Ayrıca 18 baytlık bir liste döndüren işlevim var.

Evpok 07/30/2017.

Python 3 , 35 bayt

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

Çevrimiçi deneyin!

f(*l) ile çalıştırın, burada l sizin girişinizdir. Belirgin bir şekilde girdi kurallarını germekle birlikte, gelişmiş paket açmayı çok seviyorum.


cliffroot 07/28/2017.

Clojure, 67 bayt

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

Başlangıç ​​parametreleri [0 []] , burada 0 sayaç ve [] sonuçtur. Bu listedeki ilk öğe, 0 öğesine, sonuç argümanından ekler ve aksi takdirde bu listeyi [n [... n]] geçerse aksi takdirde ilk öğeyi azaltır. (Bu açıklama bana korkunç geliyor)

Çevrimiçi gör


Dead Possum 07/28/2017.

Python 2.4, 85 bayt

Onunla python kazanmak için hiçbir şans, ama oneliners seviyorum ve bu başkaları için ilginç olabilir.
Anlaşıldığı zaman bina listesine erişmek için süslü bir büyü püf noktası var, ancak sadece 2.4'de ve <= 2.3'te bazı düzenlemelerle çalışıyor.
locals()['_[1]'] öyle. Python, listeye yaratılmış ve locals sakladığı sırada, gizli isim _[1] oluşturur. Ayrıca _[2] , _[3] ... adları iç içe geçmiş listeler için kullanılır.

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

Bu nedenle, eklenen eleman sayısına artı toplamı sayılır. Sonuç, bir sonraki istenen elementin endeksidir.
Sanırım numaralandırmayı önlemenin bir yolu olmalı. Girdi dizisine direkt indeks ile erişmek gibi: [ n[len(locals()['_[1]'])+sum(locals()['_[1]'])] for ... ] . Ancak, dizin aralığından korumak için kompakt bir yol bulamıyorum (oneliner tutarken)

Resim açıklamasını buraya girin


Neil 07/28/2017.

Toplu iş, 69 bayt

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

(Çevresinde () s goto gerek duyduğumda for aksi takdirde goto döngü içinde olur.)


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