তিনটি পূর্ণসংখ্যার আরজিবি দেওয়া হয়েছে, স্ট্রিং হিসাবে আউটপুট হেক্সাডেসিমাল উপস্থাপনা।
Input: Output:
72 61 139 #483D8B
75 0 130 #4B0082
0 255 127 #00FF7F
সংক্ষিপ্ততম অপ্রচলিত কোড জয়ী
তিনটি পূর্ণসংখ্যার আরজিবি দেওয়া হয়েছে, স্ট্রিং হিসাবে আউটপুট হেক্সাডেসিমাল উপস্থাপনা।
Input: Output:
72 61 139 #483D8B
75 0 130 #4B0082
0 255 127 #00FF7F
সংক্ষিপ্ততম অপ্রচলিত কোড জয়ী
উত্তর:
$_=?#+"%02X"*3%$F
নমুনা রান:
bash-4.1$ ruby -pae '$_=?#+"%02X"*3%$F' <<< '72 61 139'
#483D8B
bash-4.1$ ruby -pae '$_=?#+"%02X"*3%$F' <<< '75 0 130'
#4B0082
bash-4.1$ ruby -pae '$_=?#+"%02X"*3%$F' <<< '0 255 127'
#00FF7F
আমি "অপ্রচলিত" অংশের জন্য আরও যাচ্ছিলাম। ;)
10;a= gets. split
. map {| x| #x
"%02X" %( x. to_i)
}; $> << ?# << a[
00 .. 1+2]. join;
ফন্টটি (আমার ওয়েব ব্রাউজারে) কিছুটা লম্বা, তাই এটি বিকৃত দেখাচ্ছে তবে কুরিয়ার নিউতে এটি আরও ভাল দেখাচ্ছে:

নমুনা রান:
c:\a\ruby>rgb2hex
255 100 0
#FF6400
লুপের
ForEach-Objectজায়গায় নির্দেশ করার জন্য @ মান্যাটওয়ার্ককে ধন্যবাদfor।
ভঙ্গুতে এটির-joinপরিবর্তে লুপ আউটপুটটিতে আমি ব্যবহার করতে পারব বলে জোয়িকে ধন্যবাদ জানাই Thanks
গল্ফ কোড:
'#'+-join(1..3|%{"{0:X2}"-f+(read-host)})
বিঃদ্রঃ:
এখানে অবৈধ ইনপুটগুলি পরীক্ষা করার ক্ষেত্রে কোনও ত্রুটি নেই। স্ক্রিপ্টটি আনন্দের সাথে ইনপুট হিসাবে 256, 4096 এবং 65536 নেবে, তারপরে আউটপুট # 100100010000 (যা সম্ভবত আরজিবি হিসাবে কাজ করবে না)।
মতামত সহ উজ্জ্বল:
# Put a hashtag in front of the output.
'#'+
# Join the nested code into one string.
-join(
# Pipe 1..3 to ForEach-Object to run a loop three times.
1..3|%{
# Take user input and format it as hex, with minimum two digits in output.
"{0:X2}"-f+(read-host)
}
)
foreach($i in 1,2,3)এটি 68 টি অক্ষরে কমাতে লুপটি তৈরি করুন ।
foreach। (কমপক্ষে, আমি কাজ করার জন্য কিছু পরীক্ষার রান পেতে সক্ষম হইনি)) তবে, ডান সিনট্যাক্স ব্যবহার করে, একটি বিল্ট-ইন ওরফে এবং অন্য পাওয়ারশেল শর্টকাট আমি সম্প্রতি আবিষ্কার করেছি, আমি মনে করি আমার আরও ভাল কিছু হয়েছে, শেভিং আপনার পরামর্শের বাইরে আরও 12 টি অক্ষর। (1..3)|%{...}(উপবৃত্তির স্থলে বিদ্যমান স্ক্রিপ্ট থেকে বন্ধনীযুক্ত বিবৃতি সন্নিবেশ করান)) আমাকে এখনও স্ক্রিপ্টে এটি পুরোপুরি পরীক্ষা করা দরকার, তবে আমাকে সেদিকে নির্দেশ করার জন্য ধন্যবাদ!
(1..3)|%কাজ করে এবং স্ক্রিপ্টটিকে 56 টি অক্ষরে নামায়। আমি এটি উত্তরে সম্পাদনা করব, এবং অবশ্যই আপনাকে ধারণার জন্য ক্রেডিট করব। আবার ধন্যবাদ!
-join: '#'+-join(1..3|%{"{0:X2}"-f+(read-host)})।
( \ডাবল-কোটের পরিবর্তে 1 চরের জন্য @ মান্যাটওয়ার্ককে ধন্যবাদ )
printf \#%02X%02X%02X 12 12 12
#0C0C0C
বা একটি লুপে STDIN পড়া : 48 টি অক্ষর:
while read f;do printf "#%02X%02X%02X\n" $f;done <<<$'72 61 139\n75 0 130\n0 255 127'
#483D8B
#4B0082
#00FF7F
c=({0..9} {a..f}) d=\#;for b;do for a in / %;do d+=${c[$b$a 020]};done;done;echo $d
আমি জানি, 020যেখানে লেখা আছে এটি 82 টি অক্ষর হতে পারে 16তবে আমি এটি পছন্দ করি ... বা সম্ভবত d+=${c[$b$a 0x10]}এটি প্রথম পোস্ট ছিল।
hexcolor() {
local a b c=({0..9} {a..f}) d=\#
for b ;do
for a in / % ;do
d+=${c[$b$a 0x10]}
done
done
echo $d
}
hexcolor 72 61 139
#483d8b
hexcolor 75 0 130
#4b0082
hexcolor 0 255 127
#00ff7f
#!/bin/bash
browser=firefox # google-chrome iceweasel
url="data:text/html;charset=UTF-8,<html><head></head><body>"
url+="<script type='text/javascript'>
function h(i){var h=i.toString(16);if(16>1*i)h='0'+h;
return h};function C(r,g,b){return'\043'+h(r)+h(g)+h(b)};
function m(){ var r=1.0*R.value; var g=1.0*G.value; var b=1.0*B.value;
var fore='black';if(384>r+g+b)fore='white';var c=C(r,g,b);
s.setAttribute('style','background:'+c+';color:'+fore+';');s.innerHTML=c};
function w(e){console.log(e);var val=e.target.value;var q=1;if(e.shiftKey)
q=15;if(e.detail){if(e.detail>0){q=0-q;}}else if(0>e.wheelDelta){q=0-q;};
val=1*val+q;if(val>255)val=255;if(0>val)val=0;e.target.value=val;m(); };
function k(e){console.log(e);var val=e.target.value;var q=1;if(e.shiftKey)q=
15;if(e.keyCode==38){val=1*val+q;if(val>255)val=255;e.target.value=val;m();}
else if(e.keyCode==40){val=1*val-q;if(0>val)val=0;e.target.value=val;m();}};
function n(){R=document.getElementById('R');G=document.getElementById('G');
B=document.getElementById('B');s=document.getElementById('s');
R.addEventListener('DOMMouseScroll',w);R.addEventListener('mousewheel',w);
G.addEventListener('DOMMouseScroll',w);G.addEventListener('mousewheel',w);
B.addEventListener('DOMMouseScroll',w);B.addEventListener('mousewheel',w);
m();};var R, G, B, s;window.onload=n;
</script><style>div{display:inline-block;width:10em;}</style>
<div id='s'> </div>"
input="%s:<input type='text' size='5' value='200'"
input+=" onKeyDown='k(event)' onChange='m()' id='%s' />"
for c in R G B ;do
printf -v add "$input" $c $c
url+="$add"
done
$browser "$url"
এটি সহ একটি ব্রাউজার উইন্ডো প্রদর্শিত হবে:

