Lời nói đầu
Khi tôi bắn một viên đạn bắn cung 900 viên vào đầu ngày hôm nay (10 kết thúc ở 6 mũi tên kết thúc và 10 kết thúc ở 3 mũi tên kết thúc, với tổng số 90 mũi tên và số điểm tối đa 900), tôi nghĩ đến thử thách này.
Trong bắn cung (giả sử rằng bạn đang bắn vào mặt mục tiêu do FITA cung cấp [mảnh giấy bạn bắn]), với mỗi mũi tên bạn có thể yêu cầu điểm tối đa là 10. Mặt mục tiêu chứa 10 hoặc 11 vòng đường kính giảm, lồng vào nhau. Từ vòng trong ra ngoài, chúng được tính từ 10 điểm, đến một điểm (và trong trường hợp 11 vòng, có một vòng trong cùng thứ cấp được tính là 'X', được tính là 10 nhưng được sử dụng trong các trường hợp phá vỡ cà vạt như giá trị cao hơn). Quan sát:
Tất nhiên, tôi đang đề cập đến cách tính điểm FITA, như đã thấy trong hình minh họa ở trên. Nếu bạn nhìn kỹ, bạn có thể quan sát vòng trong cùng, đó là một đường chấm mờ, điểm số không được đánh dấu. Đó là 'X' mà tôi đã đề cập, nhưng bạn sẽ không phải chú ý đến điều đó trừ khi cạnh tranh để nhận tiền thưởng.
Thử thách
Tạo một chức năng (hoặc chương trình đầy đủ, nếu ngôn ngữ không hỗ trợ các chức năng), sẽ nhận được một hình ảnh vuông hoàn hảo làm đầu vào (hoặc tên tệp hình ảnh, nếu cần), có chứa một số màu xanh lá cây (HEX # 00FF00, RGB (0, 255, 0)) các chấm có kích thước nào đó và trả về điểm số. Hình ảnh có thể chứa dữ liệu khác với các chấm màu lục , nhưng màu xanh lá cây sẽ luôn có cùng sắc thái.
Bạn có thể tưởng tượng rằng hình ảnh vuông đại diện cho mặt mục tiêu, với vòng ngoài cùng chạm vào 4 điểm (trung tâm trên cùng, trung tâm dưới cùng, trung tâm bên phải, trung tâm bên trái). Mặt mục tiêu được đại diện sẽ luôn có cùng tỷ lệ, với tất cả các vòng có chiều rộng bằng 1/20 chiều rộng của hình ảnh mục tiêu đầu vào. Ví dụ: được cung cấp một hình ảnh đầu vào có kích thước đầu vào 400px x 400px, bạn có thể giả sử rằng mỗi vòng có chiều rộng bên trong là 20px, như minh họa bên dưới:
Làm rõ
- Nếu chạm vào hai vòng riêng biệt, số vòng cao hơn sẽ được tính
- Bạn không phải tự động tính đến các lỗi hoặc trường hợp 'x', trừ khi cố gắng nhận tiền thưởng
- Bạn có thể cho rằng không có vòng tròn màu xanh lá cây nào đang chồng chéo
- Bạn cũng có thể cho rằng không có pixel nào khác của màu xanh lục đó trong hình ảnh
- Hình ảnh sẽ ở định dạng PNG, JPEG hoặc PPM (sự lựa chọn của bạn)
- Thư viện xử lý hình ảnh bên ngoài được cho phép, nếu tác giả trước khi đăng câu hỏi này
- Bạn có thể cho rằng tất cả các vòng tròn màu xanh lá cây trên một mục tiêu sẽ có cùng đường kính
- Nếu chụp (hah) cho phần thưởng vòng tròn chồng chéo, bạn có thể cho rằng ít nhất một vòng tròn trong ảnh không có chồng chéo khác
- Các sơ hở tiêu chuẩn không được phép
Các trường hợp thử nghiệm
Hai trường hợp sau đây mỗi điểm 52 (hoặc trong trường hợp tiền thưởng, 52 với 1 'x' và 1 lần bỏ lỡ):
Và trường hợp thử nghiệm cuối cùng này nên đạt 25 điểm :
Tặng kem
- -25 byte nếu bạn cũng trả về số lần bỏ lỡ (bên ngoài bất kỳ vòng nào)
- -30 byte nếu bạn cũng trả về số lượng X (giả sử rằng x trong cùng là 3/100 chiều rộng của hình ảnh và 10 sau đó là 2/100 chiều rộng của hình ảnh. Tỷ lệ 1-9 không thay đổi)
- -35% số byte nếu bạn tính đến các vòng tròn chồng chéo
Đây là mã golf, vì vậy ít byte nhất sẽ thắng. Chúc vui vẻ!