সিএমওয়াইকে মানগুলিকে আরজিবিতে রূপান্তর করুন


9

সিএমওয়াইকে রঙিন কোড দেওয়া হয়েছে, এটি আরজিবি মানতে রূপান্তর করুন।

ইনপুট:
স্থান দ্বারা পৃথক 4 টি সংখ্যার স্ট্রিং (0-100 থেকে শুরু করে)

86 86 0 43
28 14 0 6
0 41 73 4

আউটপুট:

#141592
#ABCDEF
#F49043 

সবচেয়ে কম কোড জয়!

ইঙ্গিত: সিএমওয়াইকে আরজিবিতে রূপান্তর করার জন্য আপনি সূত্র ব্যবহার করতে পারেন যেমন:

Red   = 255 x (1 - Cyan/100)    x (1 - Black/100)   
Green = 255 x (1 - Magenta/100) x (1 - Black/100)   
Blue  = 255 x (1 - Yellow/100)  x (1 - Black/100)   

এবং এই তিনটি ভেরিয়েবল ব্যবহার করুন #RRGGBBবিন্যাসে মান পেতে


1
আমরা নিতে পারি CMYKথেকে দশমিক যেমন মান 0থেকে 1অথবা এটি করার প্রয়োজন হয় 0থেকে 100?
হাইপারনিউটারিনো

1
এছাড়াও, আমাদের কি একসাথে বা কেবল একটিতে একাধিক সিএমওয়াই কোড কোড ইনপুট করে রূপান্তর করতে হবে?
হাইপারনিউটারিনো

7
আমরা কি সংখ্যার তালিকা হিসাবে ইনপুট নিতে পারি বা এটি কি একটি সীমানাযুক্ত স্ট্রিং হতে পারে?
ব্যবসায় বিড়াল

7
আপনি যে ইনপুট / আউটপুট সরবরাহ করেছেন তা সূত্রের সাথে মেলে না, এছাড়াও আমাদের কীভাবে রাউন্ডিং পরিচালনা করা উচিত?
রড

2
@ রড এটি এখনও কিছুটা অস্পষ্ট নয় যে কীভাবে ভাসমান-পয়েন্টের ভুলগুলি পরিচালনা করা উচিত।
এরিক আউটগল্ফার

উত্তর:




2

জেলি , 24 বাইট

ḲV÷ȷ2ạ1×Ṫ$×255ḞṃØHṙ1¤ṭ”#

একটি পূর্ণ প্রোগ্রাম যা ফলাফল মুদ্রণ করে।

এটি অনলাইন চেষ্টা করুন!

দ্রষ্টব্য: মেঝে পরিবর্তে গোলাকার ব্যবহার করা যেতে পারে এবং এর +.মধ্যে দুটি বাইট কোড সন্নিবেশ করে ব্যবহার করা যেতে পারে ।255

কিভাবে?

ḲV÷ȷ2ạ1×Ṫ$×255ḞṃØHṙ1¤ṭ”# - Main link: list of character, s
Ḳ                        - split at spaces (makes a list of lists of characters)
 V                       - evaluate as Jelly code (makes a list of the decimal numbers)
   ȷ2                    - literal 100
  ÷                      - divide (vectorises to yield [C/100, M/100, Y/100, K/100])
     ạ1                  - absolute difference with 1 -> [1-(C/100),...]
         $               - last two links as a monad:
        Ṫ                -   tail (this is 1-(K/100))
       ×                 -   multiply (vectorises across the other three)
          ×255           - multiply by 255 (vectorises)
              Ḟ          - floor to the nearest integer
                    ¤    - nilad followed by link(s) as a nilad:
                ØH       -   hex-digit yield = "0123456789ABCDEF"
                  ṙ1     -   rotate left by 1 -> "123456789ABCDEF0"
               ṃ         - base decompress (use those as the digits for base length (16))
                      ”# - literal character '#'
                     ṭ   - tack
                         - implicit print

গোল করার আরেকটি উপায় এর _.Ċপরিবর্তে হবে +.Ḟ... তবে পরবর্তীটি সম্ভবত আরও বেশি ব্যবহৃত হয়।
এরিক আউটগল্ফার

2

রেটিনা , 103 বাইট

\d+
$*1;100$*
(1*);\1

