Dữ liệu được liên kết đôi


12

Danh sách liên kết đôi là một cấu trúc dữ liệu trong đó mỗi nút có một value"liên kết" với cả hai previousvà tiếp theo nodestrong danh sách. Ví dụ: hãy xem xét các nút sau với các giá trị 12, 99 và 37:

Ở đây, các nút có giá trị 1299 trỏ đến các nextnút tương ứng của chúng , với các giá trị 9937 . Nút có giá trị 37 không có nextcon trỏ vì đó là nút cuối cùng trong danh sách. Tương tự, các nút có giá trị 9937 trỏ đến các previousnút tương ứng của chúng , 1299 , nhưng 12 không có previouscon trỏ vì đó là nút đầu tiên trong danh sách.

Các thiết lập

Trong thực tế, các "liên kết" của một nút được triển khai như các con trỏ tới các vị trí của nút trước đó và tiếp theo trong bộ nhớ. Đối với mục đích của chúng tôi, "bộ nhớ" sẽ là một mảng các nút và vị trí của một nút sẽ là chỉ mục của nó trong mảng. Một nút có thể được coi là 3-tuple của biểu mẫu ( prev value next ). Ví dụ trên, sau đó, có thể trông như thế này:

Nhưng nó có thể trông như thế này, thay vào đó:

Bắt đầu tại bất kỳ nút nào, bạn có thể theo previouscác liên kết (được hiển thị dưới dạng nguồn gốc của các mũi tên màu đỏ) để đến các nút trước nó và nextcác liên kết (mũi tên màu xanh lá cây) để tìm các nút tiếp theo để có được tất cả các giá trị của các nút theo thứ tự: [12, 99, 37].

Sơ đồ đầu tiên ở trên có thể được biểu diễn trong một mảng như [[null, 12, 1], [0, 99, 2], [1, 37, null]]. Thứ hai, sau đó, sẽ là [[2, 99, 1], [0, 37, null], [null, 12, 0]].

Các thách thức

Viết chương trình lấy đầu vào là một mảng các nút và chỉ mục của nút và trả về, theo thứ tự danh sách, các giá trị của các nút trong cùng một danh sách liên kết đôi.

Một biến chứng

"Bộ nhớ" sẽ không luôn chứa các nút của chỉ một danh sách. Nó có thể chứa một số danh sách:

Mảng trên chứa ba danh sách liên kết đôi, được mã hóa màu để thuận tiện cho bạn:

  1. Các nút ở chỉ số 7, 10, 1, 4, 3, 12(chỉ hiển thị nextliên kết để giảm lộn xộn; bấm vào để phóng to):

    Với mảng này và bất kỳ chỉ mục nào trong số này, chương trình của bạn sẽ trả về, theo thứ tự, các giá trị [0, 1, 1, 2, 3, 5, 8].

  2. Nút tại chỉ mục 9:

    Đưa ra chỉ số 9, chương trình của bạn sẽ trở lại [99].

  3. Các nút ở chỉ số 11, 8, 0, 6, 2:

    Cho một trong những chỉ số này, nó sẽ trở lại [2, 3, 5, 7, 11].

Quy tắc

Đầu vào

Chương trình của bạn sẽ nhận được như là đầu vào:

  1. Danh sách 𝒏 nút (3-tuples như được mô tả ở trên), trong đó 1 ≤ 1.000, ở bất kỳ định dạng thuận tiện nào, ví dụ: một mảng các mảng, một mảng số nguyên "phẳng" có độ dài 3𝒏, v.v.

    Các phần tử của 3 tuple có thể theo bất kỳ thứ tự nào : ( prev value next ), ( next prev value )v.v. Đối với mỗi nút, prevnextsẽ null(hoặc một giá trị thuận tiện khác, ví dụ -1), chỉ ra nút đầu tiên hoặc nút cuối cùng trong danh sách được liên kết đôi hoặc chỉ mục hợp lệ của danh sách, dựa trên 0 hoặc 1 là thuận tiện. valuesẽ là số nguyên 32 bit đã ký hoặc loại số nguyên lớn nhất mà ngôn ngữ của bạn hỗ trợ, tùy theo số nào nhỏ hơn.

  2. Chỉ số 𝒑 của một nút trong danh sách (1). Nút được chỉ định có thể là nút đầu tiên trong danh sách được liên kết đôi, nút cuối cùng, nút giữa hoặc thậm chí là nút duy nhất.

