Bạn được cung cấp như là một hình ảnh thang độ xám. Nhiệm vụ của bạn là tìm một mô hình tĩnh hoặc vòng lặp trong Trò chơi cuộc sống của Conway giống với hình ảnh đầu vào càng gần càng tốt.
Đầu ra của bạn có thể là hình ảnh tĩnh hoặc hình động lặp ở một số định dạng có thể được chuyển đổi thành gif. Kích thước hình ảnh đầu ra phải giống với kích thước đầu vào và nó chỉ phải chứa các pixel đen và trắng.
Nếu đầu ra là một hình ảnh động, mỗi khung hình phải được tạo từ khung hình trước theo quy tắc Trò chơi Cuộc sống, với một ô cho mỗi pixel. Hoạt hình phải lặp, với khung đầu tiên được tạo từ khung cuối cùng theo cùng một quy tắc.
Nếu đầu ra là một hình ảnh tĩnh, áp dụng quy tắc trò chơi cuộc sống cho nó phải tạo ra cùng một hình ảnh. Điều này có nghĩa là không có tế bào 'còn sống' nào có thể có nhiều hơn ba hoặc ít hơn hai người hàng xóm 'còn sống' và không có tế bào 'chết' nào có thể có chính xác ba người hàng xóm 'còn sống'. (Lưu ý rằng về cơ bản nó giống như một hình ảnh động như được mô tả ở trên, nhưng chỉ có một khung hình.)
Thêm quy tắc và làm rõ:
Bạn (hoặc chương trình của bạn) có thể chọn các ô 'còn sống' được biểu thị là màu trắng và 'chết' là màu đen hay ngược lại. Đó là, bạn có thể mã cứng này hoặc chương trình của bạn có thể chọn nó dựa trên hình ảnh đầu vào. (Nhưng nó phải giống nhau cho mọi khung hình của hình ảnh động.)
Các điều kiện biên phải là định kỳ, nghĩa là các ô trên cột ngoài cùng bên phải có hàng xóm trên cột ngoài cùng bên trái, v.v.
Đối với hình ảnh động, tốc độ khung hình tùy thuộc vào bạn (hoặc chương trình của bạn); Tôi tưởng tượng tốc độ khung hình nhanh sẽ hoạt động tốt để xấp xỉ các pixel màu xám.
Vui lòng gửi ít nhất hai kết quả được nhúng trong câu trả lời của bạn. Nếu bạn có thể đăng kết quả từ tất cả các hình ảnh đầu vào bên dưới, thì tốt hơn là.
Có thể chấp nhận thu nhỏ hình ảnh thử nghiệm nếu điều này là cần thiết để đạt được gifs với kích thước tệp đủ nhỏ. Nếu bạn muốn liên kết đến các tệp lớn hơn, điều đó tốt. Nếu bạn muốn thể hiện, hãy thoải mái tìm một số tệp nguồn có độ phân giải cao hơn.
Vui lòng cố gắng tránh có quá nhiều tham số có thể kiểm soát trong mã của bạn - tốt nhất nếu đầu vào duy nhất của chương trình là hình ảnh. Ngoại lệ là nếu bạn muốn có một tham số để kiểm soát số lượng khung hình động, vì điều đó sẽ ảnh hưởng đến kích thước tệp.
Bạn có thể sử dụng các chương trình bên ngoài để thay đổi định dạng của các tệp đầu vào và đầu ra, và / hoặc biên dịch các khung đầu ra thành một hình động nếu bạn muốn. (Đây không phải là một thách thức xử lý định dạng tệp.)
Đây là cuộc thi phổ biến , vì vậy câu trả lời có nhiều phiếu nhất sẽ thắng.
Dưới đây là một lựa chọn các hình ảnh thử nghiệm, chủ yếu được lấy từ các câu hỏi khác trên trang web này. (Có thể tôi sẽ thêm hình ảnh đầu vào "phần thưởng" bổ sung sau.)
Để bắt đầu, đây là một nỗ lực tham khảo rất ngớ ngẩn trong Python 2, lợi dụng thực tế là một khối bốn hình vuông là một cấu trúc ổn định trong Trò chơi cuộc sống. Nó chỉ thay đổi hình ảnh đầu vào theo hệ số 4, sau đó vẽ một khối nếu pixel tương ứng tối hơn 0,5.
from skimage import io
from skimage import transform
import sys
img = io.imread(sys.argv[1],as_grey=True)
source = transform.resize(img, [i/4 for i in img.shape])
img[:]=1
for x in xrange(source.shape[0]):
for y in xrange(source.shape[1]):
if source[x,y]<0.5:
img[x*4, y*4] = 0
img[x*4+1, y*4] = 0
img[x*4, y*4+1] = 0
img[x*4+1, y*4+1] = 0
io.imsave(sys.argv[2], img)
Dưới đây là một số kết quả đầu ra từ mã ví dụ. Tôi chắc chắn rằng kết quả tốt hơn nhiều là có thể.