Máy tự động di động giống như cuộc sống là máy tự động di động tương tự như Trò chơi cuộc sống của Conway, ở chỗ chúng hoạt động trên một lưới vuông lớn vô hạn (về mặt lý thuyết), trong đó mỗi tế bào có chính xác 8 hàng xóm và là một trong 2 trạng thái, cụ thể là sống và chết .
Tuy nhiên, các phiên bản Like-like này khác nhau theo một cách rất quan trọng: các quy tắc cho một ô đã cho trở nên sống động và các quy tắc cho một ô đã cho tồn tại cho thế hệ tiếp theo.
Ví dụ, Game of Life cổ điển sử dụng quy tắc B3/S23
, nghĩa là phải mất 3 tế bào sống để sinh ra một tế bào mới và 2 hoặc 3 người hàng xóm còn sống để tồn tại. Đối với thử thách này, chúng tôi sẽ cho rằng hàng xóm không bao gồm chính nó, vì vậy mỗi ô có chính xác 8 hàng xóm.
Nhiệm vụ của bạn là, được đưa ra một cấu hình bắt đầu, quy tắc sinh, quy tắc sinh tồn và số nguyên dương (số lượng thế hệ được chạy), mô phỏng máy tự động giống như cuộc sống bằng cách sử dụng các quy tắc đó cho số lượng thế hệ được cung cấp trong mã ngắn nhất có thể . Cấu hình bắt đầu sẽ là một ma trận vuông / mảng 2 chiều hoặc một chuỗi nhiều dòng, bạn có thể chọn. Những người khác có thể được đưa ra trong bất kỳ định dạng và phương pháp hợp lý.
Ví dụ: nếu quy tắc sinh là 12345678
(bất kỳ hàng xóm sống), quy tắc sinh tồn là 2357
và cấu hình bắt đầu là
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
hai thế hệ tiếp theo sẽ là
Generation 1: Generation 2:
0 0 0 0 0 1 1 1 1 1
0 1 1 1 0 1 1 0 1 1
0 1 0 1 0 1 0 1 0 1
0 1 1 1 0 1 1 0 1 1
0 0 0 0 0 1 1 1 1 1
Nếu số lượng thế hệ được đưa ra là 10, thì đầu ra sẽ là thứ gì đó dọc theo dòng
0 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 1 1 1 0
Bạn không phải xử lý các thay đổi xảy ra bên ngoài giới hạn do ma trận đầu vào đưa ra, tuy nhiên, tất cả các ô bên ngoài ma trận bắt đầu chết. Do đó, ma trận đầu vào có thể là bất kỳ kích thước nào, tối đa giá trị tối đa mà ngôn ngữ của bạn có thể hỗ trợ. Bạn không phải xuất bảng giữa các thế hệ.
Đây là một mã golf để mã ngắn nhất sẽ thắng.
Các trường hợp thử nghiệm
Chúng sử dụng B/S
ký hiệu để chỉ ra các quy tắc được sử dụng
B2/S2
,, generations = 100
cấu hình:
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
Đầu ra:
0 0 0 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
B1357/S2468
,, generations = 12
cấu hình:
1 0 1 0 1 0
0 1 1 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
1 1 1 1 1 0
0 1 1 0 0 1
Đầu ra:
0 1 0 0 0 0
0 1 1 1 1 0
0 1 0 1 1 0
1 1 1 0 0 0
0 0 1 1 1 0
0 1 1 0 0 0
Nếu bạn cần tạo thêm các trường hợp thử nghiệm, bạn có thể sử dụng trình giả lập tuyệt vời này . Hãy chắc chắn để giới hạn kích thước bảng