Wyzwanie
Napisz kod, który, biorąc pod uwagę obraz panelu z przypadkowego komiksu xkcd, zwraca prawdziwą wartość, jeśli Blackhat jest w komiksie lub falsey, jeśli nie.
Kim jest Blackhat?
Blackhat to nieoficjalna nazwa nadana postaci w komiksach xkcd, która nosi czarny kapelusz:
Zaczerpnięte ze strony Wyjaśnij xkcd na Blackhat
Kapelusz Blackhata jest zawsze prosty, czarny i wygląda tak samo jak na powyższym zdjęciu.
Inne postacie mogą również mieć czapki i włosy, ale żadna nie będzie miała czapek, które są czarne i proste.
Wkład
Obraz może być wprowadzany w dowolny sposób, niezależnie od tego, czy będzie to ścieżka do obrazu, czy bajtów przez STDIN. Nie musisz przyjmować adresu URL jako danych wejściowych.
Zasady
Kodowanie odpowiedzi nie jest zbanowane, ale nie jest doceniane.
Nie możesz uzyskać dostępu do Internetu, aby uzyskać odpowiedź.
Przykłady
Wszystkie obrazy przycięte z obrazów z https://xkcd.com
Blackhat jest w panelu (powrót truthy
)
Blackhat nie ma w panelu (powrót falsey
)
Sprawdź akumulator
20 zdjęć zawierających Blackhat można znaleźć tutaj: https://beta-decay.github.io/blackhat.zip
20 zdjęć, które nie zawierają Blackhat, można znaleźć tutaj: https://beta-decay.github.io/no_blackhat.zip
Jeśli chcesz, aby więcej obrazów testowało twoje programy (aby trenować dla tajemniczych przypadków testowych), możesz znaleźć listę wszystkich wyglądów Blackhat tutaj: http://www.explainxkcd.com/wiki/index.php/Category: Comics_featuring_Black_Hat
Zwycięski
Wygrywa program, który poprawnie identyfikuje, czy Blackhat jest w komiksie, czy nie dla większości obrazów. Nagłówek powinien zawierać wynik procentowy.
W przypadku rozstrzygnięcia remisu powiązane programy otrzymają „tajemnicze” obrazy (tj. Takie, o których tylko ja wiem). Kod identyfikujący najbardziej poprawnie wygrywa rozstrzygnięcie.
Tajemnicze obrazy zostaną ujawnione wraz z partyturami.
Uwaga: wydaje się, że Randall ma na imię Hat Hat. Wolę Blackhat.
źródło
Odpowiedzi:
PHP (> = 7), 100% (40/40)
Aby uruchomić:
Przykład:
Notatki
Niektóre przykłady wykrytych czarnych czapek:
Przykłady te uzyskuje się poprzez narysowanie czerwonych linii na specjalnych punktach na obrazie, które według skryptu ma czarny kapelusz (obrazy mogą się obracać w porównaniu do oryginalnych).
Dodatkowy
Przed opublikowaniem tutaj przetestowałem ten skrypt na innym zestawie 15 obrazów, 10 z czarnym kapeluszem i 5 bez czarnego kapelusza, i wszystko poszło poprawnie (100%).
Oto plik ZIP zawierający dodatkowe obrazy testowe, których użyłem: extra.zip
W
extra/blackhat
katalogu dostępne są również wyniki wykrywania z czerwonymi liniami. Na przykładextra/blackhat/1.png
jest obraz testowy iextra/blackhat/1_r.png
jest wynikiem jego wykrycia.źródło
imagerotate
wbudowane, więc ...Matlab, 87,5%
Udoskonalenie poprzedniej wersji, z pewnymi poprawkami dotyczącymi kształtu regionów kandydujących.
Błędy klasyfikacji w zestawie HAT : obrazy 4, 14, 15, 17 .
Błędy klasyfikacji w zestawie NON HAT : obrazy 4 .
Niektóre przykłady poprawionych zdjęć niejawnych:
Przykład niewłaściwego obrazu niejawnego:
WERSJA STARE (77,5%)
Podejście oparte na erozji obrazu, podobne do rozwiązania zaproponowanego przez Mnemonic, ale oparte na kanale V obrazu HSV. Ponadto sprawdzana jest średnia wartość kanału wybranego obszaru (a nie jego rozmiar).
Błędy klasyfikacji w zestawie HAT : obrazy 4, 5, 10 .
Błędy klasyfikacji w zestawie NON HAT : obrazy 4, 5, 6, 7, 13, 14 .
źródło
Pyth , 62,5%
Akceptuje nazwę pliku obrazu na standardowym wejściu. Zwraca,
True
jeśli średnia wszystkich jego składników koloru RGB jest większa niż 214. Czytasz to dobrze: najwyraźniej obrazy czarno-białe wydają się być jaśniejsze niż obrazy bez czarno-białych.(Z pewnością ktoś może zrobić lepiej - to nie jest golf golfowy !)
źródło
Python 2,
65%72,5%77,5% (= 31/40)To określa, które piksele są czarne, a następnie erozuje małe, ciągłe kawałki. Z pewnością jest tu miejsce na ulepszenia.
źródło