কিউ / কেডিবি +, 55 বাইট
সমাধান:
"#",raze{(last($)0x0 vs)each"h"$.0255*x[3]*x 0 1 2}100-
উদাহরণ:
q)"#",raze{(last($)0x0 vs)each"h"$.0255*x[3]*x 0 1 2}100-86 86 0 43
"#141491"
q)"#",raze{(last($)0x0 vs)each"h"$.0255*x[3]*x 0 1 2}100-28 14 0 6
"#adcef0"
q)"#",raze{(last($)0x0 vs)each"h"$.0255*x[3]*x 0 1 2}100-0 41 73 4
"#f59042"
ব্যাখ্যা:
মোটামুটি সোজা, 0.0255
অন্যান্য সমাধানগুলি থেকে কৌশলটি চুরি করে নিয়েছে (ধন্যবাদ!) মূল্যায়ন ডান থেকে বামে সঞ্চালিত হয়।
"#",raze {(last string 0x0 vs) each "h"$ .0255 * a[3] * a 0 1 2}100- / ungolfed
{ } / lambda function
100- / subtract from 100 (vector)
a 0 1 2 / index into a at 0, 1 and 2 (CMY)
a[3] / index into at at 3 (K)
* / multiply together
.0255 * / multiply by 0.255
"h"$ / cast to shorts
( ) each / perform stuff in brackets on each list item
0x0 vs / converts to hex, 1 -> 0x0001
string / cast to string, 0x0001 -> ["00", "01"]
last / take the last one, "01"
raze / join strings together
"#", / prepend the hash
মন্তব্য:
ডিফল্ট হিসাবে রাউন্ড সংখ্যাগুলি শর্টে (_)
কাস্ট করার আগে ফ্লোর থেকে 3 বাইট ব্যয় করতে হবে ।
CMYK
থেকে দশমিক যেমন মান0
থেকে1
অথবা এটি করার প্রয়োজন হয়0
থেকে100
?