1(?=.* (1*))|1
$1
1
51$*
(1{32000})*(1{2000})*1*.
;$#1;$#2
T`d`L`1\d
;B\B|;

^
#

এটি অনলাইন চেষ্টা করুন! দ্রষ্টব্য: এই কোডটি খুব ধীর, সুতরাং অনুগ্রহ করে ডেনিসের সার্ভারকে হাতুড়ি দেবেন না। ব্যাখ্যা:

\d+
$*1;100$*
(1*);\1

প্রতিটি সংখ্যা আনারীতে রূপান্তর করুন এবং 100 থেকে বিয়োগ করুন।

1(?=.* (1*))|1
$1

মুছে যাওয়া সর্বশেষ সংখ্যা দ্বারা সমস্ত সংখ্যাকে গুণ করুন।

1
51$*

৫১ দ্বারা গুণ করুন, যাতে একবার আমরা 2000 দ্বারা ভাগ হয়ে গেলে আমরা 100 * 100 * 51 / 2000 = 255পছন্দসই হয়ে উঠি।

(1{32000})*(1{2000})*1*.
;$#1;$#2

32000 দ্বারা ভাগ করুন এবং তলটি 2000 দ্বারা বাকী অংশটি ভাগ করুন, এভাবে বেস 16 মানের একটি জোড়া তৈরি করে, যদিও দুঃখের সাথে তারা এখনও বেস 10 তে লিখিত হয়।

T`d`L`1\d
;B\B|;

বেস 10 থেকে বেস 16 এ রূপান্তর করুন।

^
#

শীর্ষস্থানীয় Inোকান #



2

জাভাস্ক্রিপ্ট (ES6), 106 বাইট

f=
(s,z=s.split` `,k=z.pop())=>'#'+z.map(x=>('0'+(.0255*(100-x)*(100-k)+.5|0).toString(16)).slice(-2)).join``
<input id=i value="28 14 0 6"/><button onclick="o.innerHTML=f(i.value)"/>Go</button>
<pre id=o></pre>


2

সি ++ (জিসিসি) , 169 166 বাইট

#import<iostream>
#import<iomanip>
#define F(x)int(.0255*(100-x)*(100-k))
int main(){
int c,m,y,k;
std::cin>>c>>m>>y>>k;
std::cout<<"#"<<std::hex<<F(c)<<F(m)<<F(y);
}

এটি অনলাইন চেষ্টা করুন!

অপ্টিমাইজড সূত্র ব্যবহার করে। সিএমওয়াইকে = সঠিকভাবে আরজিবিতে রূপান্তর করতে যোগ করা +.5হয়েছে -0 0 0 00xffffff যা প্রয়োজনীয় নয়।


1

পাইথন 3 , 114 110 108 106 104 বাইট

  • @ এক্সনর 4 টি বাইট সংরক্ষণ করেছেন: অপ্রয়োজনীয় কোড মোছা
  • @rod 2 বাইট সংরক্ষণ করেছেন: সংক্ষিপ্ত সূত্র
  • 2 + 2 বাইট সংরক্ষণ করা হয়েছে: range[3]যেমন [0,1,2], অবাঞ্ছিত []সরানো হয়েছে
n=input().split()
print('#'+''.join(hex(int(.0255*(100-int(n[i]))*(100-int(n[3]))))[2:]for i in[0,1,2]))

এটি অনলাইন চেষ্টা করুন!



1

জাভাস্ক্রিপ্ট, 104 বাইট

s=>"#"+[0,1,2].map(n=>("0"+((255-2.55*s[n])*(1-s[3]/100)|0).toString(16)).slice(-2),s=s.split` `).join``

কোড স্নিপেট উদাহরণ:

f=

s=>"#"+[0,1,2].map(n=>("0"+((255-2.55*s[n])*(1-s[3]/100)|0).toString(16)).slice(-2),s=s.split` `).join``

console.log(f("86 86 0 43"))
console.log(f("28 14 0 6"))
console.log(f("0 41 73 4"))




0

কিউ / কেডিবি +, 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 বাইট ব্যয় করতে হবে ।


0

05 এ বি 1 ই , 18 বাইট

$#т/-¤s¨*255*hJ'#ì

এটি অনলাইন চেষ্টা করুন!

-1 ক্যালসওয়ারাসকে ধন্যবাদ ।

ভাসমান-পয়েন্টের ভুল-অবিরামতা রয়েছে, সুতরাং ফলাফলগুলি একের পর এক হতে পারে, তবে প্রশ্নের সূত্রটি ব্যবহৃত হয়েছে is


আপনি একটি বাইট সংরক্ষণ করতে পারেন: $ঠিক একই হিসাবে
kalsowerus

@ ক্যালসওয়ারাস ঠিক আছে না, তবে এটি এই ক্ষেত্রে কাজ করবে ...
এরিক দ্য আউটগল্ফার

ওহ ঠিক আছে .. আমি নিশ্চিত নই যে কোন ইনপুটটি inputযখন সেখানে একাধিক হবে
kalsowerus


0

ফরট্রান, 156 বাইট

PROGRAM C
REAL,DIMENSION(4,3)::d
READ(*,*)((d(i,j),i=1,4),j=1,3)
WRITE(*,'((A,3(Z2)))')(35,(INT(.0255*(100-d(i,j))*(100-d(4,j))),i=1,3),j=1,3)
END PROGRAM C
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.