Bỏ qua như con thỏ!

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

Cho một danh sách các số nguyên dương không âm ở bất kỳ định dạng hợp lý, iterate trên nó, bỏ qua như nhiều yếu tố như mỗi số nguyên bạn bước vào nói.


Đây là một ví dụ làm việc:

[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 

Một ví dụ khác đã làm việc, không phải là tất cả-đồng bằng-đồng bằng:

[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 

Một ví dụ ngoài phạm vi hạn chế:

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

Quy tắc

  • Bạn không thể sử dụng bất kỳ cheat nhàm chán trong số những người này , họ làm cho các thách thức nhàm chán và không thú vị.
  • Bạn chỉ nên trả lại / in kết quả cuối cùng. Đầu ra STDERR bị bỏ qua.
  • Bạn không thể nhận được đầu vào như là một chuỗi số ở bất kỳ cơ sở nào (ví dụ "0102513162" cho trường hợp đầu tiên).
  • Bạn phải sử dụng đơn đặt hàng từ trái sang phải.
  • Như trong các ví dụ đã làm việc, nếu bạn đi ra khỏi giới hạn, việc thực hiện chấm dứt như thể nếu không.
  • Bạn nên sử dụng 0 để bỏ qua 0 phần tử.
  • Cho danh sách trống ( [] ) làm đầu vào, bạn nên trở lại [] .

Trường hợp kiểm tra

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

Đây là , vì vậy câu trả lời ngắn nhất thắng!

5 Comments
Erik the Outgolfer 28/07/2017
Sandbox (chỉ dành cho người dùng 2k +)
3 Shaggy 28/07/2017
Vâng, chỉ cần phát hiện ra nó. / đặt kính vào
2 Rod 28/07/2017
Có thể là một con leprechaun ¯ \ _ (ツ) _ / ¯
1 Roman Gräf 28/07/2017
Có okay để có dấu vết không gian trong mảng của tôi? sẽ tiết kiệm cho tôi ~ 18 byte
1 Erik the Outgolfer 28/07/2017
@ RomanGräf Xin lỗi, nhưng không, đó sẽ là quá mơ hồ vì có trường hợp bạn nên có dấu 0 s trong đầu ra.

30 Answers


Rod 28/07/2017.

Python 2 , 36 bytes

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

Hãy thử trực tuyến!

4 comments
Mr. Xcoder 28/07/2017
Tôi đã mong đợi để có được outgolfed, nhưng không phải là xấu :)
Erik the Outgolfer 28/07/2017
Bạn không thể làm x[0] thay vì x[:1] ?
Rod 28/07/2017
@EriktheOutgolfer có, nhưng nó cần phải là một danh sách, do đó, nó sẽ là [x[0]]
Erik the Outgolfer 28/07/2017
@Rod Bạn không lưu bất kỳ byte nào với x[:1] anyways ... f=lambda x:x and[x[0]]+f(x[x[0]+1:])

Mr. Xcoder 19/08/2017.

Python 2 , 49 46 * 41 byte

Vượt ra ngoài 4 vẫn thường xuyên 4 :(

* -3 thanks to @ASCII-only .

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

Hãy thử trực tuyến!

In các kết quả được phân cách bởi một dòng mới, như là OP được phép trong cuộc trò chuyện. Tôi không nghĩ rằng nó có thể có được bất kỳ ngắn hơn như là một non-recursive full program .


Cái này hoạt động ra sao?

  • l=input() - Đọc danh sách từ đầu vào tiêu chuẩn.

  • while l: - Lạm dụng thực tế là các danh sách trống rỗng là sai trong Python, lặp lại cho đến khi danh sách trống.

  • print l[0]; - In phần tử đầu tiên của danh sách.

  • l=l[l[0]+1:] - "Bỏ qua như một con thỏ" - Trim đầu tiên l[0]+1 từ danh sách.

Hãy lấy ví dụ

Trong danh sách [5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0] là đầu vào, mã thực hiện như sau (theo giải thích ở trên) - In mục đầu tiên của mảng: 5 , tỉa 6 đầu tiên: [2, 1, 2, 1, 0, 0] . Chúng tôi sau đó in 2 và cắt đầu tiên 3: [1,0,0] . Tương tự như vậy, chúng ta đưa ra 1 , cắt cây đầu tiên 2, và chúng ta nhận được [0] . Tất nhiên, 0 được in và chương trình chấm dứt.

1 comments

w0lf 28/07/2017.

Haskell, 29 27 26 byte

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

Đã lưu 1 byte nhờ Zgarb.

Hãy thử trực tuyến.

2 comments
Zgarb 28/07/2017
f x=x trên dòng thứ hai tiết kiệm một byte.
w0lf 28/07/2017
@Zgarb Cool, cảm ơn!

Adnan 28/07/2017.

05AB1E , 10 9 bytes

[¬Dg>#=ƒ¦ 

Sử dụng mã hóa 05AB1E . Hãy thử trực tuyến!

1 comments
Magic Octopus Urn 28/07/2017
Vâng, đó là cách tốt hơn những gì tôi nghĩ.

Martin Ender 28/07/2017.

Mathematica, 46 44 byte

SequenceCases[#,NO 

Các lựa chọn thay thế:

SequenceCases[#,NO 
1 comments
Mr.Wizard 28/07/2017
Ồ điều đó thật tuyệt!

Johan Karlsson 28/07/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] 

Giải pháp Cũ 39 Bytes

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

-3 bytes thanks to @ThePirateBay

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

TheLethalCoder 28/07/2017.

C #, 68 byte

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

Hãy thử trực tuyến!

Phiên bản đầy đủ / định dạng:

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

Trả lại danh sách dài hơn 107 byte.

 a=>{var l=new System.Collections.Generic.List();for(int i=0;i 
3 comments
2 TheLethalCoder 28/07/2017
Tại sao có người downvoted này?
Thomas Ayoub 31/07/2017
Để điểm số của bạn và làm cho một 5k hoàn hảo?
TheLethalCoder 31/07/2017
@ ThomasAyoub Chúng ta chỉ có thể giả định rằng nó là một người có OCD có.

Zgarb 28/07/2017.

Trứng , 8 6 byte

←TU¡Γ↓ 

Hãy thử trực tuyến!

-2 byte (và một ý tưởng giải pháp hoàn toàn mới) nhờ Leo!

Giải trình

Tôi đang sử dụng chức năng phù hợp với mô hình danh sách Γ . Nó mất một chức năng f và một danh sách với đầu x và đuôi xs , và áp dụng f đến xxs . Nếu danh sách trống, Γ trả về một giá trị mặc định phù hợp với loại của nó, trong trường hợp này là một danh sách trống. Chúng ta lấy f , giọt các phần tử x từ xs . Chức năng này sau đó được lặp lại và các phần tử kết quả được thu thập trong một danh sách.

←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 28/07/2017
Bạn có thể bỏ giá trị mặc định của ø, và mọi thứ vẫn hoạt động kỳ diệu :)
Leo 28/07/2017
Zgarb 28/07/2017
@Leo Oh wow, đó là thông minh!
Erik the Outgolfer 28/07/2017
Tại sao bạn CW này?
Zgarb 28/07/2017
@ErikTheOutgolfer Đó là một sai lầm (tôi đang trên điện thoại của tôi và dường như đẩy một cái gì đó do tai nạn). Tôi đang cố gắng hoàn tác nó ...

Ruud 28/07/2017.

Python 2 , 59 55 bytes

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

Hãy thử trực tuyến!

2 comments
1 Rod 28/07/2017
Bạn có thể sử dụng l[i:i+l[i-1]]=[] thay vì del l[i:i+l[i-1]] để tiết kiệm một byte
1 ASCII-only 28/07/2017

Dave 28/07/2017.

Pyth, 22 Bytes

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

Loại bỏ một byte vô ích

4 comments
Erik the Outgolfer 28/07/2017
Tôi thấy 23 byte ở đó.
Dave 28/07/2017
Typo :) xin lỗi ...
3 Wheat Wizard 28/07/2017
Tôi không chắc tại sao bạn có một phiếu bầu. Có một khả năng là khi bạn sửa sửa câu trả lời của bạn, điều này đã kích hoạt một "phiếu bầu tự động". Những lý do cho downvote tự động này là khó hiểu và khủng khiếp nhưng nó sẽ xảy ra nếu hệ thống xem câu trả lời của bạn là "chất lượng thấp" dựa trên heuristic. Cũng có thể là ai đó không thích câu trả lời của bạn, nhưng tôi không thấy bất cứ điều gì sai với nó vào lúc này vì vậy tôi không chắc chắn tại sao có thể là vụ án.
isaacg 31/07/2017
Tôi vui vì bạn đang sử dụng Pyth!

Rod 28/07/2017.

Python 2 , 60 42 bytes

-18 byte nhờ Luis Mendo

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

Hãy thử trực tuyến!


Martin Ender 28/07/2017.

Retina , 36 byte

Số byte giả định mã hoá ISO 8859-1.

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

Dữ liệu đầu vào và đầu ra được tách linefeed với dòng cuối theo hàng.

Hãy thử trực tuyến! (Sử dụng dấu phẩy thay vì dòng lệnh để cho phép bộ kiểm tra thuận tiện.)


Riley 28/07/2017.

Brain-Flak , 64 byte

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

Hãy thử trực tuyến!

([]){{}                          ([])}{}                         # Until the stack is empty
       (({})<>)<>                                                # Copy TOS to off stack
                 {({}[()]<{}>)}{}                                # Pop TOS times
                                        <>([]){{}({}<>)<>([])}<> # Reverse off stack 
2 comments
6 DJMcMayhem 28/07/2017
Holy crap! Tôi đã viết một giải pháp, và sau đó cuộn xuống để đăng nó, nhưng nó biến ra chúng tôi đã viết các giải pháp cùng một exact byte-by-byte! Ngay cả những chi tiết nhỏ như ({}[()]<{}>) vs ({}<{}>[()]) đều giống nhau! Thật là một sự trùng hợp!
2EZ 4RTZ 28/07/2017
@DJMcMayhem ăn cắp tất cả các danh tiếng XD

user202729 28/07/2017.

Mathematica, 64 50 byte

±x_List:=Prepend[±Drop[x,1+#&@@x],#&@@x]
±_=±{}={} 
1 comments
Mr.Wizard 28/07/2017
Tôi không thể cưỡng lại được việc chơi gôn này nữa; câu trả lời của tôi là dưới đây.

jkelm 28/07/2017.

C # (.NET Core) , 68 byte

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

Hãy thử trực tuyến!

Lấy đầu vào như là một mảng các số nguyên, trả về một chuỗi chứa các giá trị không bị bỏ qua.

3 comments
TheLethalCoder 28/07/2017
Cách tốt để làm điều đó và đi kèm với số lượng tương tự như in ấn.
jkelm 28/07/2017
Tôi yêu những giải pháp đơn giản. Vẫn còn phải học LINQ mặc dù, như tôi đã thấy rằng rút ngắn rất nhiều c # lambdas ..
TheLethalCoder 28/07/2017
Rút ngắn nó bởi vì bạn có thể tiềm ẩn trở lại hầu hết thời gian. Mặc dù nó là một quăng lên giữa tiềm ẩn với using System.Linq; và một vòng lặp bình thường.

Jarko Dubbeldam 28/07/2017.

R, 58 byte

f=function(x,p=1)NO 

Hàm đệ qui. Lấy một vector x là đối số và intiates một con trỏ p . Điều này sẽ in ra mục tương ứng của x , kiểm tra nếu p+x[p] sẽ đi ra ngoài giới hạn, và nếu không, gọi hàm cho con trỏ mới.

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

Đây là một giải pháp có thể so sánh trả về một vector đúng đắn thay vì in các chữ số.

3 comments
Giuseppe 28/07/2017
những gì về một đầu vào của numeric(0) ? aka mảng trống.
Jarko Dubbeldam 28/07/2017
@ Giuseppe Tôi sẽ xem nó khi tôi đằng sau pc của tôi
Giuseppe 24/08/2017
57 byte! và nó xử lý các trường hợp trống là tốt.

Roman Gräf 28/07/2017.

Java (OpenJDK 8) , 53 byte

Cảm ơn @ PunPun1000 và @TheLethalCoder

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

Hãy thử trực tuyến!

5 comments
TheLethalCoder 28/07/2017
Sẽ in kết quả, như trong câu trả lời C # của tôi, tiết kiệm cho bạn bất cứ điều gì?
Roman Gräf 28/07/2017
@ TheLethalCoder III thử
TheLethalCoder 28/07/2017
Bạn có thể tiết kiệm một byte bằng cách di chuyển n vào vòng lặp?
TheLethalCoder 28/07/2017
Cộng với điều này dường như không hoạt động vào lúc này.
PunPun1000 28/07/2017
Bạn đang thiếu một paren sau khi (a[n+=1+a[n]] . Chức năng cũng ném một lỗi sau khi xuất ra giá trị chính xác, tôi không biết sự đồng thuận về việc liệu điều này được phép hay không (câu hỏi không nói bất cứ điều gì để lỗi tiêu chuẩn là bỏ qua) .Nếu đó là ý định, sau đó bạn có thể loại bỏ các n trong vòng lặp cho.Ví dụ cuối cùng mã TIO không chạy như là, ngay cả với paren.Những chức năng nên được một Consumer và sử dụng func.accept(test)

Martin Ender 28/07/2017.

Alice , 15 byte

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

Hãy thử trực tuyến!

Nhập và xuất một danh sách các số nguyên thập phân bằng dòng lệnh.

Giải trình

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

Lưu trữ một số nguyên n trong hàng đợi Iterator khiến cho lệnh tiếp theo được thực hiện n lần. Gương như / không phải là lệnh, do đó, lệnh tiếp theo sẽ được I . Do đó, nếu chúng ta chỉ đọc và in một giá trị x , chúng ta sẽ đọc các giá trị x+1 trên lần lặp kế tiếp, và cuối cùng chúng kết thúc trên đỉnh stack. Việc này bỏ qua các yếu tố danh sách số yêu cầu.


Mr.Wizard 28/07/2017.

Mathematica , 37 (30?)

Tiếp tục chơi golf theo phương pháp tốt của user202729.

±NO 

Các quy tắc dường như không rõ ràng xác định định dạng đầu ra, do đó, có thể:

±NO 

Đầu ra cho hàm thứ hai trông giống như sau: 0.2.4.{} - đáng chú ý {} vẫn trả về một tập rỗng, phù hợp với quy tắc cuối cùng.

2 comments
1 JungHwan Min 28/07/2017
±Drop[NO có thể là ±NO bởi vì ± có độ ưu tiên thấp hơn Infix .
Mr.Wizard 28/07/2017
@JungHwanMin Tôi nhớ điều đó; cảm ơn!

Jenny_mathy 28/07/2017.

Mathematica, 65 byte

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

Hãy thử trực tuyến!


w0lf 28/07/2017.

Ruby, 36 33 31

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

Hãy thử trực tuyến.

4 comments
sethrin 30/07/2017
Bạn được phép trừ các f= như một phần tử tiêu đề.
w0lf 30/07/2017
@ sineth Ngay cả khi tôi cần phải gọi nó đệ quy?
sethrin 30/07/2017
Hmm, câu hỏi hay. Tôi cho rằng không. Tôi đã làm rất nhiều như vậy về giải pháp của bạn, bằng cách này.
w0lf 30/07/2017
@Sethrin Cảm ơn! :)

AnonymousReality 28/07/2017.

Swift, 63 byte

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

Đây là mục nhập đầu tiên của tôi, bao giờ hết, vì vậy tôi không chắc chắn 100% về các quy tắc, nhưng hy vọng câu trả lời này là đủ. Tôi là một chút không chắc chắn về các quy tắc về làm thế nào để có được đầu vào vào một hệ thống. Tôi có một câu trả lời ngắn hơn nếu tôi được phép giả định một chức năng nào đó có thể trả lại đầu vào.

2 comments
Stephen 28/07/2017
Chào mừng bạn đến với PPCG! Các quy tắc mặc định là bạn có thể có mã hoạt động như một chương trình đầy đủ, do đó đầu vào (thường) trong STDIN và đầu ra (thường) đến STDOUT, or một hàm, do đó đầu vào (thường) từ các tham số hàm và đầu ra (thường) từ trở lại chức năng.
AnonymousReality 28/07/2017
@StepHen - cảm ơn! Tôi đoán rằng làm cho phiên bản khác của tôi không hợp lệ sau đó. Mong được đóng góp thêm!

Perl 6 , 31 byte

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

Kiểm tra nó

Mở rộng:

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

Để giúp hiểu mã hoạt động như thế nào, mà không có [*;0] điều này sẽ tạo ra một chuỗi như sau:

 [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 29/07/2017.

Common Lisp, 51 byte

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

Hãy thử trực tuyến!


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< 

Thử trực tuyến

Các awful (c/91?"":" ") Là khoảng cách chính xác trong đầu ra. Nếu không có nó (-15 bytes) đầu ra là ở dạng: [0,2,4] , khi tôi thay đổi nó thành đơn giản " " (-9 byte) đầu ra giống như [ 0, 2, 4] (bổ sung không gian lúc đầu) .

<<(c/93?"":"]") ở cuối chỉ để xử lý trường hợp đầu vào rỗng rỗng

In không có dấu chấm hết.

1 comments
Erik the Outgolfer 30/07/2017
Bạn cũng có thể in các số được phân cách bằng dấu cách không có chữ số, không cần [] và bạn có thể có đầu ra rỗng cho trường hợp cạnh đó, và không cần (c/91?"":" ") . Bạn không phải khớp với định dạng của các ví dụ trong thách thức.

Jonathan Allan 29/07/2017.

Jelly , 8 byte

ḢṄ‘ṫ@µL¿ 

Một chương trình đầy đủ in kết quả mỗi theo sau bởi một dòng mới (danh sách trống không sản xuất ra).

Try it online!

Làm sao?

ḢṄ‘ṫ@µ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 30/07/2017
Cuối cùng một câu trả lời Jelly! BTW tôi có thể làm điều đó trong 7 byte.
Erik the Outgolfer 30/07/2017
Và tôi cũng có một danh sách-trở lại chức năng trong 18 byte.

Evpok 30/07/2017.

Python 3 , 35 byte

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

Hãy thử trực tuyến!

Chạy nó với f(*l) trong đó l là đầu vào của bạn. Có khả năng kéo dài các quy tắc cho đầu vào, nhưng tôi chỉ cần tình yêu giải nén tiên tiến.


cliffroot 28/07/2017.

Clojure, 67 byte

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

Bắt đầu với các tham số ban đầu [0 []] , trong đó 0 là bộ đếm và [] là kết quả. Nếu phần tử đầu tiên trong danh sách này là 0 nối thêm mục n từ đối số cho kết quả và chuyển tiếp danh sách này [n [... n]] nếu không sẽ giảm phần tử đầu tiên. (lời giải thích này làm tôi kinh khủng)

Xem trực tuyến


Dead Possum 28/07/2017.

Python 2.4, 85 byte

Không có cơ hội để giành chiến thắng trong trăn với nó, nhưng tôi thích oneliners và điều này có thể là thú vị cho người khác.
Hóa ra, có một mẹo kỳ diệu kỳ diệu để truy cập danh sách xây dựng bên trong hiểu, nhưng nó chỉ hoạt động trong 2,4 và với một số chỉnh sửa trong <= 2,3
locals()['_[1]'] nó được. Python tạo tên bí mật _[1] cho danh sách, trong khi nó được tạo ra và lưu trữ nó ở locals . Cũng tên _[2] , _[3] ... được sử dụng cho các danh sách lồng nhau.

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

Vì vậy, nó đếm số lượng các yếu tố đã được thêm vào cộng với tổng của họ. Kết quả là chỉ số của phần tử mong muốn tiếp theo.
Tôi nghĩ rằng, cần có một cách để tránh liệt kê. Giống như truy cập mảng đầu vào trực tiếp bởi chỉ mục: [ n[len(locals()['_[1]'])+sum(locals()['_[1]'])] for ... ] . Nhưng tôi không thể tìm ra một cách nhỏ gọn để bảo vệ nó khỏi chỉ số-out-of-range (trong khi giữ nó oneliner)

nhập mô tả hình ảnh ở đây


Neil 28/07/2017.

Batch, 69 byte

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

(Tôi cần () s xung quanh for nếu không goto xảy ra bên trong vòng lặp.)


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 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
4 Anne-Marie

Rewrite The Stars flac

Anne-Marie. 2018. Writer: Benj Pasek;Justin Paul.
5 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
6 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.
7 BlackPink

Kiss And Make Up flac

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

Bad Liar flac

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

Waste It On Me flac

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

Without Me flac

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

Woman Like Me flac

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

Limbo flac

Brooks. 2018.
13 Fitz And The Tantrums

HandClap flac

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

Chances flac

Backstreet Boys. 2018.
15 Lady Gaga

I'll Never Love Again flac

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

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
17 Rita Ora

Velvet Rope flac

Rita Ora. 2018.
18 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
19 Imagine Dragons

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
20 Erika Sirola

Speechless flac

Erika Sirola. 2018. Writer: Teemu Brunila;Stefan Dabruck;Jürgen Dohr;Guido Kramer;Dennis Bierbrodt;Chris Braide;Robin Schulz.

Related questions

Hot questions

Language

Popular Tags