Danh sách đầu vào (1) có thể chứa dữ liệu bệnh lý (ví dụ: chu kỳ, các nút được chỉ ra bởi nhiều nút khác, v.v.), nhưng chỉ số đầu vào (2) sẽ luôn trỏ đến một nút mà từ đó một đầu ra được tạo thành tốt suy ra.

Đầu ra

Chương trình của bạn sẽ xuất ra các giá trị của các nút trong danh sách liên kết đôi mà nút tại chỉ mục 𝒑 là thành viên, theo thứ tự danh sách. Đầu ra có thể ở bất kỳ định dạng thuận tiện, nhưng dữ liệu của nó phải chỉ bao gồm các nút values.

Chiến thắng

Đây là . Câu trả lời ngắn nhất trong byte thắng. Tiêu chuẩn áp dụng.

Các trường hợp thử nghiệm

Dưới đây, mỗi trường hợp thử nghiệm có dạng:

X)
prev value next, prev value next, ...
index
value value value ...

... trong đó Xmột chữ cái để xác định trường hợp thử nghiệm, dòng thứ hai là danh sách đầu vào, dòng thứ ba là chỉ số đầu vào dựa trên 0 và dòng thứ tư là đầu ra.

A) null 12 1, 0 99 2, 1 37 null
   1
   12 99 37

B) 2 99 1, 0 37 null, null 12 0
   1
   12 99 37

C) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
   4
   0 1 1 2 3 5 8

D) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
   0
   2 3 5 7 11

E) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
   9
   99

F) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
   18
   80 80 67 71

G) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
   8
   1 -1 1 -1 1 -1 1

H) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
   4
   1 3 6 10 15 21

I) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
   14
   3 1 4 1 5 9 2 6 5 3

J) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
   17
   8 6 7 5 3 0 9

K) 4 11 0, null 22 3, null 33 3, 1 44 4, 3 55 null, 7 66 7, 6 77 6
   3
   22 44 55

L) null -123 null
   0
   -123

Liên kết hộp
Jordan


Là đầu vào dưới dạng ba mảng (một mảng chứa tất cả các nút tiền thân theo thứ tự, một giá trị và một nút kế tiếp) được cho phép hay quá xa khái niệm bộ dữ liệu?
Sanchise

@Sanchises Xin lỗi, quá xa đối với tôi.
Jordan

Không sao đâu! Tôi đã nghĩ như vậy, nhưng tôi muốn đi trước bất kỳ bình luận nào về câu trả lời của mình nói rằng tôi có thể loại bỏ hai byte lấy các mảng riêng biệt.
Sanchise

Câu trả lời:


1

05AB1E , 25 byte

è[¬D0‹#Isè]\[`sˆD0‹#Isè]¯

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

Giải trình

è[¬D0‹#Isè]\[`sˆD0‹#Isè]¯   # Arguments n, a
è                           # Get element at index n in a
 [¬D0‹#Isè]                 # Find the first element in the list
 [                          # While true, do
  ¬                         #   Head (get index of previous element)
   D0‹#                     #   Break if lower than 0
       Isè                  #   Get the element at that index
          ]                 # End loop
           \                # Delete top element of stack
            [`sˆD0‹#Isè]    # Iterate through list
            [               # While true, do
             `sˆ            #   Add value to global array and keep next index on stack
                D0‹#Isè     #   Same as above
                       ]    # End loop
                        ¯   # Push global array

3

Haskell , 79 65 59 55 byte

-6 byte nhờ vào Brute Force .

x#i|let-1!d=[];i!d=i:x!!i!!d!d=[x!!i!!1|i<-last(i!0)!2]

Xác định hàm #chấp nhận danh sách các số nguyên, trong đónull được biểu diễn dưới dạng -1và trả về danh sách các giá trị nút.

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

Giải trình

let-1!d=[];i!d=i:x!!i!!d!d

Xác định hàm ! lặp qua các nút bắt đầu tại nút ivà trả về một danh sách các chỉ mục được truy cập. Nó chấp nhận đối số thứ hai dchỉ định chỉ mục nào của "tuple" sử dụng làm chỉ mục của nút tiếp theo ( d==2để lặp lại về phía trước, d==0để lặp lại).

(i!0)

Lặp lại ngược bắt đầu từ chỉ mục đã cho và trả về các chỉ mục đã truy cập.

last(i!0)

Lấy chỉ mục truy cập cuối cùng, đó là khởi đầu của danh sách.

last(i!0)!2

Lặp lại từ đầu danh sách.

[x!!i!!1|i<-last(i!0)!2]

Thay thế mỗi chỉ mục truy cập bằng giá trị của nút.


Bạn gần như có thể viết x!!i!!1như i!1!!1, nhưng nó bị hỏng vì -1trong đầu ra. Nếu bạn chỉ chọn một giá trị sentinel khác để biểu thị null(giả sử -9), nó sẽ hoạt động, nhưng nó sẽ luôn bị hỏng đối với một số đầu vào, điều này khá khó chịu.
Lynn

3

Python 2 , 60 byte

l,n=input()
while~n:m=n;n=l[n][0]
while~m:p,v,m=l[m];print v

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

Đây là câu trả lời của Chas Brown khá nhiều, trừ những golf này:

  • Tôi sử dụng lại n, lưu một bài tập
  • Tôi lưu trữ n hợp lệ cuối cùng trong m, cho phép tôi
  • đặt bản in sau khi gán trong dòng 3, lưu cho tôi bản in cuối cùng
  • Tôi chỉ sử dụng ~ n thay vì - ~ n, vì các giá trị âm chỉ trung thực như giá trị dương, tiết kiệm cho tôi 2 ký tự.


2

MATL , 39 byte

XHx`HwI3$)t]x6Mt`Hwl3$)tbhwt]x4L)Hw2I$)

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

