Różne systemy mają różne sposoby opisywania kolorów, nawet jeśli wszystkie mówią w przestrzeni RGBA. Preferowany może być programista front-end, który zna CSS #RRGGBBAA
. Ale programiści Androida mogą preferować #AARRGGBB
. Podczas obsługi formatu pliku AAS #AABBGGRR
jest potrzebny. To zbyt mylące. Może potrzebujemy programu, który może konwertować różne formaty kolorów.
Wejście:
Dane wejściowe zawierają 3 części:
- Kolor do przekształcenia (np.
#1459AC0F
), Ciąg rozpoczynający się od ostrego znaku,#
po którym następuje 8 cyfr szesnastkowych. - Format danego koloru (np.
#RRGGBBAA
), Ciąg rozpoczynający się od,#
po którym następuje 8 liter, które dzielą się na 4 różne grupy, a każda grupa jest jedną zRR
/GG
/BB
/AA
. - Format do konwersji.
Wynik:
- Wydrukuj kolor w przekonwertowanym formacie
Przypadki testowe:
Color, OriginalFormat, TargetFormat -> Result
#12345678, #RRGGBBAA, #AARRGGBB -> #78123456
#1A2B3C4D, #RRGGBBAA, #AABBGGRR -> #4D3C2B1A
#DEADBEEF, #AARRGGBB, #GGBBAARR -> #BEEFDEAD
Wejście / wyjście nie rozróżnia wielkości liter. Możesz wejść / wyjść w dowolny dopuszczalny sposób.
Zasady:
To jest kod golfowy, najkrótsze (w bajtach) kody każdej wygranej językowej
AARRGGBB
jest obiektywnie najlepszym formatem kolorów. Jeśli coś oczekuje 24 bitów,RRGGBB
aAARRGGBB
zamiast tego dajesz 32 bity , może po prostu zignorować górny bajt i nadal działać.Odpowiedzi:
APL (Dyalog Unicode) , 6 bajtów SBCS
Pełny program Monituje o STDIN dla oryginału, następnie celu, a następnie koloru. Wyświetla wynik do STDOUT.
Wypróbuj online!
⍞
monit o oryginał⍞⍋
zapytaj o cel i znajdź indeksy w oryginale, które przekształcą go w cel⍞[
…]
Monituj o Kolor i użyj wyżej uzyskanych wskaźników, aby zmienić kolejność Kolorówźródło
JavaScript (ES6),
5352 bajtyZapisano 1 bajt dzięki @tsh
Staje wejścia jako 3 różnych parametrach:
(Color, From, To)
.Wypróbuj online!
źródło
(C,F,T)=>T.replace(/\w/g,(x,i)=>C[F.search(x)-~i%2])
zapisz jeden bajtStax , 8 bajtów
Uruchom i debuguj
Ten program pobiera dane wejściowe w tym formacie.
Oto skomentowana nie rozpakowana wersja tego samego programu.
Uruchom ten
źródło
Python 2 , 59 bajtów
Wypróbuj online!
źródło
Retina 0.8.2 , 33 bajty
Wypróbuj online! Link zawiera przypadki testowe. Wyjaśnienie:
Dla każdej pary identycznych znaków spójrz wstecz na kolejną kopię tej pary, a następnie na 9. i 8. postać i zastąp parę tymi znakami. Jest to możliwe tylko dla par znaków w formacie docelowym i zastępuje je pożądanym wynikiem.
Usuń kolor i format źródłowy.
źródło
Haskell ,
108 104 100 9487 bajtówWypróbuj online!
Stara wersja
Dziękujemy Laikoni za skrócenie 6 bajtów poprzez znalezienie krótszego sposobu użycia
lookup
!Wypróbuj online!
Wyjaśnienie:
p
funkcja „Analizuje” ciąg ignorując wiodącą#
i powracających grup (list) 2 znaków.(!)
użytkownik pobiera jako dane wejściowe kolor i format sygnału wejściowego i zwraca funkcję, której parametr wyjściowy format i zwraca przekonwertowany kolor. Okazało się, że wersja pointfree była krótsza, ale zacząłem od wersji bardziej czytelnej:f c i o='#':concat[x#zip(p<$>[i,c])|x<-p o]
Wypróbuj online!
źródło
Perl 5
-p
,333227 bajtówPodaj dane w kolejności: cel, oryginał, liczba
Wypróbuj online!
Dla każdego znaku na wejściu znajdź ten sam znak parzystą liczbę miejsc do przodu, a następnie przejdź o 10 znaków do przodu i weź ten znak jako zamiennik. Jeśli nie możesz wykonać tych kroków, zastąp je niczym.
źródło
05AB1E , 10 bajtów
Wypróbuj online!
Działa to, ponieważ zmieniam dane wejściowe z:
Do:
Tak więc każda wartość jest mapowana jednoznacznie, więc mogę użyć transliteracji.
Argumenty są odwrócone.
źródło
Java 10,
179105102 bajtówOgromne -77 bajtów dzięki @ OlivierGrégoire .
Wyjaśnienie:
Wypróbuj online.
źródło
J , 5 bajtów
Lewym argumentem jest kolor. Właściwym argumentem jest macierz znaków, w której pierwszy wiersz jest formatem docelowym, a drugi wiersz jest formatem oryginalnym. Wypróbuj online!
źródło
CJam, 14 bajtów
Wypróbuj online!
Dane wejściowe to tablica w odwrotnej kolejności.
źródło
Python 2, 62 bajty
źródło
SmileBASIC, 144 bajty
źródło
Czerwony ,
154 120114 bajtówWypróbuj online!
źródło
Python 3 , 102 bajty
Wypróbuj online!
źródło
Galaretka , 6 bajtów
Wypróbuj online!
Pełny program
Argument 1: Oryginalny
argument 2: Docelowy
argument 3: Kolor
źródło
C (brzęk) , 89 bajtów
Wypróbuj online!
Pobiera wartość wejściową w
a
, w formacie wejściowym i wyjściowym wi
formacieo
. Zwraca wartość wb
Drobne oszustwo: zapisywanie wyniku
b
zamiast drukowania w celu zaoszczędzenia bajtów. Pytanie tego nie zabrania.C (brzęk) , 100 bajtów
Wypróbuj online!
C (gcc) , 181 bajtów
Wypróbuj online!
TworzyRGBA
wartość wc[]
tablicy na podstawie formatui
, a następnie drukuje wo
formacieźródło
char*a,b[10],*i,*o;f(x)
zamiastchar *a,b[10],*i,*o;f(x,y)
ix+=2)bcopy(a+(long)index(i,o[x])-i,b+x,2);
zamiastb[x++]=a[y=index(i,o[x])-i],b[x++]=a[y+1]);
Clojure 1.8, 156 bajtów
Nie golfił
Wypróbuj online nie ma wsparcia Clojure 1.8. Bardzo dziwny!
źródło
Perl 6 ,
555146 bajtówWypróbuj online!
Pobiera na wejściu listę (kolor, oryginał, cel). Dzieli każdy ciąg wejściowy na komponenty, tworzy klucze źródłowe odwzorowujące wartości skrótu na wartości kolorów, wyszukuje wartości kolorów w kolejności klawiszy docelowych, a następnie formatuje wynik.
źródło