এইচটিএমএল রঙগুলি আউটপুট করুন


30

16-রঙের সিজিএ প্যালেট (এটি এইচটিএমএল রঙ হিসাবেও পরিচিত ) হ'ল প্রারম্ভিক গ্রাফিক্স অ্যাডাপ্টারগুলির দ্বারা ব্যবহৃত 16 টি রঙের একটি সেট। এই চ্যালেঞ্জের লক্ষ্য RRGGBBহেক্স মান হিসাবে আরোহী ক্রমে, নিউলাইনগুলি দ্বারা পৃথক করে তাদের 16 টিকে আউটপুট দেওয়া । সুতরাং, আউটপুট ঠিক এই হওয়া উচিত:

000000
000080
0000FF
008000
008080
00FF00
00FFFF
800000
800080
808000
808080
C0C0C0
FF0000
FF00FF
FFFF00
FFFFFF

একটি একক পেছনের নতুন লাইন অনুমোদিত, কিন্তু প্রয়োজন নেই।

উত্তর:


13

জেলি , 31 29 27 বাইট

“×Ɗ¡‘ŒP»Ṫ¦209ṗ€3Fd⁴ịØHs3ṢQY

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

কিভাবে এটা কাজ করে

“×Ɗ¡‘জেলি এর কোট অক্ষরের মধ্যে কোড পয়েন্ট উত্পাদ SBCS , যা হয় 0x11 = 17 , 0x91 = 145 এবং = 0 0x00

ŒP কোড পয়েন্টগুলির অ্যারের পাওয়ারশিট তৈরি করে, ফলন দেয়

[[], [17], [145], [0], [17, 145], [17, 0], [145, 0], [17, 145, 0]]

শেষ দুটি এন্ট্রি 80 এবং এফএফ উভয় সমন্বয় সমন্বয় অনুরূপ , তাই আমাদের সেগুলি বাতিল করতে হবে।

»Ṫ¦209 তিনটি অংশ নিয়ে গঠিত:

  • (লেজ) কোড পয়েন্টগুলির শেষ অ্যারে, অর্থাৎ [17, 145, 0] সরিয়ে দেয়

  • »209পাওয়ারসেট বাকি প্রতিটি পূর্ণসংখ্যা সর্বোচ্চ নেয় এবং 0xD1 = 209 , সঙ্গে তাদের সব প্রতিস্থাপন 209

  • ¦(বিরল) পাওয়ারশেটের অবশিষ্ট উপাদানগুলির উপর পুনরাবৃত্তি হয়। যদি সংশ্লিষ্ট সূচকটি [17, 145, 0] তে পাওয়া যায় তবে উপাদানটি সমস্ত 209 এর সাথে প্রতিস্থাপিত হবে । যদি তা না হয় তবে তা ছোঁয়া যায়।

    ¦মডুলার নয়, সুতরাং এটি পাওয়ারশেটের অবশিষ্ট অংশে কেবলমাত্র সর্বশেষ অ্যারে (সূচক 0 ) পরিবর্তন করে। সূচকগুলি 17 এবং 145 খুব বড় এবং এর কোনও প্রভাব নেই।

নিম্নরূপ ফলাফল।

[[], [17], [145], [0], [17, 145], [17, 0], [209, 209]]

ṗ€3 প্রতিটি অ্যারের তৃতীয় কার্টেসিয়ান শক্তি গণনা করে, অর্থাৎ প্রতিটি অ্যারের উপাদানের সমস্ত 3-tuples এর অ্যারে গণনা করে।

Fd⁴ফলকে ফ্ল্যাট করে এবং 16 দ্বারা বিভক্ত প্রতিটি পূর্ণসংখ্যার ভাগফল এবং বাকী গণনা করে ।

ịØHসূচকগুলি (1-ভিত্তিক) " 0123456789ABCDEF এ , সুতরাং 0x11 , 0x91 , 0x00 , এবং 0xD1 " 00 " , " 80 " , " এফএফ " , এবং " C0 " (রেস।) এ ম্যাপ করা যায় ।

s3ṢQ চরিত্রের জোড়গুলিকে 3-টি-টি-টুপলে বিভক্ত করে, টিপলগুলি বাছাই করে এবং নকল করুন।

অবশেষে, Yলাইনফিডগুলি পৃথক করে অনন্য টিপলগুলিতে যোগদান করে।


11

