Biorąc pod uwagę 3 bajty lub RGB jako dane wejściowe, oblicz najbliższe wartości CMYK i wyślij je.
- utwórz funkcję z parametrami i wartością zwracaną lub program działający na stdin / stdout
- użyj wybranego profilu kolorów, ale podaj odniesienie
- dane wejściowe mogą być osobnymi wartościami liczbowymi z zakresu [0; 255] lub sześciocyfrowym łańcuchem szesnastkowym
- dane wyjściowe powinny być osobnymi wartościami liczbowymi w zakresie od [0; 1] lub [0; 100]
- standardowy kod golfowy: brak luk , wygrywa najkrótszy kod
- ekstrawaganckie pomysły są mile widziane
przykładowe dane:
input output
108,174,106 [0.3793103448275862, 0.0, 0.3908045977011494, 0.3176470588235294]
0,0,0 0,0,0,1
170,255,238 33,0,7,0
0x0088ff 1,0.4667,0,0
[250,235,215] [0,6,14,1.96]
#123456 .7907,.3953,0,.6627
- Nieskalibrowane mapowanie jest w porządku i prawdopodobnie najłatwiejsze
- Nie wymaga sprawdzania poprawności danych wejściowych; liczby zmiennoprzecinkowe są dozwolone (od 0 do 255), ale mogą być również zaokrąglane
- Format wyjściowy powinien być wyraźnie skomentowany lub oczywisty; to znaczy:
- CMYK w tej kolejności
- nie ma znaczenia, czy wartości procentowe [0; 100] czy czyste liczby [0; 1]
- Testy powinny obejmować trywialny przykład [0,0,0].
Ta strona zawiera najwięcej cyfr narzędzi online, jakie udało mi się znaleźć. Czy ktoś zna narzędzie, które daje więcej niż 4 cyfry?
code-golf
conversion
color
Tytus
źródło
źródło
~
.Odpowiedzi:
Dyalog APL ,
1615 bajtów1 minus
1-
X podzielone przez
÷
Y , a następnie,
255 dzielące255÷⍨
Y⊢
, gdzieX jest sobą
⊢
(tj. Listą wartości RGB), aY jest wartością maksymalną
/⌈
(wartości RGB).TryAPL!
Kredyty:
∘ -1 bajt przez ngn .
źródło
⍨
! Ładny emotikon⍣
i⍤
. Mam nadzieję, że dostaniemy⍥
i⍢
wkrótce.ಠ
byłby szczęśliwy!C # ,
88868584 bajtówwyjście dla
108,174,106
:Ponieważ OP pozwala na funkcję, przesłałem tylko lambda. Uruchomione demo można znaleźć na .NetFiddle . Nie jestem golfistą, zamieszczam posty dla zabawy. Jest to także moja pierwsza odpowiedź \ o /. Skomentuj wszelkie ulepszenia :)
Wyrazy uznania dla Dziurawej Zakonnicy za wzór.
zastrzeżenie: nie działa dla [0,0,0] (dziękuję Tytusowi)
źródło
1.0-x/j
? Na pewno nie możesz tego zrobić1-x/j
?a[3]
i nie określasz ustalonego rozmiaru dlaa
, więc możesz to zrobić{r,g,b}
ia[3]=j*j
(ponieważ, w każdym razie,1 * a = a
).a
zselect()
. Jeślia[3]
użyję w ten sposób, będę poza zasięgiem i rzucił, prawda?#
przed wierszem. :)Python, 46 bajtów
Wymaga, aby dane wejściowe były zmienne w Pythonie 2, dość pewne, że nie w 3.
źródło
JavaScript (ES6),
5851 bajtówAkceptuje tablicę
[R, G, B]
(dodaj 7 bajtów dla oddzielnych parametrów) i zwraca tablicę[C, M, Y, K]
za pomocą nieskalibrowanego odwzorowania kolorów.źródło
a
miksuje zawartość? To dziwne. 3) Czy testowałeś [0,0,0]? Nie ma wyjątku w ES, ale wygląda jak dzielenie przez zero.[...a,m=Math.max(...a)]
swoje rozwiązanie macierzowe. 5) Czy możesz zagrać w golfa przy użyciu tablicy jako danych wejściowych? Rozważ użyciea.0
itp. Zamiast.map
.Matematyka,
362833 bajtyPo liberalizacji formatów I / O grał w golfa:List@@#~ColorConvert~"CMYK"&
Funkcja anonimowa, która wykonuje to, o co prosi.
Stara funkcja przyjmuje trzy argumenty od 0 do 255 (wszystko poza tym zakresem zostanie automatycznie przycięte do tego zakresu) i zwraca tablicę wartości „CMYK” pomiędzy
0.
a1.
Przykład (dla starej funkcji):
Ponieważ tablice są dozwolone jako dane wejściowe, 33 bajty:
Oczywiście te wbudowane w uchwyty funkcja
{0, 0, 0}
działa poprawnie i powraca{0, 0, 0, 1}
.źródło
/255
?Bash + ImageMagick, 69 bajtów
Przykład:
źródło
SmileBASIC,
7372 bajtyMoże być znacznie krótszy.
źródło
J=MAX(R,G,B)
?Pyth,
2421182421 bajtówŻycie to rzeczywiście podróż w obie strony.
Zestaw testowy.
Przykładowe dane wejściowe:
108,174,106
Przykładowe dane wyjściowe:
[0.3793103448275862, 0.0, 0.3908045977011494, 0.3176470588235294]
Przykładowe dane wejściowe:
0,0,0
Przykładowe dane wyjściowe:
[0, 0, 0, 1.0]
Zastosowana formuła:
Stara formuła: http://i.stack.imgur.com/ZtPD6.gif
Stara formuła: http://i.stack.imgur.com/Nqi9F.gif
źródło
Lithp , 114 bajtów
Wypróbuj online!
max
bierze dowolną liczbę argumentów)Nie jestem pewien, czy to prawda. Pierwsze dwa wyniki z przykładowymi danymi są poprawne, ale pozostałe nie są (zobacz Wypróbuj online ).
Korzysta z implementacji opisanej poniżej:
źródło
PHP 7,
123110105 bajtówWprowadź jako kolor RGB
100 240 75
Wyświetla wartości CMYK jako dziesiętne w
0...1
zakresie.Zaoszczędził wiele bajtów dzięki Titusowi.
Przykładowe użycie:
Przetestuj online
Wprowadź jako kolor HEX
#123456
, 202 bajty54 bajty dla funkcji zapobiegającej dzieleniu przez zero, prawdopodobnie grywalnej lub usuwalnej.
Pobiera wejściowy kolor RGB jako HEX
#123456
i wysyła CMYK jako dziesiętny w0...1
zakresie.Przykładowe użycie:
źródło
separate numeric values
oznacza, że możesz po prostu wziąć$h=$argv;
i używać$h[1]
zamiast$h[0]
itp. LubięNAN
podstęp; ale czy to nie daje ostrzeżeń?strtr
jest prawdopodobnie krótszy niżstr_replace
iNAN
nie wymaga notowania (przyniesie Powiadomienia, ale nie są wyświetlane w domyślnej konfiguracji).1/0
wynikiINF
), ani w PHP 5 (1/0
=>false
).$argv
wskazówkę tablicy w wierszu poleceń! Dodałem wersję PHP. Działa z,NAN
ponieważ gdystr_replace
go użyjesz , niejawnie konwertuje liczbę na ciąg znaków, więc wyświetla dane wyjścioweNAN
, w rzeczywistości, jeśli sprawdzisz to łącze , zobaczysz, że wyświetla dane wyjściowe zNAN
powodustr_replace("INF"
zamiaststr_replace("NAN"
. Nie mogłem sprawić, żeby działałostrtr
. Dodałem,@
aby ukryć ostrzeżenia.$n/0
jestINF
, ale0/0
jestNAN
(także w PHP 7.0). Możesz zapisać 4 bajty zstr_replace(NAN,0,$s)
lub 6 bajtów zstrtr($s,["NAN"=>0)
.strtr()
;PHP, nie konkuruje
Byłem zbyt kuszony, aby opublikować własne.
Wejście RGB, 74 bajty
lub 68 bajtów z końcowym przecinkiem na wyjściu: usuń
[$i>3]
.Uruchom z
php -r '<code>' <red-value> <green-value> <blue-value>
.Wejście HEX, 100 bajtów
Uruchom z
php -nr '<code>' RRGGBB
.Podejście to zajmie 75 bajtów dla wejścia RGB:
zamienić
foreach($a=array_map...as$c)
zforeach($a=$argv as$c)if($i++)
.źródło
C, 155 bajtów
Próbuję dowiedzieć się, w jaki sposób golf jest bardziej możliwy.
Stosowanie:
Wynik:
źródło
i>0?i>1?i>2
j>0?
17 w usuwaniu pętli i 6 w dzieleniuj
definicji.F *
). Ale w C99 znalazłem kolejny bajt do gry w golfa.j>0?j:1
możnaj+!j
osiągnąć -3 bajty.C
makro jest niepoprawne:1-x/1
dlaj==0
? Myślę, że tak powinno być1-(j>0?x/j:1)
.Hoon , 110 bajtów
Użyj biblioteki zmiennoprzecinkowej pojedynczej precyzji. Utwórz nową funkcję ogólną, która zajmie
a
. Ustaws
nasub
curry z.1
na później, aj
na zagięciua
zmax
.Odwzoruj
a
, dzieląc każdy elementj
, znajdując minimum tego i 1, aby znormalizować NaN, a następnie odejmij 1 za pomocąs
. Dodaj1-j/255
na końcu tej listy.źródło