Gần như là một cổng trực tiếp cho câu trả lời Octave của tôi, nhưng phiên bản này tìm thấy kết thúc trước, và sau đó hoạt động trở lại, thay vì vòng ngược lại, đã lưu một byte.

XHx           % Store array in H.
`HwI3$)t]     % Work to the end of the array
x6Mt          % Delete the end of array delimiter, and push the array end index twice
`Hwl3$)    t] % Work to the beginning of the array
       tbhw   % Append all indices found.
Hw2I$)        % Index into original array.

1

PHP, 132 byte

<?list(,$x,$y)=$argv;parse_str($x);while(($q=$x[$y*3+1])>=0)$y=$q;do{$n[]=$x[$y*3+2];$y=$x[$y*3];}while($x[$y*3]);echo join(' ',$n);

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

Đầu vào được thực hiện như là một chuỗi truy vấn x[]=-1&x[]=1&x[]=1...(tất cả các nút trong một mảng phẳng), theo thứ tự next, prevsau đó valuecho mỗi nút với -1 sử dụng để kết thúc các nút.


1

Python 2 , 81 77 byte

a,n=input()
u=a[n][0]
while-~u:u,v,w=a[u]
while-~w:print v;u,v,w=a[w]
print v

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

EDIT: Thx cho ông Xcoder cho 4 byte ...

Lấy danh sách các bộ dữ liệu [u, v, w] trong đó u và w là -1 để biểu thị phần đầu / phần cuối của phân đoạn danh sách được liên kết.


77 byte Hãy thử trực tuyến! . Booleans là các lớp con của int nên chỉ 0có Falsy, và do đó u>=0có thể được đánh gôn u+1và điều này có thể được rút ngắn hơn nữa -~uđể loại bỏ khoảng trắng.
Ông Xcoder

@Ông. Xcoder - Vâng, hoàn toàn đúng!
Chas Brown

1

Octave , 81 78 76 byte

function o=f(a,n)while q=a(n,1)o=a(n=q,2);end
while n=a(n,3)o=[o a(n,2)];end

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

Phiên bản khá đơn giản. Giải thích được để lại như một bài tập cho người đọc. Vui hơn nhiều phiên bản được trình bày dưới đây:

Octave , 142 99 92 byte

@(a,n)[(p=@(b,c,z){q=a(z,2),@()[b(b,c,a(z,c)),q]}{2-~a(z,c)}())(p,1,n),p(p,3,n)(end-1:-1:1)]

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

Yo, tôi nghe nói bạn thích các chức năng ẩn danh ...

Lấy một nx3mảng, với cột đầu tiên là tiền thân, cột thứ hai là giá trị và giá trị thứ ba cho các nút kế tiếp. Tất cả các chỉ số nút đều dựa trên 1, là mặc định trong Octave.

% Create an anonymous function, taking an array a and first node n
@(a,n)
% Returns an array containing the predecessor and sucessor nodes
      [                                                                     ,                     ]
% Defines an recursive anonymous function (by supplying itself to the local namespace)
% which looks at the first column (c=1) or last column (c=3) of the input array to get the next nodes
       (p=@(p,c,z)                                                   )(p,1,n)
% Create a cell array, either containing the end node,
                    {q=a(z,2),                       
% ...or an array with all next  next nodes and the current node
% (note the use of an anonymous function taking no parameters to defer array access, in case of the last node)                
                              @()[p(p,c,a(z,c)),q]}