বাশ + জিএনইউ ইউটিলিটিস, 67

  • 2 বাইট সংরক্ষণ করেছেন @ মান্যাটওয়ার্ককে ধন্যবাদ
  • 2 বাইট সংরক্ষিত হয়েছে @ জেপেলিনকে ধন্যবাদ
a={00,80,FF}
eval echo $a$a$a|fmt -w9|sed '16iC0C0C0
/F0*8\|80*F/d'
  • বক্রবন্ধনী সম্প্রসারণ {00,80,FF}{00,80,FF}{00,80,FF} অধিকার অর্ডার (ব্যতীত সমস্ত প্রয়োজন সমন্বয় দেয় C0C0C0), কিছু অতিরিক্ত করেন। অতিরিক্তগুলি হ'ল এতে দুটি অক্ষর Fএবং 8অক্ষর রয়েছে।
  • ব্রেস প্রসারণের ফলাফলটি একটি একক স্থান-বিভাজিত লাইন। fmtপ্রতিটি এন্ট্রি তার নিজস্ব লাইনে রাখে
  • sedঅভিব্যক্তির 1 ম লাইনটি C0C0C0উপযুক্ত লাইনে সন্নিবেশ করায়
  • sedএক্সপ্রেশনটির ২ য় লাইন উপরে বর্ণিত "অতিরিক্তগুলি" ফিল্টার করে।

ভাবনা


6

জেলি , 38 31 বাইট

“mạ9ṣṃwɠƁ,¡ẓw’b4µża1$ị“08CF”s3Y

TryItOnline!

বেজ একটি সংখ্যা 250 কম্প্রেশন ( “...’),
বেস 4 (রূপান্তরিত b4),
জিপ করা ( żএকটি vectorised যৌক্তিক-এবং 1 (সঙ্গে পরে) নিজেই একটি কপি সঙ্গে a1$) *,
ইন্ডেক্স ( ) ব্যবহার চার অক্ষরের মধ্যে পুরে ( “08CF”),
খন্ডে বিভক্ত দৈর্ঘ্য 3 ( s3),
এবং লাইন ফিডগুলির সাথে যোগ হয়েছে ( Y)।

* এইভাবে প্রতিটি শূন্য অঙ্ককে অন্য শূন্যের সাথে এবং অন্য কোনও অঙ্কের সাথে একটির সাথে জোড় যুক্ত করুন। নিম্নলিখিত ইন্ডেক্স এর মানে আনা বরাবর 'F'অপরের সাথে যুক্ত করা হয়ে 'F'যখন '0', '8'এবং 'C'একটি সঙ্গে প্রতিটি জোড়া '0'


অনুল্লেখ্য সম্পাদনা এই উত্তর ঠিক করতে: “0FC8”, যেমন আমরা আছে 00, FF, C0, এবং 80
শার্লক

ওহ, আমি খেয়াল করিনি! ধন্যবাদ.
জোনাথন অ্যালান

3

পাইথন 3, 134 129 125 108 91 90 বাইট

আমি মনে করি এখানে এখনও অনেক গল্ফ করা উচিত। গল্ফিং পরামর্শ স্বাগত!

সম্পাদনা করুন: -9 বাইট এবং স্ট্রিং বিন্যাসে সহায়তা করার জন্য মেগোকে অনেক ধন্যবাদ। প্রথম স্থানটিতে স্ট্রিংটি মুদ্রণের আরও ভাল উপায় নির্ধারণের থেকে -17 বাইট। প্রথম স্থানটিতে লুপটি লেখার আরও ভাল উপায় আবিষ্কার করে -17 বাইটস। -1 বাইট i%3//2*"\n"পরিবর্তে ব্যবহার করার জন্য xnor এর টিপকে ধন্যবাদ "\n"*(i%3<2)