যেখানে আপনি মানগুলি পরিবর্তন করতে মাউসওয়েলটি রোল করতে পারেন (শিফট কী সহ 15 ধাপে ধরে রাখা) ...
printf \#%02X%02X%02Xযথেষ্ট।
d+=${c[$b$a 0x10]} কিছু খুঁজে !
d+=${c[$b$a 020]}কাজটি করবে এবং দেখতে সুন্দর লাগবে
perl -nE 'say"#",map{unpack H2,chr}split'
এ জাতীয় একটি সংক্ষিপ্ত প্রোগ্রামটি অযৌক্তিকভাবে করা শক্ত, তবে আমি মনে করি এটি কার্যকর হয়।
unpackপ্রশ্ন: আপনি কি প্রশ্নটির মতো হেক্সাডেসিমাল a..f বড় হাতের তৈরি করতে পারেন?
unpack, তবে কোনও ভাগ্য নেই। এর sprintfপরিবর্তে একটি উপায় হ'ল unpackতবে এটি দীর্ঘ এবং সম্পূর্ণ গোঁড়া। অন্য উপায়টি হ'ল স্ট্রিংকে বড় হাতের অক্ষরে পরিবর্তন করা: map{uc unpack H2,chr}তিনটি অক্ষরের ব্যয়।
packএবং unpackআমার কোডিং শৈলীতে getুকেনা। সুতরাং এটি আমার জন্য যথেষ্ট প্রচলিত or
trace("#"+(72<<16|61<<139|b).toString(16));
আউটপুট: #483D8B
perl -ne 'printf"#"."%02x"x3,split'
13 31 133
#0d1f85
দুঃখিত, এটি ব্যবহারের চেয়ে সেক্সি নয় unpack, তবে খাটো!
তবে আপনি যদি সত্যিই ব্যবহার করতে পছন্দ করেন unpackতবে আপনি তা করতে পারেন:
$==24;s/\d+[\n ]*/{$=-=8;($&<<$=).do{rand>.5?qw<+>[0]:"|"}}/eg;$_=
pack("N",eval($_.587.202.560));say$1,unpack("H6",$2)if/^(.)(.*)$/s
নমুনার জন্য, এটি সংক্ষিপ্ত সংস্করণ নয়, তবে আমি এটি পছন্দ করি! (এটি রেন্ডারিংয়েরrand জন্য ব্যবহারের নোট করুন :-)
perl -nE '
$==24;s/\d+[\n ]*/{$=-=8;($&<<$=).
do{rand>.5?qw<+>:"|"}}/eg;$_=pack(
"N",eval($_.587.202.560) );say $1,
unpack("H"."6",$2) if /^(.)(.*)$/s
' <<< $'72 61 139\n75 0 130\n0 255 127'
#483d8b
#4b0082
#00ff7f
"#"or>1[:82*%:}-82*,86*+:"9"v
;^?l ]o+*7)"9":+*68o+*7)<
নষ্ট সাদা স্থান ব্যবহার করে এবং এতে কিছু কোড সরিয়ে নিয়েছে
কমান্ড লাইন ইনপুট দিয়ে চালান:
python fish.py generateHex.fish -v 255 36 72
আউটপুট: "# FF2448"
: D 0 <<# # # #> TYPE #>> ; 35 EMIT HEX SWAP ROT D D D DECIMAL
1 1 1আউটপুট দেয় #010101। অন্য যে কোনও মান 0-255 কাজ করে। আপনি কোন পরিবেশ বা এগিয়ে ব্যবহার করছেন?
int r,g,b;
scanf("%d %d %d",&r,&b,&g);
printf("#%06x",r<<16|g<<8|b);
বগ স্ট্যান্ডার্ড প্রিন্টফ এবং বিট টুইডলার ব্যবহার
readf,? তা কি হওয়া উচিত নয় scanf?
[#]n16o?ShShSh[Lhd16/n16%n]ddxxx
নমুনা রান:
bash-4.1$ dc -e '[#]n16o?ShShSh[Lhd16/n16%n]ddxxx' <<< '72 61 139'
#483D8B
bash-4.1$ dc -e '[#]n16o?ShShSh[Lhd16/n16%n]ddxxx' <<< '75 0 130'
#4B0082
bash-4.1$ dc -e '[#]n16o?ShShSh[Lhd16/n16%n]ddxxx' <<< '0 255 127'
#00FF7F
(তবে পৃথক লাইনে ইনপুট নম্বরগুলি দরকার))
[#]n16o[?d16/n16%n]ddxxx
নমুনা রান:
bash-4.1$ dc -e '[#]n16o[?d16/n16%n]ddxxx' <<< $'72\n61\n139'
#483D8B
bash-4.1$ dc -e '[#]n16o[?d16/n16%n]ddxxx' <<< $'75\n0\n130'
#4B0082
bash-4.1$ dc -e '[#]n16o[?d16/n16%n]ddxxx' <<< $'0\n255\n127'
#00FF7F
dcএই ওয়েবসাইটে যথেষ্ট উত্তর নেই।
জাভাস্ক্রিপ্ট, 89 টি অক্ষর
console.log('#' + ('00000' + eval('256*(256*(' + DEC.replace(/ /g, ')+')).toString(16)).slice(-6))
এটিকে রূপান্তর 72 61 139করে 256*(256*(72)+61)+139এবং এভেল করে।
eval('(('+DEC.replace(/ /g,'<<8)+'))পরিবর্তে ব্যবহার করে eval('256*(256*('+DEC.replace(/ /g,')+'))আপনি 5 টি অক্ষর সংরক্ষণ করুন!
'#'+-join(-split(read-host)|%{'{0:X2}'-f+$_})
অথবা, যদি ডেটাতে পাইপ ব্যবহার করে এটি ব্যবহার করা যায় তবে আপনি কেবল ব্যবহার করতে পারেন
'#'+-join(-split"$input"|%{'{0:X2}'-f+$_})
যা এটিকে 42 এ নামিয়ে আনে ।
-splitএবং -join।
টিমমিডকে ধন্যবাদ একটি বাইট সংরক্ষণ করা
cat rgb2hex.ps1
$args|%{$o+="{0:X2}"-f[byte]$_};"#$o"
wc -c rgb2hex.ps1
38 rgb2hex.ps1
powershell -f .\rgb2hex.ps1 72 61 139
#483D8B
powershell -f .\rgb2hex.ps1 0 255 127
#00FF7F
[byte]পূর্ণসংখ্যা হিসাবে ইনপুট দেওয়া হওয়ায় আপনি কিছুটা বাইট সংরক্ষণ করতে পারেন এবং আপনার আউটপুটটি "#$o"$args|%{$o+="{0:X2}"-f$_};"#$o"
main(){int a,b,c;scanf("%d%d%d",&a,&b,&c);printf("#%02X%02X%02X",a,b,c);}
বিরক্তিকর সি প্রোগ্রাম - খুব গোঁড়া।
ব্লেহ, নকল কোড আচ্ছা ভালো. কেবলমাত্র রেডিক্স রূপান্তরটির একটি সরল বাস্তবায়ন।
"#",v
7*+,>#@&:97+/"0"+:"9"`7*+,97+%"0"+:"9"`
নমুনা রান
% cfunge tohex.98 <<<'72 61 139'
#483D8B
% cfunge tohex.98
#75 0 130
4800820 255 127
00FF7F
(দ্রষ্টব্য: ইনপুট পড়ার আগে '#' প্রিন্ট করে --- টাস্কটি এটি নিষেধ করে না; স্ট্ডিনে তিনটি নম্বর দেওয়া এটি স্ট্ডআউটে সঠিক আউটপুট তৈরি করে। এটি নিউলাইনগুলি নিয়েও বিরক্ত করে না এবং আপনি দেখতে পাচ্ছেন যে এটি কী করে না "ইন্টারেক্টিভলি" চালানোর সময় '#' সঠিকভাবে যুক্ত করবেন না))
3 থেকে 9-সংখ্যার আরজিবি-র জন্য অনুরোধ জানানো হয়। জিএমএল হেক্সাডেসিমাল চিহ্ন সহ হেক্সাডেসিমাল ফিরিয়ে দেয়,$
d=get_string('','')if(d=='')e=""else e="00"h="0123456789ABCDEF"while(d!=''){b=d&255i=string_char_at(h,byte div 16+1)l=string_char_at(h,byte mod 16+1)e+=i+l;d=d>>8}return '$'+e
এটি একটি স্ক্রিপ্ট করুন। এছাড়াও, অস্বীকারহীন ভেরিয়েবলগুলি 0 হিসাবে গণ্য করে সংকলন করুন।
\B=@set{x;0123456789abcdef}\#
<D>=@substring{@div{$1;16};1;$x}@substring{@mod{$1;16};1;$x}
?=
নমুনা রান:
bash-4.3$ gema '\B=@set{x;0123456789abcdef}\#;<D>=@substring{@div{$1;16};1;$x}@substring{@mod{$1;16};1;$x};?=' <<< '0 255 127'
#00ff7f
যদি নিম্ন-কেসটিও অনুমোদিত হয় তবে 10 বাইট:
psb6\['#+]
ব্যবহার:
blsq ) "72 61 139"psb6\['#+]
"#483d8b"
আপনার যদি মারাত্মকভাবে উচ্চ-কেসের প্রয়োজন হয় তবে যুক্ত করুন ZZ:
blsq ) "72 61 139"psb6\['#+]ZZ
"#483D8B"
আপনি যদি স্ট্রিংয়ের মতো পূর্ণসংখ্যা না পান তবে সাথে যান:
blsq ) {72 61 139}b6\['#+]
"#483d8b"
ব্যাখ্যা:
ps -- parse string
b6 -- to hex
\[ -- concat
'#+] -- prepend #
বোনাস:
এটিকে আবার রূপান্তর করতে এটি ব্যবহার করুন:
blsq ) "#483d8b"[-2cob6
{72 61 139}
print("#"+3*"%.2X"%tuple(int(n) for n in input().split()))
প্রতিহত করতে পারেনি:
[dan@danbook:code_golf/int_to_hex]$ python3.3 int_to_hex.py
176 11 30
#B00B1E
f = StringJoin["#", IntegerString[#, 16, 2]] &
rgbs = {{72, 61, 139}, {75, 0, 130}, {0, 255, 127}}
f /@ rgbs // Column
# 483d8b
# 4b0082
# 00ff7f
h=>'#'+h.split` `.map(x=>(x<16?0:'')+(x*1).toString(16)).join``
x=>(x<16?0:'')+x.toString(16)
r=শুরুতে অন্তর্ভুক্ত করার দরকার নেই । এটি এখনও একটি বেনামি ফাংশন হিসাবে একটি ফাংশন হিসাবে গণ্য করা হয়, যেহেতু আপনি কোনও কিছু বরাদ্দ না করেই এটিকে আবেদন করতে পারেন।
x=>(x<16?0:'')+(x*1).toString(16)সেখানে ইতি এবং আমার প্রথম এক বর্তমানে জন্য ভুল মান দিতে x>9।
#7261139পরিবর্তে ফিরে আসে #483D8B।
'#'+''.join([hex(int(i))[2:].upper() for i in input()])