% depending whether the next node number is nonzero (followed by () to execute the deferred array access)
                                                    {2-~a(z,c)}()
% Do the same with c=3, reverse (function p builds the array right-to-left) and drop the current node to prevent a duplicate.                                                                             
                                                                             p(p,3,n)(end-1:-1:1)

1

Kotlin , 85 byte

{g,S->generateSequence(generateSequence(S){g[it][0]}.last()){g[it][2]}.map{g[it][1]}}

Làm đẹp

{g,S->
    generateSequence(generateSequence(S){g[it][0]}.last()){ g[it][2]}.map { g[it][1] }
}

Kiểm tra

typealias Node=Triple<Int?,Int?,Int?>
data class Test(val input: List<Node>, val start:Int, val result: List<Int>)
val TEST = listOf<Test>(
Test(
listOf(Node(null, 12, 1), Node(0, 99, 2), Node(1, 37, null)),
1,
listOf(12, 99, 37)
),
Test(listOf(
Node(2, 99, 1), Node(0, 37, null), Node(null, 12, 0)),
1,
listOf(12, 99, 37)
),
Test(
listOf(Node(8, 5, 6), Node(10, 1, 4), Node(6, 11, null), Node(4, 3, 12), Node(1, 2, 3), Node(12, 8, null), Node(0, 7, 2), Node(null, 0, 10), Node(11, 3, 0), Node(null, 99, null), Node(7, 1, 1), Node(null, 2, 8), Node(3, 5, 5)),
4,
listOf(0, 1, 1, 2, 3, 5, 8)
),
Test(
listOf(Node(8, 5, 6), Node(10, 1, 4), Node(6, 11, null), Node(4, 3, 12), Node(1, 2, 3), Node(12, 8, null), Node(0, 7, 2), Node(null, 0, 10), Node(11, 3, 0), Node(null, 99, null), Node(7, 1, 1), Node(null, 2, 8), Node(3, 5, 5)),
0,
listOf(2, 3, 5, 7, 11)
),
Test(
listOf(Node(8, 5, 6), Node(10, 1, 4), Node(6, 11, null), Node(4, 3, 12), Node(1, 2, 3), Node(12, 8, null), Node(0, 7, 2), Node(null, 0, 10), Node(11, 3, 0), Node(null, 99, null), Node(7, 1, 1), Node(null, 2, 8), Node(3, 5, 5)),
9,
listOf(99)
),
Test(
listOf(Node(13, 80, 18), Node(18, 71, null), Node(5, 10, 19), Node(12, 1, 8), Node(19, 21, null), Node(31, 6, 2), Node(17, 5, 26), Node(26, 0, 30), Node(3, -1, 25), Node(null, 1, 23), Node(27, 6, 17), Node(14, 1, 24), Node(28, -1, 3), Node(null, 80, 0), Node(20, 4, 11), Node(33, 6, 29), Node(24, 9, 33), Node(10, 7, 6), Node(0, 67, 1), Node(2, 15, 4), Node(32, 1, 14), Node(null, 1, 31), Node(29, 3, null), Node(9, -1, 28), Node(11, 5, 16), Node(8, 1, null), Node(6, 3, 7), Node(null, 8, 10), Node(23, 1, 12), Node(15, 5, 22), Node(7, 9, null), Node(21, 3, 5), Node(null, 3, 20), Node(16, 2, 15)),
18,
listOf(80, 80, 67, 71)
),
Test(
listOf(Node(13, 80, 18), Node(18, 71, null), Node(5, 10, 19), Node(12, 1, 8), Node(19, 21, null), Node(31, 6, 2), Node(17, 5, 26), Node(26, 0, 30), Node(3, -1, 25), Node(null, 1, 23), Node(27, 6, 17), Node(14, 1, 24), Node(28, -1, 3), Node(null, 80, 0), Node(20, 4, 11), Node(33, 6, 29), Node(24, 9, 33), Node(10, 7, 6), Node(0, 67, 1), Node(2, 15, 4), Node(32, 1, 14), Node(null, 1, 31), Node(29, 3, null), Node(9, -1, 28), Node(11, 5, 16), Node(8, 1, null), Node(6, 3, 7), Node(null, 8, 10), Node(23, 1, 12), Node(15, 5, 22), Node(7, 9, null), Node(21, 3, 5), Node(null, 3, 20), Node(16, 2, 15)),
8,
listOf(1, -1, 1, -1, 1, -1, 1)
),
Test(
listOf(Node(13, 80, 18), Node(18, 71, null), Node(5, 10, 19), Node(12, 1, 8), Node(19, 21, null), Node(31, 6, 2), Node(17, 5, 26), Node(26, 0, 30), Node(3, -1, 25), Node(null, 1, 23), Node(27, 6, 17), Node(14, 1, 24), Node(28, -1, 3), Node(null, 80, 0), Node(20, 4, 11), Node(33, 6, 29), Node(24, 9, 33), Node(10, 7, 6), Node(0, 67, 1), Node(2, 15, 4), Node(32, 1, 14), Node(null, 1, 31), Node(29, 3, null), Node(9, -1, 28), Node(11, 5, 16), Node(8, 1, null), Node(6, 3, 7), Node(null, 8, 10), Node(23, 1, 12), Node(15, 5, 22), Node(7, 9, null), Node(21, 3, 5), Node(null, 3, 20), Node(16, 2, 15)),
4,
listOf(1, 3, 6, 10, 15, 21)
),
Test(
listOf(Node(13, 80, 18), Node(18, 71, null), Node(5, 10, 19), Node(12, 1, 8), Node(19, 21, null), Node(31, 6, 2), Node(17, 5, 26), Node(26, 0, 30), Node(3, -1, 25), Node(null, 1, 23), Node(27, 6, 17), Node(14, 1, 24), Node(28, -1, 3), Node(null, 80, 0), Node(20, 4, 11), Node(33, 6, 29), Node(24, 9, 33), Node(10, 7, 6), Node(0, 67, 1), Node(2, 15, 4), Node(32, 1, 14), Node(null, 1, 31), Node(29, 3, null), Node(9, -1, 28), Node(11, 5, 16), Node(8, 1, null), Node(6, 3, 7), Node(null, 8, 10), Node(23, 1, 12), Node(15, 5, 22), Node(7, 9, null), Node(21, 3, 5), Node(null, 3, 20), Node(16, 2, 15)),
14,
listOf(3, 1, 4, 1, 5, 9, 2, 6, 5, 3)
),
Test(
listOf(Node(13, 80, 18), Node(18, 71, null), Node(5, 10, 19), Node(12, 1, 8), Node(19, 21, null), Node(31, 6, 2), Node(17, 5, 26), Node(26, 0, 30), Node(3, -1, 25), Node(null, 1, 23), Node(27, 6, 17), Node(14, 1, 24), Node(28, -1, 3), Node(null, 80, 0), Node(20, 4, 11), Node(33, 6, 29), Node(24, 9, 33), Node(10, 7, 6), Node(0, 67, 1), Node(2, 15, 4), Node(32, 1, 14), Node(null, 1, 31), Node(29, 3, null), Node(9, -1, 28), Node(11, 5, 16), Node(8, 1, null), Node(6, 3, 7), Node(null, 8, 10), Node(23, 1, 12), Node(15, 5, 22), Node(7, 9, null), Node(21, 3, 5), Node(null, 3, 20), Node(16, 2, 15)),
17,
listOf(8, 6, 7, 5, 3, 0, 9)
),
Test(
listOf(Node(4, 11, 0), Node(null, 22, 3), Node(null, 33, 3), Node(1, 44, 4), Node(3, 55, null), Node(7, 66, 7), Node(6, 77, 6)),
3,
listOf(22, 44, 55)
),
Test(
listOf(Node(null, -123, null)),
0,
listOf(-123)
)
)

var f:(List<List<Int?>>,Int)-> Sequence<Int?> =
{g,S->generateSequence(generateSequence(S){g[it][0]}.last()){g[it][2]}.map{g[it][1]}}

fun main(args: Array<String>) {
    for ((input, start, result) in TEST) {
        val out = f(input.map { it.toList() }, start).toList()
        if (out != result) {
            throw AssertionError("$input $start $result $out")
        }
    }
}

TIO

Dùng thử


Tôi chỉ muốn
GenerSequence

0

JavaScript ES6, 70 63 byte

(x,i,a)=>(h=_=>i&&h(a(x[i].v),i=x[i].n))(x.map(_=>i=x[i].p||i))

Trường hợp thử nghiệm:

F([undefined,{p:0,v:12,n:2},{p:1,v:99,n:3},{p:2,v:37,n:0}],1,alert)

Các alertnhu cầu phải nằm trong phần chính của hàm và được tính vào tổng byte của bạn.
Xù xì


+10 / -9 không phải là sự đồng thuận.
Xù xì

Tôi không thấy chính xác + và - s. Ngoài ra, đó là cách đầu ra dự định của javascript và chỉ cách duy nhất khi đầu ra có một số độ trễ
l4m2
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.