Lý lịch
Các Random Domino Automaton là một mô hình đồ chơi cho động đất, lấy cảm hứng từ cellular automata. Trong thử thách này, nhiệm vụ của bạn là mô phỏng một phiên bản đơn giản hóa của mô hình này và thu thập dữ liệu từ mô hình đó.
Máy tự động được xác định trên một mảng A
các k
bit, đại diện cho một dòng lỗi mà động đất có thể xảy ra. Các mảng bao quanh tại biên giới của nó. Điều kiện A[i] = 0
có nghĩa là vị trí đó i
được thư giãn và A[i] = 1
có nghĩa là nó bị kích thích hoặc chứa năng lượng dự trữ. Ở mỗi bước thời gian, một vị trí của mảng được chọn thống nhất một cách ngẫu nhiên. Nếu vị trí đó được thư giãn, nó sẽ trở nên phấn khích (năng lượng tiềm năng được thêm vào hệ thống). Nếu vị trí đó đã được kích thích, nó sẽ gây ra một trận động đất, và vị trí được chọn và tất cả các vị trí kích thích được kết nối với nó sẽ được thư giãn trở lại. Số lượng các vị trí phấn khích trở nên thư giãn là cường độ của trận động đất.
Thí dụ
Hãy xem xét các mảng
100101110111
có độ dài 12. Nếu quá trình ngẫu nhiên chọn bit thứ hai từ bên trái, mảng được cập nhật thành
110101110111
^
vì bit đã chọn (được đánh dấu bằng ^
) là 0
. Nếu chúng ta tiếp theo chọn bit thứ tư từ bên trái, đó là một cô lập 1
, một tai nghe có cường độ 1 được kích hoạt và bit được đặt 0
lại:
110001110111
^
Tiếp theo, chúng ta có thể chọn bit thứ hai từ bên phải, điều này gây ra trận động đất mạnh 5 độ:
000001110000
^
Lưu ý rằng tất cả các 1
s trong cùng một "cụm" như nhóm được chọn là một phần của trận động đất và mảng bao quanh ở đường viền.
Nhiệm vụ
Bạn sẽ lấy đầu vào là hai số nguyên dương k
và t
, nhiệm vụ của bạn là mô phỏng máy tự động domino ngẫu nhiên cho t
các bước thời gian, bắt đầu từ một k
mảng dài ban đầu của tất cả các 0
s. Đầu ra của bạn sẽ là một danh sách L
các k
số nguyên, trong đó L[i]
(với lập chỉ mục dựa trên 1) chứa số lượng các trận động đất có cường độ i
xảy ra trong quá trình mô phỏng. Bạn được phép thả các số 0 ở cuối từ đầu ra.
Đối với đầu vào k = 15
và t = 1000
, một số đầu ra đại diện là
[117, 97, 45, 26, 10, 5, 3, 1, 3, 0, 0, 0, 0, 0, 0]
[135, 91, 58, 21, 8, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0]
[142, 63, 51, 31, 17, 4, 2, 1, 1, 0, 0, 0, 0, 0, 0]
[106, 75, 45, 30, 16, 8, 5, 2, 2, 0, 0, 0, 0, 0, 0]
[111, 96, 61, 22, 3, 8, 3, 2, 0, 0, 0, 1, 0, 0, 0]
Quy tắc
Cả hai chương trình và chức năng đầy đủ đều được cho phép. Số byte ngắn nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép.
Lưu ý rằng bạn không bắt buộc phải mô phỏng thiết bị tự động bằng cách sử dụng bất kỳ triển khai cụ thể nào, chỉ có vấn đề đầu ra.