Предисловие
Поскольку сегодня я стрелял в стрельбу из лука 900 раундом ранее (10 заканчивается по 6 стрел в конце и 10 заканчивается по 3 стрелы в конце, всего 90 стрел и максимальный счет 900), я подумал об этом испытании.
В стрельбе из лука (при условии, что вы стреляете по целевому лицу, предоставленному FITA [листу бумаги, на который вы стреляете)), для каждой стрелки вы можете получить максимальный балл 10. Целевая грань содержит 10 или 11 колец с уменьшающимся диаметром, вложенные друг в друга Начиная с внутреннего кольца, они отсчитываются от 10 баллов до одного балла (а в случае 11 колец есть вторичное самое внутреннее кольцо, которое считается как «X», которое оценивается как 10, но используется в случаях разрыва связи как чем выше значение). Заметим:
Конечно, я имею в виду оценку FITA Metric, как показано на иллюстрации выше. Если вы присмотритесь, вы можете увидеть самое внутреннее кольцо, которое представляет собой заштрихованную пунктирную линию, счет которой не отмечен. Это «Х», о котором я говорил, но вам не придется обращать на это внимание, если только вы не будете бороться за бонус.
Вызов
Создайте функцию (или полную программу, если язык не поддерживает функции), которая получает идеально квадратное изображение в качестве входных данных (или имя файла изображения, если это необходимо), содержащее некоторое количество зеленых (HEX # 00FF00, RGB (0, 255, 0)) точек некоторого размера и возвращает счет. Изображение может содержать данные, отличные от зеленых точек , но зеленый цвет всегда будет иметь одинаковый оттенок.
Вы можете себе представить, что квадратное изображение представляет целевую грань, причем самое наружное кольцо соприкасается в 4 точках (верхний центр, нижний центр, правый центр, левый центр). Представленная целевая грань всегда будет иметь одинаковую пропорцию, причем все кольца имеют ширину ровно 1/20 ширины входного целевого изображения. В качестве примера, учитывая входное изображение с входными размерами 400 на 400 пикселей, вы можете предположить, что каждое кольцо имеет внутреннюю ширину 20 пикселей, как показано ниже:
Разъяснения
- Если дотронуться до двух отдельных колец, считается высшее из двух колец
- Вам не нужно автоматически учитывать промахи или случай «х», если только вы не пытаетесь получить бонус
- Вы можете предположить, что зеленые круги не перекрываются
- Вы также можете предположить, что на изображении отсутствуют другие пиксели этого зеленого цвета.
- Изображение будет в формате PNG, JPEG или PPM (на ваш выбор)
- Библиотеки внешней обработки изображений разрешены, если они созданы до публикации этого вопроса
- Вы можете предположить, что все зеленые круги на одной цели будут иметь одинаковый диаметр
- Если вы снимаете (ха) на бонус перекрывающихся кругов, вы можете предположить, что хотя бы один круг на изображении не имеет другого перекрывающегося круга.
- Стандартные лазейки запрещены
Контрольные примеры
В следующих двух случаях каждый должен набрать 52 (или в случае бонусов 52 с 1 'x' и 1 промахом):
И этот последний контрольный пример должен набрать 25 :
бонус
- -25 байт, если вы также возвращаете количество пропусков (вне любого из колец)
- -30 байт, если вы также возвращаете количество X (предположим, что самый внутренний x равен 3/100-й ширины изображения, а 10 - 2/100-й ширины изображения. Пропорции 1-9 остаются неизменными)
- Количество байтов -35%, если вы учитываете перекрывающиеся круги
Это код гольф, поэтому выигрывает наименьшее количество байтов. Веселиться!