Świat sztuki jest pełen kolorów, ale świat sieci jest jeszcze pełniejszy niż świat sztuki o różnych kolorach i renderingach. Dlatego musimy wiedzieć, jak przekonwertować jeden typ formatu koloru na inny.
Wyzwanie jest oczywiste:
Napisz program / funkcję niż konwertuje dany kod HEX ( #00ff0080
na przykład) na RGBA (jak rgba(0, 255, 0, 0.5)
).
Zasady:
- Biblioteki zewnętrzne / wbudowane do konwersji HEX na RGBA są niedozwolone. Jednak jQuery i takie zamienniki składni są dopuszczalne.
- Obowiązują standardowe zasady wejścia / wyjścia.
- Format alfa może wynosić między (1 == 100%) lub innym (100 == 100%), co nie jest tak naprawdę ważne.
- Dane wyjściowe są elastyczne , o ile zwracają 4 skonwertowane wartości (jako ciąg, tablicę, listę, do wyboru).
- Możesz zdecydować się na wejście bez
#
początku. Stąd można przyjąć jako wejście albo#RRGGBBAA
alboRRGGBBAA
. Możesz założyć, że kod szesnastkowy (z wyłączeniem#
) zawsze będzie miał 8 znaków. - Powinieneś podzielić wszystkie wartości przez 255, włączając alfę. Minimalna precyzja dziesiętna (dla alfy będą to 2 miejsca dziesiętne).
Przypadki testowe
Input: 00ff0080
Output: 0, 255, 0, 0.5
Punktacja
code-golf wygrywa kod z najmniejszą liczbą bajtów.
code-golf
base-conversion
conversion
hexadecimal
color
Obsdarek
źródło
źródło
#
, w którym to przypadku byłaby to tylko 32-bitowa liczba całkowita. Czy jest to zgodne z prawem?Odpowiedzi:
JavaScript (ES6),
735450 bajtów(Zapisano kilka bajtów dzięki @LeakyNun, edytowanemu wyzwaniu i @CraigAyre.)
źródło
eval
zamiastparseInt
:s=>s.match(/../g).map((x,i)=>eval('0x'+x)/(i-3?1:255))
eval
jest świetną alternatywąparseInt
dla golfistów, dzięki!/../g
. Możesz być w stanie jeszcze go zmniejszyć, używającreplace
overmatch
/map
Japt , 13 bajtów
Pobiera dane wejściowe jako ciąg, bez wiodącego
#
. Zwraca wartość rgba jako tablicę.Sprawdź to
Wyjaśnienie
Pośrednio bierzemy ciąg jako dane wejściowe przez zmienną
U
."00ff0080"
Podziel ciąg na tablicę elementów o długości 2.
["00","ff","00","80"]
Odwzoruj tablicę i przekonwertuj każdy element z podstawowego ciągu 16 na liczbę dziesiętną. Z powodu następującego nowego wiersza tablica jest domyślnie przypisana do zmiennej
U
.[0,255,0,128]
Usuń ostatni element z tablicy.
128
Podziel to przez 255.
0.5019607843137255
Wepchnij wynik z powrotem do,
U
a następnie niejawnie wyślij końcową tablicę.[0,255,0,0.5019607843137255]
źródło
PHP , 63 bajty
Dane wyjściowe jako tablica
Wypróbuj online!
PHP , 80 bajtów
Wyjście jako wartość rgba, wejście bez
#
Wypróbuj online!
PHP , 88 bajtów
Dane wyjściowe jako wartość rgba, dane wejściowe za pomocą
#
Wypróbuj online!
źródło
C (gcc) , 139 bajtów
Wypróbuj online!
Moja druga próba osiągnęła 145 bajtów . Nie jestem wielkim golfistą C, więc prawdopodobnie może być krótszy.
źródło
05AB1E , 9 bajtów
Wypróbuj online!
Przynajmniej mamy kibiców takich jak Emigna, którzy często kierują się zdrowym rozsądkiem ... (to dostajesz przez cały dzień gry w golfa, a potem zaczynasz produkować takie rzeczy jak
2ô16öRć255/¸ìR
like_ಠ)źródło
2ôH`žz/)
Galaretka ,
1514 bajtówWypróbuj online!
Jak to działa
-1 bajt dzięki @EricTheOutgolfer
źródło
PHP, 72 bajty
Wersja wyjściowa tablicy Jörga jest nie do pobicia; ale są też inne opcje:
Uruchom jako potok z
-F
.#
nie ma znaczenia, zwykłe wyjście csvlub 73 bajty (uruchom z
-R
):74 bajty ze spacjami:
nie takie proste, 81 bajtów :
źródło
Ułożone ,
474541 bajtówWypróbuj online!
źródło
Excel, 99 bajtów
źródło
SmileBASIC, 50 bajtów
Łańcuch szesnastkowy jest konwertowany na liczbę za pomocą VAL (), a następnie RGBREAD wyodrębnia każdy bajt. #L jest stałą o wartości 256.
RGBREAD jest zaprojektowany do wydobywania kanałów z koloru ARGB, ale tak naprawdę po prostu dzieli 4-bajtową liczbę całkowitą na 4 oddzielne bajty, więc kolejność nie ma znaczenia.
źródło
Perl 6 , 42 bajtów
Wypróbuj online!
źródło
JS ES2015, 84 bajty
to jest funkcja. Uruchom za pomocą
źródło
Python 3 , 62 bajty
Wypróbuj online!
źródło
q / kdb +, 43 bajty
Rozwiązanie:
Przykład:
Wyjaśnienie:
źródło
APL (Dyalog) , 24 bajty
Wymaga
⎕IO←0
ustawienia domyślnego w wielu systemach. Monituje o wprowadzenie wielkich liter bez#
.Wypróbuj online!
⎕D,⎕A
D igity, po których następuje A alfabet⍞⍳⍨
monit o wprowadzenie tekstu (mnemonic: konsola z cytatem) i znajdź w nim tekst każdej litery4 2⍴
R eshape w czterech wierszy macierzy dwukolumnowym⍉
transponuj (ponieważ podstawowa konwersja działa w kolumnie)16⊥
oceniać jako szesnaście podstawową⊢
wydajność (służy do rozdzielenia 3 i 16)256÷⍨@3
podzielić 4 th elementu 256źródło
Python 2 , 54 bajty
Wypróbuj online!
źródło
Yabasic , 96 bajtów
Jeszcze jedna podstawowa odpowiedź; Pobiera dane wejściowe jako ciąg i dane wyjściowe do konsoli.
Wypróbuj online!
źródło
?
.Excel VBA, 90 bajtów
Anonimowa funkcja bezpośredniego okna VBE, która pobiera dane wejściowe z zakresu
[A1]
i dane wyjściowe do bezpośredniego okna VBE.źródło
Vim, 46 bajtów
Odbiera dane wejściowe bez
#
i wraca, drukując na ekranie.źródło