for i in range(48):print(end="F0C8F000"[0x10114abf7f75c147d745d55//4**i%4::4]+i%3//2*"\n")

Ungolfing

z = 0
a = [0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 2, 2, 2, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 0, 0, 1, 1, 0, 1, 3, 3, 1, 1, 3, 1, 0, 1, 1, 3, 1, 1, 1, 1, 1]
for i in range(len(a)):
    z = (z + a[i]) * 4
z //= 4                   # we multiplied by 4 one too many times
for i in range(48):
    m = z // 4**j % 4
    s = "F0C8F000"[c::4]
    if i % 3 == 2:
        s += "\n"
    print(s, end="")

এটির মতো চেষ্টা করুন - আপনাকে আর্গুমেন্টটি প্রথম বন্ধনী (বা বর্গাকার বন্ধনীতে) মোড়তে হবে এবং এটি দিয়ে স্প্লিট করতে হবে *
মেগো

i%3//2*"\n"একটি বাইট সংরক্ষণ করে।
xnor

এটি পাই 3 নিয়েও কাজ করে
মিগুয়েল

@ মিগুয়েল না, এটি এমন একটি সম্পাদনা যা আমি পরিষ্কার করি নি। পাইথন 2 নিয়ে এটি কাজ করে না
শেরলক

2

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

2 বাইট সংরক্ষণ করা হয়েছে, নীলকে ধন্যবাদ

এটি ব্যাকটিক্সে কাঁচা স্ট্রিং ফিরিয়ে দেওয়ার চেয়ে 7 9 বাইট কম।

_=>[...'1121173113106393'].map(v=>[4,2,0].map(x=>'08CF'[x=n>>x&3]+'000F'[x],n+=+v||21).join``,n=-1).join`
`

পরীক্ষা


1
মজার .replace(/./g)ব্যাপারটি একই দৈর্ঘ্যের .map().join, তবে .map(x=>'08CF'[x=n>>x&3]+'000F'[x],n+=+v||21)দুটি বাইট সংরক্ষণ করে।
নিল

2

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

'777
7780
77FF
7807
78080
7FF7
7FFFF
8077
80780
80807
808080
C0C0C0
FF77
FF7FF
FFFF7
FFFFFF'-replace7,'00'

হ্যাঁ, আমি কেবল আক্ষরিক স্ট্রিং প্রিন্ট করার চেয়ে ছোট কিছু খুঁজে পাইনি ... একটি সাধারণ প্রতিস্থাপন (যা আমি সম্পূর্ণ উপেক্ষা করেছি) ব্যবহার করে 7 বাইট শেভ করার জন্য @ মার্টিন স্মিথকে ধন্যবাদ জানাই। সুতরাং, আমরা হার্ডকডিংয়ের চেয়ে কমপক্ষে 7 বাইট কম sh হ্যাঁ!

কিন্তু বোরিং!

তাই পরিবর্তে ...

পাওয়ারশেল ভি 4, 128 বাইট

[consolecolor[]](0,7+9..15)+-split'Lime Maroon Navy Olive Purple Silver Teal'|%{-join"$([windows.media.colors]::$_)"[3..8]}|sort

[system.consolecolor]নামস্থান কনসোল রং (নেটিভ) সংজ্ঞায়িত প্রাপ্তিসাধ্য PowerShell কনসোলে। আমরা যদি তাদেরকে এর মতো একটি পূর্ণসংখ্যার অ্যারের মাধ্যমে রেফারেন্স করি তবে ডিফল্ট মানটির নাম হয় (যেমন, Blackবা Whiteপছন্দ মতো)। আমরা -splitস্পেসে থাকা স্ট্রিংয়ের সাথে এটি একত্রিত করি , সুতরাং এখন আমাদের কাছে রঙের নামের একটি স্ট্রিং রয়েছে।

আমরা সেগুলির মধ্য দিয়ে লুপ করি |%{...}এবং প্রতিটি পুনরাবৃত্তি সংশ্লিষ্ট [system.windows.media.colors]মানটি টানিয়া দেয়। যারা বস্তুর জন্য ডিফল্ট stringification মধ্যে রঙ #AARRGGBBএকটি হেক্স মান হিসাবে বিন্যাস, তাই আমরা লিভারেজ যে একটি স্ক্রিপ্ট ব্লক সঙ্গে একটি স্ট্রিং যে কল encapsulating দ্বারা "$(...)"। তবে, যেহেতু আমরা আলফা মান বা হ্যাশটি চাই না, তাই আমরা স্ট্রিংয়ের পিছনের প্রান্তটি [3..8]গ্রহণ -joinকরি এবং ফলাফলটি- charঅ্যারেটিকে স্ট্রিংয়ে ফিরিয়ে আনা দরকার । তারপরে, Sort-Objectতাদের সঠিক ক্রমে রাখার জন্য একটি সাধারণ ।


1
এর 21 টি উদাহরণ রয়েছে 00এবং .Replace(7,'00')এটি <21 টি অক্ষর।
মার্টিন স্মিথ

পাওয়ারশেল কীভাবে ব্যবহার করতে হয় তা আমি জানি না, তবে এটি 80 এবং এফএফ প্রতিস্থাপনের জন্য উপযুক্ত হতে পারে।
nedla2004

@ nedla2004 এর -replaceজন্য করা 8এবং 80একই বাইট গণনা (12 জিরো সাশ্রয়, যা -replace8,80দৈর্ঘ্য)। জন্য এরকম FFকারণ প্রায় প্রয়োজন কোট দুই বাইট আর "FF"-replace2,"FF"বিবৃতি।
অ্যাডমবর্কবার্ক

ঠিক আছে, আমি ভাবছিলাম যে আপনি যদি কোনওভাবে প্রতিস্থাপনগুলি একত্রিত করতে পারেন।
nedla2004



1

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

•P{Ætg7«r¨ëÅ,…}ù¢Ý%Vt®£8ãøÚ$0óDÛY²Zþ…ð7ê‘Ó{òìàYëØU¥•hR6ô»

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

আমাদের আউটপুট দেওয়ার যা দরকার তা হ'ল মূলত (বিপরীত এবং বিভক্ত):

FFFFFF00FFFFFF00FF0000FF0C0C0C080808000808080008000008FFFF0000FF00080800000800FF0000080000000000

দশমিক যেটি:

39402003857025890357721060524755992261661062099432941475272448103296644696683709026793043150430945208910007869898752

বেস -214 এ কোনটি:

P{Ætg7«r¨ëÅ,…}ù¢Ý%Vt®£8ãøÚ$0óDÛY²Zþ…ð7ê‘Ó{òìàYëØU¥

এটিই সর্বাধিক সহজ সমাধান আমি নিয়ে আসতে পারি, কারণ ডেনিসকে মারধর করার কোন উপায় নেই। এক ঘন্টা চেষ্টা করে ব্যয় করলেন এবং কিছুই তার ধারণাকে মারেনি।



0

ব্যাচ, 137 বাইট

@for %%c in (000000 000080 0000FF 008000 008080 00FF00 00FFFF 800000 800080 808000 808080 C0C0C0 FF0000 FF00FF FFFF00 FFFFFF)do @echo %%c

হ্যাঁ, এটি বিরক্তিকর। পূর্ববর্তী 148-বাইট প্রচেষ্টা:

@if "%2"=="" (call %0 000000 80&call %0 C0C0C0 FF)|sort&exit/b
@echo %1
@for %%c in (0000%2 00%200 00%2%2 %20000 %200%2 %2%200 %2%2%2)do @echo %%c

দুর্ভাগ্যক্রমে আপনি কোনও forবা call:কমান্ডের আউটপুটটি পাইপ করতে পারবেন না , তাই আমাকে নিজেকে পুনরাবৃত্তি করতে হবে।



0

বেফুঞ্জ, 83 69 বাইট

<v"UVTYZQPefij?EDA@"
v>>9\:4/:\4/>4%:3g,0`
<^_@#:,+55$_^#!-9:,g3
F08C

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

আপনি প্রথম লাইনে যে স্ট্রিংটি দেখছেন তাতে রঙগুলি এনকোড করা হয়েছে, প্রতিটি উপাদানকে ASCII সীমার মধ্যে চাপিয়ে দেওয়ার জন্য অতিরিক্ত উচ্চ বিট সেট করে রঙের উপাদানগুলির জন্য দুটি বিট দেওয়া হয় (63 এর ক্ষেত্রে বাদে, যা 127 হিসাবে সীমার বাইরে থাকবে) )।

স্ট্যাকের রঙগুলির তালিকাটি নীচে প্রক্রিয়া করা হবে:

9\          9 is pushed behind the current colour to serve as a marker.
:4/:\4/     The colour is repeatedly divided by 4, splitting it into 3 component parts.

>           The inner loop deals with each of the 3 components. 
 4%         Modulo 4 masks out the 2 bits of the colour component that we care about.
 :3g,       That is used as an index into the table on line 4 to get the character to output.
 0`3g,      For component values greater than 0 the second char is a '0', otherwise an 'F'. 
 :9-!       Check if the next component is our end marker.
^           If not, repeat the inner loop.

55+,        Output a newline.
:_          Repeat the outer loop until there are no more colours on the stack. 

0

সি #, 195 বাইট

void n(){string a="000000\r\n000080\r\n0000FF\r\n008000\r\n008080\r\m00FF00\r\n00FFFF\r\n800000\r\n800080\r\n808000\r\n808080\r\nC0C0C0\r\nFF0000\r\nFF00FF\r\nFFFF00\r\nFFFFFF";Console.Write(a);}

দুঃখের বিষয় এই মারধারী, বিশাল ব্যবধানে, আরও আকর্ষণীয় হলেও অবিশ্বাস্যরূপে সংশ্লেষিত হয়ে উঠেছে (এটি লিখতে আমার আরও মজা ছিল) সি #, 270 বাইট

void n(){string a,b,c,d;a="00";b="80";c="C0";d="FF";for(int i=0;i<16;i++){Console.WriteLine((i<7?a:i<11?b:i>11?d:c)+(i<3?a:i<5?b:i<7?d:i<9?a:i<11?b:i==11?c:i<14?a:d)+(i==0||i==3||i==5|i==7||i==9||i==12||i==14?a:i==1||i==4||i==8||i==10?b:i==2||i==6||i==13||i==15?d:c));}}

আপনি কেবল আপনার ফাংশনটিতে স্ট্রিংটি সরাসরি ফিরিয়ে দিতে পারেন - এটি কোনও ভেরিয়েবেলে সংরক্ষণ করার দরকার নেই এবং এটি মুদ্রণ করতে হবে। এছাড়াও, ক) আপনি একটি ল্যাম্বদা ব্যবহার করতে পারেন, এবং খ) আমি নিশ্চিত এমন একটি সমাধান রয়েছে যা কেবল স্ট্রিংটি ফেলে দেয় be
মেগো

@ মেগো এটি গল্ফের আমার প্রথম সি # পোস্ট, নিশ্চিত নয় যে আমি কীভাবে সমস্ত সততার সাথে ল্যাম্বডা ফাংশন করব!
অ্যালফি গুডাক্রে

আমি কিছু তালিকা তৈরি করতে এই তালিকাটি দেখতে পরামর্শ দেব ।
মেগো

@ অ্যালফি গুডাক্রে: সি # ল্যাম্বডা যা কেবলমাত্র একটি মান দেয়: ()=>@"string_here"(এটি কাস্ট করে Action<string>)। আমি ভারব্যাটিম স্ট্রিং ( @) ব্যবহার করার পরামর্শ দিচ্ছি যাতে আপনি নতুন পংক্তিগুলি সরাসরি স্ট্রিংয়ের মধ্যে এড়াতে না পারাতে পারেন।
দুধ

0

সি (জিসিসি) , 99 বাইট

f(i){for(i=48;i--;)printf("%.2s%s","FFC08000"+("#&/28MNQRSV]^_ab"[i/3]-35>>i%3*2&3)*2,"\n\0"+i%3);}

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

বাছাইয়ের সময় সংখ্যার একটি তালিকা তৈরি এবং সেগুলি আউটপুট জড়িত করার চেষ্টা করার পরে, আমি নিষ্প্রভ সমাধানটির সাথে তুলনা করেছি, যা প্রশান্ত ছিল:

f(){puts("000000\n000080\n0000FF\n008000\n008080\n00FF00\n00FFFF\n800000\n800080\n808000\n808080\nC0C0C0\nFF0000\nFF00FF\nFFFF00\nFFFFFF");}

আমার এক চেষ্টা 200 এবং পরিবর্তনের তুলনায় 140 বাইটের মধ্যে এটি।

সমাধানটি হ'ল এটিকে অন্য বর্ণের মতো পাঠ্য হিসাবে ভাবা, যদিও একটি ছোট বর্ণমালা দিয়ে। প্রতিটি বর্ণ বর্ণমালা into 0xff, 0xc0, 0x80, 00 into 2 বিট সূচকগুলির একটি ট্রিপল হিসাবে ভাবা যেতে পারে} রঙের প্রক্রিয়া -> ট্রিপলেট -> নম্বর -> অক্ষর (এগুলি সমস্ত মুদ্রণযোগ্য করে তোলার জন্য অফসেট +35 সহ এবং পালানোর কোনও প্রয়োজন এড়ানোর জন্য) চিত্রিত করা যেতে পারে:

000000  333     63  b
000080  332     62  a
0000FF  330     60  _
008000  323     59  ^
008080  322     58  ]
00FF00  303     51  V
00FFFF  300     48  S
800000  233     47  R
800080  232     46  Q
808000  223     43  N
808080  222     42  M
C0C0C0  111     21  8
FF0000  033     15  2
FF00FF  030     12  /
FFFF00  003     3   &
FFFFFF  000     0   #

তারপরে ফলস্বরূপ স্ট্রিংটি দিয়ে পুনরাবৃত্তি হওয়া এবং বর্ণমালার স্ট্রিংয়ের উপযুক্ত অংশগুলি কেটে ফেলার বিষয়টি কেবল।

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