Kích thước của bí ẩn mặt trăng
Tôi chắc chắn rằng bạn đã nghe nói rằng mặt trăng thay đổi kích thước của nó. Khi bạn đang yêu và bạn may mắn, mặt trăng có kích thước gần gấp đôi so với các tình huống thông thường. Một số người nói lý do là bầu không khí hoạt động như một ống kính. Những người khác nghĩ rằng đó chỉ là vấn đề so sánh với các đối tượng khác như cây cối gần đó. Bất cứ lời giải thích nào bạn đọc, nó khá chủ quan.
Kích thước của khoa học mặt trăng
Ok, chúng tôi là lập trình viên, phải không? Chúng tôi dựa vào sự thật, phải không? Vì vậy, đây là thí nghiệm:
- Có một máy ảnh đẹp hỗ trợ cài đặt thời gian và khẩu độ bằng tay.
- Đặt máy ảnh của bạn ở mức thu phóng tối đa.
- Đi ra ngoài, chụp một số bức ảnh về mặt trăng để phát hiện các thiết lập tốt nhất để mặt trăng sắc nét và ánh sáng tốt.
- Ghi nhớ các cài đặt
- Chụp ảnh mặt trăng với những cài đặt đó mỗi khi bạn nghĩ rằng mặt trăng lớn hay nhỏ.
- Tính kích thước của mặt trăng tính bằng pixel
Máy ảnh sẽ không nói dối, phải không? Bằng cách đếm các pixel sáng, chúng ta có thể đo kích thước của mặt trăng một cách hiệu quả - ít nhất là bằng pixel.
Nếu kích thước giống nhau trên tất cả các bức ảnh, thì đó là một lỗi trong não của chúng ta. Nếu kích thước khác nhau, thì có chỗ cho đầu cơ
- mặt trăng thực sự phát triển (nhưng nó ăn gì?)
- có hiệu ứng thấu kính khí quyển
- mặt trăng có đường cong elip và đôi khi gần hơn, đôi khi cách xa trái đất
- ...
Nhưng tôi sẽ để mở cho đến khi nhiệm vụ của bạn được hoàn thành. Tất nhiên bạn muốn biết trước nếu phần mềm của bạn có thể tính toán kích thước mặt trăng một cách chính xác.
Nhiệm vụ
Đưa ra một vài hình ảnh tối ưu của mặt trăng, hãy tính kích thước của mặt trăng. Tối ưu hóa là: các pixel có màu đen hoặc trắng. Không có gì ở giữa. Không khử răng cưa. Điều đó làm cho nó dễ dàng, phải không?
Lời cảnh báo: mặt trăng không phải lúc nào cũng đầy, bạn biết đấy ... nó có thể là liềm! Nhưng ngay cả trong hình dạng của một liềm, kích thước của mặt trăng lớn hơn. Vì vậy, bạn sẽ tính toán kích thước đầy đủ, xin vui lòng.
- Chương trình của bạn lấy PNG làm đầu vào, ví dụ như đối số dòng lệnh tên tệp, được dẫn vào
stdin
hoặc làm đối tượng Bitmap (của thư viện khung tiêu chuẩn) nếu bạn viết hàm thay vì chương trình. - Chương trình của bạn hoạt động với bất kỳ kích thước bitmap đầu vào hợp lý, không nhất thiết phải là hình vuông. Chiều rộng và chiều cao tối thiểu 150 pixel được đảm bảo.
- Trăng tròn bao phủ ít nhất 25% bức tranh.
- Chương trình của bạn đưa ra kích thước tính toán của mặt trăng tính bằng pixel như thể đó là trăng tròn.
- Chúng tôi cho rằng mặt trăng là một hình cầu hoàn hảo.
- Kích thước chính xác luôn là số nguyên, nhưng bạn có thể xuất số thập phân nếu phép tính của bạn trả về số đó.
- Độ chính xác phải nằm trong khoảng từ 98% đến 102%. (Đó chỉ là dự đoán hơn là điều tôi có thể đảm bảo có thể đạt được. Nếu bạn nghĩ rằng quá khó để tiếp cận, vui lòng để lại nhận xét.)
Cập nhật :
- Trung tâm của mặt trăng không nhất thiết phải ở giữa bức tranh.
- Vùng nhìn thấy tối thiểu là 5% của mặt trăng hoặc 1,25% tổng số pixel.
- Hình ảnh được chụp theo cách mà toàn bộ mặt trăng sẽ phù hợp với hình ảnh, tức là tổng số pixel là một ranh giới trên cho kích thước mặt trăng.
- Mặt trăng sẽ không bị cắt / cắt.
Các mẫu
Bạn có thể tạo các mẫu của riêng bạn bằng cách sử dụng tệp pha trộn nếu bạn muốn. Tôi đã tạo ra những hình ảnh sau đây cho bạn. Bạn có thể đếm pixel trong tệp PNG bằng WhitePixelCorer.exe (cần .NET) để kiểm tra xem hình ảnh chỉ chứa các pixel đen trắng và bao nhiêu pixel.
Các hình ảnh 256x256 pixel sau đây khác nhau về số lượng pixel trắng, nhưng tất cả sẽ dẫn đến kích thước mặt trăng được tính là 16416 pixel.
Và những hình ảnh 177x177 pixel này sẽ trả về 10241 pixel. Các hình ảnh về cơ bản là giống nhau, nhưng lần này một máy ảnh có độ dài tiêu cự khác nhau đã được sử dụng.
Các mẫu không vuông và không trung tâm với kết quả 9988:
Ồ, bây giờ tôi không có triển khai tham chiếu và thậm chí tôi không biết liệu tôi có thể thực hiện được điều gì không. Nhưng trong não tôi có một niềm tin mãnh liệt cho tôi biết nó phải có khả năng giải toán.
Những quy định
Đây là Code Golf. Mã ngắn nhất vào 2015 / 03-30 được chấp nhận.