(Đúng ra phải là YIL - yesterday I learn, nhưng thôi kệ vậy)
Yêu cầu: cho một số x
, viết function in ra mảng sau:[[0], [1, 2], [3, 4, 5], ...]
Mảng con cuối cùng sẽ có chiều dài là x
. Và đây là code python ban đầu của mình. Khá cùi bắp: result = []
length = 0
for i in range(1, x + 1):
result.append(range(i + length - i, i + length))
length += i
ok, nếu xếp lại như sau: 0
1 2
3 4 5
6 7 8 9
Nó sẽ thành tam giác, google thử dãy 0, 1, 3, 6
ra ngay cả triangular number và A000217. Vậy bọn này sẽ có công thức tổng quát là:
\(a(n) = n*(n+1)/2\) với \(n \geq 1\)
Tương tự phần tử cuối sẽ là:
\(b(n) = n*(n+1)/2 + n = n*(n+3)/2\) với \(n \geq 1\)
Giờ chuyển qua code:def triangle_array(n) do
Enum.map(0..n, fn(x) -> Enum.to_list round(x*(x+1)/2)..round(x*(x+3)/2) end)
end
Duy nhất 1 dòng, không cần biến tạm, so sexy !