Niedawno wspomniałem o utworze „ Textpert” na temat pisania SMS-ów podczas jazdy, a jedna konkretna linijka tego utworu zainspirowała to wyzwanie.
Nigdy nie pochylałem się tak nisko, by pisać zdjęcia / Zamiast tego piszę poprawną kombinację zer i jedynek
Oczywiście, byłoby to prawie niemożliwe do zrobienia w głowie, więc powinieneś pomóc programistom na całym świecie, kodując program, który robi to samo.
Twoim zadaniem jest przyjęcie nazwy pliku obrazu o wymiarach 500x500
pikseli i wysłanie pliku jako pliku binarnego. Możesz również wziąć obraz jako dane wejściowe, jeśli Twój język go obsługuje.
Możesz używać plików graficznych z rozszerzeniami
.jpg
.png
.gif
.bmp
.svg
Pozwól, że zademonstruję, jak przekonwertować obraz na plik binarny dla tych, którzy nie rozumieją, o co mi chodzi.
Krok 1
Weź pierwszy piksel z pliku i pobierz jego wartość RGB jako 3 liczby dziesiętne: R, G i B. Załóżmy na przykład, że pierwszy piksel to 255,0,0
(czerwony).
Krok 2
Przekształć każdą liczbę w 8-bitową reprezentację binarną i połącz w jedną 24-bitową liczbę. Na przykład daje to111111110000000000000000
Krok 3
Dodaj ten 24-bitowy numer do końcowego wyniku. Dlatego końcowy wynik powinien składać się z 6000000
cyfr i powinien składać się całkowicie 1
i0
To jest golf-golf więc najkrótszy kod wygrywa!
źródło
Odpowiedzi:
Pyth ,
1413 bajtów-1 bajt dzięki Erikowi Outgolferowi (
z
można go usunąć dla niejawnego wejścia).Objaśnienia
Niestety, ze względów bezpieczeństwa nie można tego sprawdzić przy pomocy tłumacza online ; będziesz musiał sklonować Pytha, aby przetestować go na swoim komputerze.
źródło
z
.MATL ,
1312 bajtówAkceptuje nazwę pliku jako ciąg znaków jako dane wejściowe. Wyjściowe liczby 24-bitowe są wyświetlane w kolejności rzędów głównych.
Niestety ze względów bezpieczeństwa nie działa to w tłumaczach internetowych. Oto zrzut ekranu z pracy na moim komputerze lokalnym
Oto nieco zmodyfikowana wersja, w której ręcznie tworzę obraz 2 x 2 x 3, a następnie używam (prawie) tego samego kodu, aby go przetworzyć.
Wyjaśnienie
źródło
Mathematica, 103 bajty
pobiera obraz x.bmp (lub dowolny inny) i konwertuje go do pliku x.txt
źródło
PadLeft
możesz użyć trzeciego argumentuIntegerDigits
(tj.IntegerDigits[#,2,8]&
Import
„Eksportuj”.C #, 309 bajtów
Mój drugi kod golfowy, jeśli nie możesz powiedzieć. Wykonuje zdjęcie x.jpg ...
źródło
Oktawa, 46 bajtów
Tworzy anonimową funkcję o nazwie,
ans
którą można wywołać za pomocą nazwy pliku (ans('file.png')
) lub adresu URL (ans('http://image.png')
)źródło