Đó là mùa đông, và thời điểm trong năm đã đến khi trời bắt đầu lạnh (và cho những chiếc khăn trùm đầu đầy màu sắc kỳ lạ bắt đầu xuất hiện ... sớm). Hãy viết một số mã để làm cho hình ảnh đại diện và các hình ảnh khác bị đóng băng, để phù hợp với chủ đề!
Đầu vào
Đầu vào để đệ trình cho thử thách này phải là một hình ảnh (hình ảnh để làm cho đóng băng) và một số (ngưỡng, sẽ được giải thích sau).
Bạn có thể nhập hình ảnh theo bất kỳ cách nào ngôn ngữ của bạn hỗ trợ chúng (đường dẫn tệp hoặc URL làm đối số, lấy nó từ bảng ghi tạm, kéo và thả hình ảnh, v.v.) và ở bất kỳ định dạng nào được liệt kê ở đây thể hiện màu sắc trong RGB (bạn có thể hỗ trợ / yêu cầu RGBA thay thế nếu bạn muốn, nhưng đây không phải là yêu cầu).
Bạn cũng có thể nhập số theo bất kỳ cách nào bạn muốn (đối số dòng lệnh, STDIN, hộp thoại nhập, v.v.), ngoại trừ mã hóa cứng vào chương trình của bạn (ví dụ n=10
). Nếu bạn sử dụng đường dẫn tệp / URL cho hình ảnh, nó cũng phải được nhập theo cách này.
Đầu ra
Chương trình phải xử lý hình ảnh theo mô tả bên dưới và sau đó xuất nó theo bất kỳ cách nào bạn muốn (vào một tệp, hiển thị nó trên màn hình, đặt nó vào bảng tạm, v.v.).
Sự miêu tả
Đệ trình nên xử lý hình ảnh với ba bước sau đây. n
đề cập đến số mà chương trình của bạn nhận được làm đầu vào cùng với hình ảnh.
Áp dụng độ mờ của bán kính
n
cho hình ảnh đầu vào bằng cách thay thế từng giá trị R, G và B của từng pixel bằng các giá trị R, G và B trung bình của tất cả các pixel trong khoảng cáchn
pixel của Manhattan , bỏ qua tất cả các tọa độ ngoài giới hạn. (Tức là tất cả các pixel trong đó tổng của sự khác biệt trong X và chênh lệch trong Y nhỏ hơn hoặc bằngn
.)(lưu ý: Tôi đã sử dụng hiệu ứng làm mờ Gaussian cho các hình ảnh ở trên vì có chức năng tích hợp thuận tiện cho nó, vì vậy hình ảnh của bạn có thể trông hơi khác một chút.)
Đặt từng pixel thành một pixel ngẫu nhiên trong khoảng cách
n/2
pixel ("khoảng cách" được xác định theo cách tương tự như trong bước trước).Điều này nên được thực hiện bằng cách lặp qua hình ảnh và đặt từng pixel thành một pixel ngẫu nhiên trong phạm vi này, vì vậy một số pixel có thể biến mất hoàn toàn và một số có thể bị trùng lặp.
Tất cả các thay đổi phải được áp dụng cùng một lúc. Nói cách khác, sử dụng các giá trị cũ của pixel (sau bước 1 nhưng trước bước này), không phải các giá trị mới sau khi đặt chúng thành pixel ngẫu nhiên.
Nhân giá trị RGB "màu xanh" của mỗi pixel với 1,5, giới hạn ở mức 255 (hoặc bất cứ giá trị tối đa nào cho một dải pixel là) và làm tròn xuống.
Quy tắc
Bạn có thể sử dụng các thư viện hình ảnh / chức năng liên quan đến xử lý hình ảnh được tích hợp vào ngôn ngữ của bạn; tuy nhiên, bạn không được sử dụng bất kỳ chức năng nào thực hiện một trong ba nhiệm vụ chính được đề cập trong phần mô tả. Ví dụ: bạn không thể sử dụng một
blur
chức năng, nhưng mộtgetPixel
chức năng là tốt.Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ thắng!
dx <= n && dy <= n
là một đại diện chính xác của khoảng cách Manhattan, phải không?