Przedmowa
Kiedy strzelałem dziś z łucznictwa 900 rundę wcześniej (10 kończy się na 6 strzałach na końcu i 10 kończy się na 3 strzałach na końcu, w sumie 90 strzał i maksymalny wynik 900), pomyślałem o tym wyzwaniu.
W strzelaniu z łuku (zakładając, że strzelasz do tarczy dostarczonej przez FITA [kawałek papieru, do którego strzelasz]), za każdą strzałę możesz zdobyć maksymalną liczbę punktów 10. Tarcza docelowa zawiera 10 lub 11 pierścieni o malejącej średnicy, zagnieżdżone w sobie. Od wewnętrznego pierścienia na zewnątrz są one liczone od 10 punktów do jednego punktu (aw przypadku 11 pierścieni istnieje drugi pierścień wewnętrzny, który liczy się jako „X”, który otrzymuje wynik 10, ale jest stosowany w przypadkach zerwania remisu jako wyższa wartość). Przestrzegać:
Oczywiście mam na myśli punktację FITA Metric, jak widać na powyższej ilustracji. Jeśli przyjrzysz się uważnie, możesz zaobserwować najbardziej wewnętrzny pierścień, który jest wyblakłą przerywaną linią, którego wynik nie jest zaznaczony. To jest „X”, o którym mówiłem, ale nie będziesz musiał tego słuchać, chyba że będziesz walczył o bonus.
Wyzwanie
Utwórz funkcję (lub pełny program, jeśli język nie obsługuje funkcji), który otrzymuje idealnie kwadratowy obraz jako dane wejściowe (lub nazwę pliku obrazu, jeśli to konieczne), zawierający pewną liczbę zieleni (HEX # 00FF00, RGB (0, 255, 0)) kropek o pewnym rozmiarze i zwraca wynik. Obraz może zawierać dane inne niż zielone kropki , ale zielony zawsze będzie miał dokładnie ten sam odcień.
Możesz sobie wyobrazić, że kwadratowy obraz przedstawia twarz docelową, z zewnętrznym pierścieniem dotykającym 4 punktów (górny środek, dolny środek, prawy środek, lewy środek). Reprezentowana powierzchnia docelowa zawsze będzie miała tę samą proporcję, przy czym wszystkie pierścienie będą miały szerokość dokładnie 1/20 szerokości wejściowego obrazu docelowego. Jako przykład, biorąc pod uwagę obraz wejściowy o wymiarach wejściowych 400px na 400px, możesz założyć, że każdy pierścień ma wewnętrzną szerokość 20px, jak pokazano poniżej:
Wyjaśnienia
- Po dotknięciu dwóch oddzielnych pierścieni liczony jest wyższy z dwóch pierścieni
- Nie musisz automatycznie rozliczać się z braków lub przypadku „x”, chyba że próbujesz uzyskać bonus
- Możesz założyć, że żadne zielone kółka się nie pokrywają
- Możesz również założyć, że na obrazie nie ma innych pikseli tego odcienia zieleni
- Obraz będzie w formacie PNG, JPEG lub PPM (do wyboru)
- Zewnętrzne biblioteki przetwarzania obrazu są dozwolone, jeśli zostały utworzone przed opublikowaniem tego pytania
- Możesz założyć, że wszystkie zielone kółka na jednym celu będą miały tę samą średnicę
- Jeśli strzelasz (hah) w celu uzyskania premii za nakładające się koła, możesz założyć, że co najmniej jedno koło na obrazie nie ma innego nakładającego się koła
- Standardowe luki są niedozwolone
Przypadki testowe
Poniższe dwa przypadki powinny uzyskać 52 (lub w przypadku bonusów 52 z 1 'x' i 1 chybcem):
Ten ostatni przypadek testowy powinien uzyskać 25 :
Premia
- -25 bajtów, jeśli również zwrócisz liczbę braków (poza dowolnym pierścieniem)
- -30 bajtów, jeśli zwrócisz również liczbę Xs (załóż, że najbardziej wewnętrzny x to 3/100 szerokości obrazu, a 10 to 2/100 szerokości obrazu. Proporcje 1-9 pozostają niezmienione)
- -35% liczby bajtów, jeśli uwzględnisz nakładające się kręgi
To jest kod golfowy, więc wygrywa najmniej bajtów. Baw się dobrze!