পরিপূরক রঙ


26

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

আরজিবি পরিপূরক আর 2 জি 2 বি 2 এর যে কোনও রঙের আর 1 জি 1 বি 1 এর রঙ হিসাবে সংজ্ঞা দেওয়া হয়েছে আর 2 মান 255 - আর 1 , বি 2 মান 255 - বি 1 , এবং জি 2 মান 255 - জি 1 দিয়ে

হেক্স সংখ্যাগুলি বড় হাতের (# FFAA20) অথবা ছোট হাতের (# ffaa20) হতে পারে। ইনপুট এবং আউটপুটটির ক্ষেত্রে সামঞ্জস্যতার প্রয়োজন নেই (তাই আপনি ছোট হাতের ইনপুট নিতে পারেন তবে বড় হাতের আউটপুট এবং এর বিপরীতে)।

যেহেতু এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

পরীক্ষার কেস (নোট করুন যেহেতু আপনার প্রোগ্রামটি / ক্রিয়াকলাপটিকে নিজস্ব আউটপুট দেওয়ার ফলে মূল ইনপুট হবে (এটি অন্তর্ভুক্তিক ) তাই পরীক্ষার কেসগুলি উভয় দিকেই কাজ করা উচিত):

In/Out   Out/In
----------------
#ffffff  #000000
#abcdef  #543210
#badcab  #452354
#133742  #ecc8bd
#a1b2c3  #5e4d3c
#7f7f80  #80807f

2
আমি দুঃখিত, তবে এসআরজিবি সেভাবে কাজ করে না। আপনার প্রথমে লিনিয়ার স্পেসে রূপান্তর করা উচিত, যা হেক্স-কোডগুলি নেই
জন ডিভোরাক

2
পছন্দ করেছেন চ্যালেঞ্জের অবস্থাটি আমার অজ্ঞতার প্রতিফলন ঘটায়, যেহেতু আমি এখন এটি সত্যিই পরিবর্তন করতে পারি না। : পি
ডুরকনবব

যদিও এসআরজিবিতে দুটি মান গড় করা একটি শালীন পৃথক চ্যালেঞ্জ হতে পারে। sRGB = আরজিবি .4 0.45 বেশিরভাগ ব্যাপ্তির চেয়ে বেশি তবে রেঞ্জের নীচের দিকে লিনিয়ার।
জন ডিভোরাক

উত্তর:


17

পাইথ, 9 8 বাইট

-১ বাইটের জন্য @ আইসএইচজি ধন্যবাদ!

sXz.HM16

একটি নির্দিষ্ট রঙের মান 255 থেকে বিয়োগ করা হলে এর প্রতিটি হেক্সাডেসিমাল অঙ্ক 15 থেকে বিয়োগের সমান। একটি সংখ্যা 16 এ + বি হিসাবে বলুন । তারপরে 15 থেকে তার সংখ্যাগুলি বিয়োগ করে তৈরি করা সংখ্যার মান হ'ল 16 (15-a) + (15-বি) = 255 - (16 এ + বি)

sXz.HM16     implicit: z=input()
      16      
   .HM        map hex representation over range
   .HM16     '0123456789abcdef'
  z           the input string
 X            Translate characters in x1 present in x2 to reversed x2
              that is, '0' becomes f, '1' becomes 'e', and so on.
              The initial '#' is unchanged.
s             That produced a list, so join into a string by reducing +

এখানে চেষ্টা করুনপরীক্ষা স্যুট.


চমৎকার উত্তর! আমি হেক্সে '0123456789abcdef'রূপান্তর করতে ব্যবহার করার আপনার ধারণা ধার নিয়েছি ( dec2hexফাংশনের পরিবর্তে )
লুইস মেন্ডো

আমি মনে করি আপনার লিঙ্কটি ভুল। ( অনুলিপি-পেস্ট
এফটিডাব্লু

@ পিটু 1998 উফস; আমি এটা ঠিক করব.
lirtosiast

Uঅপ্রয়োজনীয় - এটা পরোক্ষভাবে দ্বারা পূরণ হচ্ছে M
ইসাকাক

6

রেটিনা, 13 10 বাইট

T`w`G-A9-0

কোডটির তিনটি অংশ রয়েছে, ব্যাকটিক্স ( `) দ্বারা বিভক্ত : Tপ্রতিবর্ণ মোড নির্দিষ্ট করে, যা দ্বিতীয় অংশের প্রতিটি চরিত্রকে তৃতীয় অংশের সাথে সম্পর্কিত অক্ষরের সাথে প্রতিস্থাপন করে।

wহ'ল ট্র্যাডিশনাল রেজেক্সের মতো \w, বা _0-9A-Za-z, যা প্রসারিত _0123456789ABCDEFGH...

দ্বিতীয় অংশটি বিস্তৃত হয়েছে GFEDCBA9876543210, বিপরীত ক্রমে প্রসারিত করার জন্য রেটিনার নিফটি যোগ্যতার জন্য ধন্যবাদ। এগুলিকে একে অপরের উপরে রাখুন এবং আমরা পাই:

_0123456789ABCDEFGH...
GFEDCBA987654321000...
 ^^^^^^^^^^^^^^^^

নোট করুন যে শেষ অক্ষরটি, 0দীর্ঘতর স্ট্রিংয়ের দৈর্ঘ্যের সাথে মানানসই পুনরাবৃত্তি হয়, তবে আমরা কেবল যত্নশীলদের দ্বারা দেখানো হেক্সাডেসিমাল অক্ষরগুলির যত্ন করি।

এই পদ্ধতির পরামর্শ দেওয়ার জন্য মার্টিন বাটনারকে ধন্যবাদ।

অনলাইনে পরীক্ষার স্যুটটি ব্যবহার করে দেখুন।


4

মার্বেলস, 41 বাইট

00@0
\\]]\/
-W/\@0
-W
~~
<A+700
+O//]]
+O

অনলাইন দোভাষী এখানে। ইনপুট বড়হাতে হওয়া উচিত।

ব্যাখ্যা

00এবং ]]নীচে (প্রথম অক্ষর আনা হবে #) এবং নীচে পড়া হবে এবং অন্য কিছু করার আগে outputted হবে না।

প্রথম 3 টি লাইন বাকি সমস্ত অক্ষর আনার জন্য একটি লুপ।

প্রথমে আমাদের হেক্স ডিজিটের অক্ষরগুলি 0-15-এ রূপান্তর করতে হবে x -= 48, x -= x > 9 ? 7 : 0( 'A' - '9'যা 8 এর পরে) by

পরিপূরকটি খুঁজতে, আমাদের কেবল প্রতিটি অঙ্ককে রূপান্তর xকরতে হবে 15-x। এটি (8-বিট মানের জন্য) সমান (~x)+16 = ~(x-16)

অবশেষে, আমাদের এই সংখ্যাগুলি হেক্স অঙ্কে ফিরে রূপান্তর করতে হবে, করে x += x > 9 ? 7 : 0, x += 48

সুতরাং এখন আমাদের আছে x -= 48, x -= x > 9 ? 7 : 0, x = ~(x - 16), x += x > 9 ? 7 : 0, x += 48

মনে রাখবেন যে আমরা যদি প্রথম ত্রিনিয়ী অপারেটরের সাহায্যে এক্সপ্রেশনটি সরিয়ে ফেলি, তবে ইনপুট অঙ্কগুলি A- Fপ্রত্যাখ্যানের পরে নেতিবাচক এক্স হবে।

সুতরাং আমরা পূর্বের এক্সপ্রেশনটি x -= 48, x -= 16, x = ~x, x += (x > 9 || x < 0) ? 7 : 0, x += 48এটিকে পরিবর্তন করতে পারি: যা সমান x -= 64, x = ~x, x += (x > 9 || x < 0) ? 7 : 0, x += 48

উপরের কোডটি কেবল সর্বশেষ অভিব্যক্তিটির একটি বাস্তবায়ন। -Wহয় x -= 32এবং +Oহয় x += 24। যেহেতু মার্বেলাস স্বাক্ষরযুক্ত 8-বিট পাটিগণিত ব্যবহার করে, শর্তটি এবং এর <Aউভয় ক্ষেত্রেই covers েকে দেয় ।x > 9x < 0


আপনি মার্বেলাস তৈরি করেছেন?
আর

@ রিকারডাব্লু মার্বেলাসকে আমার সহ বেশ কয়েকটি পিপিসি ব্যবহারকারী ব্যবহার করেছেন / তৈরি করেছেন: দেখুন এখানে
es1024

ঠিক আছে. আমাকে জানতে দেওয়ার জন্য ধন্যবাদ।
Rɪᴋᴇʀ

4

জাভাস্ক্রিপ্ট ES6, 61 বাইট 66 68 48 53 64

@ সি ও ওবি, @ নিনজাবিয়ারমনকি এবং @ রেন্ডারস্কোরকে ধন্যবাদ জানায় বেশ কয়েকটি বাইট

s=>"#"+(1e5+(8**8+~('0x'+s.slice(1))).toString(16)).slice(-6)

অটো-টাইপ-ingালাইয়ের সুবিধা নেয়। জিরো ফিক্সিংয়ের ফলে বাইট গণনাটি নিহত হয়


eval(`0x${s.slice(1)}`)পরিবর্তে ব্যবহার করুনparseInt
কনর ও'ব্রায়ান

@ CᴏɴᴏʀO'Bʀɪᴇɴ একই দৈর্ঘ্য?
পূর্কাকুডারী

@ সিও'বি'র ধন্যবাদ, আমি ইওালের - পরিবর্তে ব্যবহার করেছি যা আরও বেশি বাইট সংরক্ষণ করেছে
ডাউনওয়েট

ওহ, অটো টাইপ কাস্টিং সম্পর্কে ভুলে গেছেন: ডি
কনর ও'ব্রায়ান

ইনপুট দিয়ে এটি ব্যবহার করে দেখুন #FFFFFF। রিটার্নস #0
কনর ও'ব্রায়ান

4

জাভাস্ক্রিপ্ট ES6, 63 58 52 49 বাইট

c=>c.replace(/\w/g,x=>(15-`0x${x}`).toString(16))

11 বাইট বাঁচানোর জন্য এনডারস্কোরকে ধন্যবাদ !


-5 বাইট:c=>"#"+[...c].map(x=>"fedcba9876543210"[+('0x'+x)]).join``
nderscore

ঠিক ঠিক ইতিমধ্যে, ইতিমধ্যে এটি সম্পর্কে ভেবেছিলেন :) ধন্যবাদ এটি ব্যবহার করতে যাচ্ছিল, তবে "ইভাল" দিয়ে।
নিকেল 8

1
আহ, আমি আরও একটি পেয়েছি -6:c=>c.replace(/\w/g,x=>"fedcba9876543210"[+('0x'+x)])
nderscore

3

জल्फ, 17 বাইট

pq#-w^88C Li1~560
pq                pad
         _Li1     the input, w/out the first char
        C    ~5   parsed as a base-16 integer (~5 = 16)
    w^88          8 ^ 8 - 1 (the magic number)
   -              subtract the parsed input from said number
  #               convert result to hexadecimal
               60 pad the result with 6 0's

এখানে চেষ্টা করুন! , টেস্ট স্যুট (পুরো রান ব্যবহার করুন, যা এখন কাজ করে))


3

জুলিয়া, 74 49 বাইট

h->"#"join([hex(15-parse(Int,i,16))for i=h[2:7]])

এই মুহুর্তে বেশ দীর্ঘ তবে এটি একটি সূচনা। এটি একটি ল্যাম্বদা ফাংশন যা একটি স্ট্রিং গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে। আউটপুট ছোট হাতের অক্ষরে থাকবে তবে ইনপুটটি উভয়ই হতে পারে।

হিসাবে টমাস লক্ষনীয় , 255 থেকে প্রতিটি 2 অঙ্ক রঙ উপাদান বিয়োগ 15. থেকে হেক্সাডেসিমেল ইনপুটে প্রতিটি অঙ্ক বিয়োগ ইনপুট স্ট্রিং উপর Looping শীর্ষস্থানীয় ব্যতীত সমতূল্য #হেক্সাডেসিমেল বিশ্লেষণ অঙ্ক - আমরা 15 রূপান্তর করুন। আমরা এই সমস্তগুলিতে যোগদান করি #এবং তারপরে এটিকে ভাল বলি।


3

জাপট , 35 32 22 20 16 15 বাইট

¡Y?(F-XnG)sG :X

ব্যাখ্যা:

¡                 //Take input and map (shortcut to "Um@"). Input should in the form of "#123456"
 Y?               //if Y is not 0, then return (F-XnG)sG, otherwise last step...
    F-XnG           //Subtract X, converted from hexadecimal (G is 16) to decimal, from 15
          sG        //convert decimal to hexadecimal
             :X   //...otherwise return X unchanged (happens only with #, the first char)

সুন্দর! আমি এটি গত রাতে দেখেছি এবং নিজেকে বলেছিলাম, "আগামীকাল আমি এটি গল্ফ করতে সহায়তা করব।" তবে এখনই আপনি এটিকে আরও গল্ফ করেছেন, যতটা সম্ভব আমি ভাবলাম। :)
ETH প্রোডাকশনগুলি

2

পার্ল, 30 বাইট

+1 এর জন্য অন্তর্ভুক্ত -p

s/\w/sprintf"%x",15&~hex$&/eg

ব্যবহার: echo #000000 | perl -p file.pl
বা echo #000000 | perl -pe 's/\w/sprintf"%x",15&~hex$&/eg'


2

এমএটিএল , 21 বাইট

35,5Y216,j6L)!16ZA-)h

এটি ভাষা / সংকলকের 6.0.0 রিলিজ ব্যবহার করে , যা চ্যালেঞ্জের চেয়ে আগের।

ইনপুট অঙ্কগুলি বড় হাতের হওয়া উচিত।

উদাহরণ

এটি অক্টাভাতে কার্যকর করা হয়েছে:

>> matl
 > 35,5Y216,j6L)!16ZA-)h
 >
> #FFAA20
#0055DF

সম্পাদনা করুন (জুন 12, 2016)

কোডটি এখন অনলাইনে চেষ্টা করা যেতে পারে । কমা প্রতিস্থাপন করা শূণ্যস্থান দ্বারা, এবং প্রয়োজন 6Lদ্বারা 4L, ভাষা পরিবর্তনের সাথে সামঞ্জস্য করতে।

ব্যাখ্যা

35,             % number literal: ASCII code of '#'
5Y2             % '0123456789ABCDEF'
16,             % number literal
j               % input string
6L)             % remove first element
!               % transpose
16ZA            % convert from hex to dec
-               % subtract from 16
)               % index into '0123456789ABCDEF' to convert back to hex
h               % prepend 35, which gets automatically converted into '#'

1

পাইথ, 20 19 বাইট

1 বাইট xnor ধন্যবাদ ।

%"#%06x"-t^8 8itz16

এটি অনলাইনে চেষ্টা করুন। পরীক্ষা স্যুট.

ব্যাখ্যা

  • z ইনপুট হয়
  • tz অপসারণ #
  • itz16 একটি হেক্সাডেসিমাল সংখ্যা হিসাবে পার্স
  • t^8 88 8 - 1 গণনা করে
  • -t^8 8itz168 8 - 1 - ইনপুট গণনা করে
  • %"#%06x"-t^2 24itz16 এটিকে শূন্য-প্যাডযুক্ত--অক্ষরের হেক্স স্ট্রিংয়ে ফর্ম্যাট করে এবং যুক্ত করে #

2 ^ 24 এর জন্য 8 ^ 8 কেমন?
xnor

1

হাস্কেল, 85 বাইট

আমার প্রথম জমা, এটি সম্ভবত দীর্ঘতম (85 বাইট) হবে তবে ওহে, আপনি কোথাও শুরু করতে পারেন। হাসকেলে:

import Numeric;f=('#':).concatMap((flip showHex)"".(15-).fst.head.readHex.(:[])).tail

এটি 15 টি কৌশল থেকে একই বিয়োগটি ব্যবহার করছে আমি অন্যান্য লোককে ব্যবহার করতে দেখলাম।

আমি অন্যান্য কৌতুকের সাথে প্রিন্টফ ব্যবহার করার চেষ্টাও করেছি (8 ^ 8 - 1 বিয়োগ করুন) এবং এটি জিসিসি তে কাজ করে তবে কিছু কারণে এটি সংকলন করে না:

g=printf "#%06x" .(8^8-1-).fst.head.readHex.tail

কেউ যদি এই কাজটি করতে পারত তবে দুর্দান্ত হত!


প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম। এগুলি খুব ভাল উত্তর (হাস্কেলের চেয়ে আমি যা করতে পারি তার চেয়ে ভাল!)। তবে কোড-গল্ফ চ্যালেঞ্জগুলির জন্য একটি সাধারণ উত্তর ফর্ম্যাট রয়েছে যা লিডারবোর্ড স্নিপেটকে আপনার উত্তর লিডারবোর্ডে রাখতে দেয়। আমি এটি আপনার জন্য সম্পাদনা করব; আপনি সম্পাদনাটি স্বীকার বা অস্বীকার করতে পারেন।
wizzwizz4

অন্যান্য ব্যবহারকারীর মন্তব্যে জবাব দিতে টাইপ করুন @username
wizzwizz4

@ wizzwizz4 আপনার সহায়তার জন্য অনেক ধন্যবাদ।
এলপিপেজ

যে কোনও সময়! আপনি কি আমার কিছু চ্যালেঞ্জকে সামনে রেখে যেতে চান? আপনার চেয়ার বিশ্লেষণ করুন এবং হিলবার্ট কার্ভের মানচিত্রের স্ট্রিংগুলি আমার পছন্দসই, যদিও হিলবার্ট বক্ররেখা সত্যিই শক্ত।
wizzwizz4

@ wizzwizz4 অবশ্যই, আমি কী করব তা দেখতে পাবো।
এলপিপেজ

1

গণিত, 69 60 বাইট

"#"<>IntegerString[8^8-#~StringDrop~1~FromDigits~16-1,16,6]&

আবার, এটি স্ট্রিং প্রক্রিয়াজাতকরণ যা আমাকে এখানে হত্যা করে।


1

সি, 94 বাইট

t(char*b){for(int i;i=*b;++b)*b=i>96&i<103?150-i:i>64&i<71|i>47&i<54?118-i:i>53&i<58?111-i:i;}

ফাংশন একটি চর অ্যারে নেয়, বিপরীত মান প্রদান করে। প্রতিক্রিয়া জন্য বড় হাতের অক্ষর উত্পাদন করে। কোডটি প্রতিটি ASCII হেক্স অক্ষরটিকে তার বিপরীত দিকে ফ্লিপ করে যদি এটি বৈধ হয়, অন্যথায় তা উপেক্ষা করে।


iফাংশনের আগে বিশ্বব্যাপী ঘোষণা করে আপনি কিছু জায়গা বাঁচাতে পারবেন :i;
লিয়াম

1

𝔼𝕊𝕄𝕚𝕟 2, 18 অক্ষর / 34 বাইট

ïē/\w⌿,↪(ḏ-`ᶍ⦃$}”ⓧ

Try it here (Firefox only).

চ্যালেঞ্জের পরে তৈরি একটি সংস্করণ ব্যবহার করা।

ব্যাখ্যা

ïē/\w⌿,↪(ḏ-`ᶍ⦃$}”ⓧ // implicit: ï=input, ḏ=15
ïē/\w⌿,             // replace all alphanumeric chars in ï with:
       ↪(ḏ-`ᶍ⦃$}”ⓧ // (15 - char's decimal form) converted to hex
                    // implicit output

অ-প্রতিযোগিতামূলক সমাধান, 15 অক্ষর / 29 বাইট

ïē/\w⌿,↪(ḏ-`ᶍ⦃$}”ⓧ

প্রতিবর্ণীকরণ ব্যবহার করে।


আপনি কি পাশাপাশি প্রতিযোগিতামূলক সংস্করণ যুক্ত করতে পারেন, তাই আমরা দেখতে পারি যে ভাষা কীভাবে সজ্জিত হয়?
lirtosiast

অবশ্যই। নতুন সম্পাদনা দেখুন।
মামা ফান রোল

এপিএল প্রতীকটির দুর্দান্ত ব্যবহার
lirtosiast

হেই, সেই প্রতীকটিই সর্বাধিক বোধ তৈরি করেছিল /g
মামা ফান রোল

1

পাইথন, 96

x=input()
print("#")
for i in range(3):
    print(hex(255-int(x[(1+2*i)]+x[(2+2*i)],16))[2:4])

প্রথম কোড গল্ফ, মতামত দিন :)


আপনাকে ইনপুটটি "quotes"বিটিডব্লুতে থাকতে হবে, সুতরাং input()কাজ করে। লুপের জন্য আপনাকে নিউলাইন এবং ইনডেন্ট লাগবে না, এবং rangeঠিক কাজ করে। আপনি মুছতে পারেন এমন বেশ কয়েকটি জায়গাও রয়েছে।
আর

int("ff", 16)ন্যায়বিচার সঙ্গে প্রতিস্থাপন করা যেতে পারে 255
ডোরকনবব

আপনার প্রতিটি এক্সের পরে বন্ধনীগুলির মধ্যে বন্ধনীগুলি দরকার?
নীল

0

সিজেম, 16 বাইট

qA,'G,65>+s_W%er

এটি মোটামুটি দীর্ঘ কারণ সিজেএম বেসগুলি পরিবর্তিত করে বিভিন্নভাবে পরিচালনা করে, তাই কেবল প্রতিলিপিটি করা আরও ছোট ছিল। প্রতিলিপি সম্পর্কে আরও জানতে আমার রেটিনা উত্তরটি দেখুন ।

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

ব্যাখ্যা

q      e# Get the input
A,     e# Push [0 1 ... 8 9]
'G,65> e# Push "ABCDEF"
+s     e# Combine and convert to string
_W%    e# Make a copy and reverse it
er     e# Replace each character in the first string with
       e# the corresponding character in the second

0

পাইথন 3, 44 বাইট

মূলত আমি 256^3তখন ব্যবহার করেছি 16^6। তারপরে আমি Pietu1998 এর দেখেছি 8^8এবং এখন এই সমাধানটি পরিবর্তে এটি ব্যবহার করে।

"#{:06x}".format(8**8-1-int(input()[1:],16))

0

জাভা, 95 90 বাইট

String f(String v){return v.format("#%06x",0xFFFFFF^Integer.parseInt(v.substring(1),16));}

বিটওয়াইস এক্সওআর


0

বাশ + টিআর, 35 বাইট

tr 0-9A-Fa-f fedcba9876543210543210

আউটপুট সবসময় ছোট হাতের হয়।

দুর্ভাগ্যক্রমে "ট্র" বিপরীত ক্রমে ব্যাপ্তি নেয় না তাই আমাকে তাদের বানান করতে হয়েছিল।


0

সি, 147 বাইট

void p(char s[]){char c[3];int i=1;printf("#");while(i<6){strncpy(c,s+i++,2);i++;int x=255-strtol(c,NULL,16);x<10?printf("0%x",x):printf("%x",x);}}

মূল পোস্টের মতো প্রশংসা পাওয়ার জন্য স্ট্রাকলকে হেক্স স্ট্রিং থেকে ইনটে রূপান্তর করতে 255 থেকে সংখ্যাটি বিয়োগ করে। আমি তবে ভাবছি যে এস থেকে স্ট্রটল পর্যন্ত বিভিন্ন চরিত্রের পাস করার কোনও উপায় আছে যাতে আমাকে একটি নতুন স্ট্রিংয়ের অনুলিপি করে বাইটের গুচ্ছটি নষ্ট করতে হবে না?


আমি মনে করি না যে সংকলকরা সাধারণত ফাংশন রিটার্ন এবং ডিফল্ট ইনট এ প্রয়োগ করে, তাই আপনি সম্ভবত voidরিটার্নের ধরণটি বাদ দিতে পারেন?
লিয়াম

0

আর, 62 বাইট

f=function(a)sprintf('#%06x',(8^8-1)-strtoi(substr(a,2,7),16))

0

সেড, 48 বাইট

y/0123456789ABCDEFabcdef/fedcba9876543210543210/

অথবা 36 বাইট যদি আপনার কেবল একটি ক্ষেত্রে সমর্থন করা প্রয়োজন।


আপনার ছোট হাতের এবং বড় হাতের উভয়কেই সমর্থন করার দরকার নেই।
মার্টিন এন্ডার

@ মার্টিনব্যাটনার প্রশ্নটি ইনপুট ক্ষেত্রে উভয় ক্ষেত্রে সমর্থন প্রয়োজন বলে মনে হচ্ছে, তবে আউটপুট নয়। আমার বাশ + টিআর সমাধানের মতো, এই সমাধান উভয়ই ইনপুটটিতে সমর্থন করে তবে কেবল লোয়ার-কেস আউটপুট লেখায়।
গ্লেন রেন্ডার্স-পেহারসন

0আপনার কোডে একটি অতিরিক্ত পেয়েছেন , 9এবং এর মধ্যে A(বাইট গণনাটি সঠিক হলেও, অবশ্যই একটি অনুলিপি ত্রুটি হওয়া উচিত)।
hobbs

প্রশ্নটি বলে যে আপনার ইনপুট এবং আউটপুটটি কোন ক্ষেত্রে চয়ন করতে পারেন।
lirtosiast

0

পাওয়ারশেল, 48 বাইট

param($a)"#{0:x6}"-f(16MB-1-("0x"+$a.Trim('#')))

অগত্যা মাধ্যমে ইনপুট নেয় param($a)একটি স্ট্রিং, সঙ্গে সীমায়িত যেমন 'বা ", যেহেতু C:\Tools\Scripts\Golfing> .\complementary-colors #a1b2c3PowerShell কমান্ড লাইন বিবেচনা করবে #a1b2c3একটি মন্তব্য হিসাবে এবং সংক্ষিপ্ত তা উপেক্ষা।

বাম-থেকে-ডানদিকে, "#{0:x6}"-f(...)আমাদের আউটপুট গণনাগুলি গ্যারান্টিযুক্ত 6 টি অক্ষরের (ইনপুট অ্যাকাউন্টে #ffffff) হেক্সাডেসিমালে ফর্ম্যাট করে । পেরেনগুলির ভিতরে, আমরা আমাদের ইনপুট নম্বরটি থেকে বিয়োগ করি 0xffffff। আমরা পাওয়ারশেল হেক্সাডেসিমাল সংখ্যাকে ফর্ম্যাটে পার্স করে ফেলেছি তা কাজে লাগিয়ে এটি 0xNNNকরি, সুতরাং আমরা আমাদের ইনপুট নম্বর থেকে একটি সঠিক-বিন্যাসের হেক্স নম্বরটি তৈরি করি $a। (দ্রষ্টব্য যে কনটেনটেশন প্লাসটি এখানে এক বাইটের .Trim()চেয়ে কম .Replace()হয়)) আমরা MBঅ্যানারি অপারেটরের পরিবর্তে 16MB-1নির্মাণের জন্যও 16777215লাভ করি 0xffffff


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.