तीन पूर्णांक आरजीबी को देखते हुए, एक स्ट्रिंग के रूप में आउटपुट हेक्साडेसिमल प्रतिनिधित्व।
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
इंगित करने के लिए @manatwork के लिए धन्यवाद लूप के
ForEach-Objectस्थान पर उपयोग किया जा सकता हैfor।
@Joey को यह इंगित करने के लिए धन्यवाद कि मैं-joinइसे लूप आउटपुट पर उपयोग कर सकता हूं , बजाय इसे चर में रखने के।
गोल्फ कोड:
'#'+-join(1..3|%{"{0:X2}"-f+(read-host)})
ध्यान दें:
अमान्य इनपुट के लिए यहां कोई त्रुटि नहीं है। स्क्रिप्ट खुशी से 256, 4096 और 65536 इनपुट के रूप में लेगी, फिर आउटपुट # 100100010000 (जो स्पष्ट रूप से RGB के लिए काम नहीं करेगा)।
टिप्पणियों के साथ असंगठित:
# 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 चार्ट के लिए धन्यवाद @manatwork )
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मेरे कोडिंग शैली में कभी नहीं। तो इसके अपरंपरागत मेरे लिए पर्याप्त है।
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);
दलदल मानक printf और बिट twiddler उपयोग
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और यह evals।
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।
TimmyD की बदौलत एक बाइट बचाई
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"- जो 31 बाइट्स के लिए देता है$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);}
बोरिंग सी कार्यक्रम - बहुत रूढ़िवादी।
x=lambda y: ("0"+hex(int(y))[2:])[-2:]
print "#"+''.join(map(x,input().split()))
मैं एकल अंक हेक्स मानों को संभालने के लिए बेहतर तरीके की तलाश कर रहा हूं। कोई विचार?
Bleh, डुप्लिकेट कोड। ओह अच्छा। मूलांक रूपांतरण का सीधा-सादा कार्यान्वयन।
"#",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
(नोट: इनपुट पढ़ने से पहले '#' प्रिंट करता है --- यह कार्य मना नहीं करता है; स्टड पर तीन नंबर दिए जाने से यह स्टडआउट पर सही आउटपुट देता है। यह भी नईलाइन्स से परेशान नहीं करता है, और जैसा कि आप इसे देख सकते हैं। "इंटरएक्टिवली" चलाने पर "t add '#' ठीक से।"
3 से 9 अंकों के आरजीबी के लिए संकेत। GML हेक्साडेसिमल चिह्न के साथ हेक्साडेसिमल लौटाता है,$
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
यह देर हो सकती है, पूर्णता के लिए:
(defn hexy [r g b] (reduce str (cons "#" (map #(format "%02X" %) [r g b]))))
उदाहरण कॉल:
(hexy 0 255 127)
"#00FF7F"
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()])