XKCD रंगों का निर्णय लेना


38

रैंडल मुनरो (XKCD के लेखक) ने रंगों को नाम देने के लिए एक सर्वेक्षण किया । मुख्य परिणाम 954 सबसे आम आरजीबी मॉनिटर रंगों के नामों की एक सूची है

प्रोग्रामिंग में आसानी के लिए, यहाँ सादे पाठ में सूची दी गई है: http://xkcd.com/color/rgb.txt । खबरदार, पहली पंक्ति डेटा नहीं है, लेकिन इसमें लाइसेंस शामिल है।

एक प्रोग्राम या फ़ंक्शन लिखें जो उपरोक्त सूची से इनपुट के रूप में मान्य रंग नाम लेता है और संबंधित RGB रंग कोड को आउटपुट करता है। आपके प्रोग्राम को किसी भी परिभाषित तरीके से अमान्य इनपुट को संभालने की आवश्यकता नहीं है।

मानक खामियां लागू होती हैं। इसके अतिरिक्त, आपके उत्तर में पूर्व-परिभाषित (अंतर्निहित या बाहरी) रंग कोड <-> रंग नाम नक्शे का उपयोग नहीं किया जाना चाहिए। (इसमें लिंक की गई सूची शामिल है।) बाइट्स जीत में सबसे छोटा कोड। यदि आप किसी फ़ाइल से पढ़ते हैं, तो फ़ाइल की बाइट गिनती शामिल होनी चाहिए।

उदाहरण:

dark peach -> #de7e5d   
robin's egg blue -> #98eff9 
pink/purple -> #ef1de7  

10
क्या हमें उस फ़ाइल को ऑनलाइन एक्सेस करने की अनुमति है?
लीक

6
@LeakyNun यह एक मानक खामियाजा है। इसके शीर्ष पर यह मेरी चुनौती के चौथे पैराग्राफ में स्पष्ट रूप से अस्वीकृत है।
orlp

21
shit #7f5f00-
लीक

12
bubble gum pink #ff69af,bubblegum pink #fe83cc
लीक

21
@LeakyNun पहला रंग वास्तव में बीमार सूजन वाले मसूड़ों का रंग है, दूसरा एक प्रकार की कैंडी का रंग है।
अड्म

जवाबों:


21

पर्ल 5 - 4212 3956 3930

use IO::Uncompress::Gunzip qw(gunzip);
gunzip 'g'=>\$_;
while(/(\x00*)(.)(.)(.)(.)/gs){$c[$i+=ord($2)+255*length$1]=sprintf"#%02x%02x%02x\n",map{ord}$3,$4,$5}
@a[32,33,39,47,97..123]=(3,1812,3,17,82,4,1013,119,3,909,8,10,10,1827,1219,4,718,265,228,418,2347,10,3,31,3,1786,921,380,1223,1915,4);
$_=<>;
for$i(0..(($h=y///c-1)<=12?$h-1:12)){$h+=$a[(($i/2|0)==1)+ord((/./g)[$i])]if($i!=7&&$i!=10)}
print$c[$h];

कोड के लिए 407 बाइट और डेटा फ़ाइल के लिए 3523। बाइनरी डेटा 'जी' फ़ाइल से पढ़ा जाता है, जिसका एक हेक्सडंप यहां पाया जा सकता है

यह GNU gperf का उपयोग करके उत्पन्न एक सही हैश फ़ंक्शन का उपयोग करता है, जो प्रत्येक रंग का नाम 0 से 6304 की सीमा में एक अद्वितीय पूर्णांक को असाइन करता है जिसका उपयोग तालिका को अनुक्रमित करने के लिए किया जा सकता है। Gzipped डेटा में 1 बाइट के प्रारूप में रंग मान होते हैं जो पिछले रंग से तालिका में ऑफसेट का संकेत देते हैं, फिर रंग के लिए 3 बाइट्स (प्रति बाइट दो हेक्स अंकों के साथ)। (ऑफसेट के लिए एक 0 बाइट का मतलब है कि यह वास्तव में अगला मूल्य + 255 है, क्योंकि प्रत्येक ऑफसेट एक बाइट में फिट नहीं होता है)।

कोड रंग आरजीबी स्ट्रिंग युक्त तालिका बनाने के लिए डेटा को पार्स करता है, फिर तालिका से मिलान आउटपुट का चयन करने के लिए इनपुट को हैश फ़ंक्शन (पर्ल में अनुवादित) पर लागू करता है।

उपयोग:

echo 'pale red' | perl get-color.pl
#d9544d

संपादित करें: डेटा फ़ाइल को जिप करके आकार को और कम कर दिया


अरे हाँ। मैं शायद मेरी फ़ाइल gzipped कर सकता है।
मूल्य इंक

2
आप अपने डेटा फ़ाइल को 3496 बाइट्स में कम करने के लिए "गनज़िप जी; ज़ोफ्ली - आई 100 जी; एमवी जीजीजी जी" का उपयोग कर सकते हैं
ग्लेन रैंडर्स-पेहर्सन

1
क्या आप कुछ शब्दों को लिखने में रुचि रखते हैं कि आप gperf का उपयोग कैसे करते हैं, शायद इस टिप्स थ्रेड में? codegolf.stackexchange.com/questions/59238/golfing-strings
जोर्डन

1
बहुत अच्छा तरीका! आप मुझे gperf में दिलचस्पी लेने में कामयाब रहे, हालाँकि मैंने PHP में कुछ अलग करने की कोशिश की थी जो एक किलोबाइट से बड़ी हो गई ...
यतिसीजीएन

15

EXCEL, 18 (+ 18269)

बस एक बेसलाइन सेट करने के लिए, मैं सबसे सरल एक्सेल समाधान दिखाऊंगा जो मैं सोच सकता था:

कोड

एक्सेल में कोड बहुत सरल है:

=VLOOKUP("";A:B;2)

इनपुट को दोहरे उद्धरण चिह्नों के बीच रखा जाना चाहिए।

डेटा

डेटा को एक .csv फ़ाइल में संग्रहित किया जाना चाहिए, जो इस तरह से दिखती है:

गुलाबी बैंगनी; # d648d7

जब मैं CSV पर क्लिक करता हूं तो यह स्वचालित रूप से एक्सेल को खोलता है, और डेटा को कॉलम A और B में रखता है, आपको एक अलग विभाजक की आवश्यकता हो सकती है।


13

रूबी, 5,379 88 + 9 + 5,220 = 5,317 बाइट्स

-rdigestझंडे के लिए +9 बाइट्स ।

n=$*.pop
$><<?#+$<.read.unpack("h*")[0][/^.{11}*#{Digest::MD5.hexdigest(n)[1,5]}\K.{6}/]

... प्लस 5,220-बाइट शब्दकोश एसटीडीआईएन (या फ़ाइल नाम तर्क) से पढ़े गए द्विआधारी डेटा के रूप में। आपको नीचे दिए गए स्निपेट में xxd प्रारूप में शब्दकोश मिलेगा। कार्यक्रम एक तर्क के रूप में एक रंग का नाम लेता है, इसलिए आप इसे इस तरह से आमंत्रित करते हैं:

$ cat dictionary | ruby -rdigest script.rb "purplish grey"
#7a687f

अगर किसी को एक छोटे तरीके से पता चल सकता है कि दोनों एक फाइल को कैसे पढ़ते हैं और एक तर्क के रूप में एक रंग का नाम लेते हैं, तो कृपया एक टिप्पणी छोड़ दें। $*(ARGV) और (ARGF) $<अजीब और मनोगत तरीकों से बातचीत करते हैं, एर्गो $*.pop

शब्दकोश (xxd प्रारूप)

व्याख्या

शब्दकोश को एनकोडिंग

शब्दकोश का निर्माण बहुत सरल है। मैं रंग नाम के हेक्साडेसिमल एमडी 5 हैश लेता हूं और 6-अंक के रंग कोड के साथ छठे हेक्स अंकों (जो प्रत्येक रंग के लिए अद्वितीय होता है) के माध्यम से दूसरे को समेटता हूं। मैं इन्हें 10,439 हेक्स अंकों के सिंगल स्ट्रिंग में शामिल करता हूं। फिर मैं इसे बराबर 5,219.5 बाइट्स में परिवर्तित करता हूं, जो कि 5,220 बाइट्स के दाईं ओर ज़ीरो के साथ गद्देदार होता है।

मजेदार बात: मैंने डिक्शनरी को गिप्पींग करने की कोशिश की और यहां तक ​​कि zopfli -i10040 बाइट्स वाली एक बड़ी फाइल तैयार की । बस मज़े के लिए मैंने बाइनरी शब्दकोश की एन्ट्रॉपी की गणना की और यह 99.8% (बनाम, उदाहरण के लिए, rgb.txt61.2%) है। बुरा नहीं!

यहाँ कोड है जो शब्दकोश उत्पन्न करता है:

require "digest"

def hash_name(name)
  Digest::MD5.hexdigest(name)[1,5]
end

names_colors = ARGF.drop(1).map {|ln| ln.split(?#).map(&:strip) }
# => [ [ "cloudy blue", "acc2d9" ],
#      [ "dark pastel green", "56ae56" ],
#      ... ]

keys_colors = names_colors.map {|name,color| [ hash_name(name), color ] }
# => [["b9ca5", "acc2d9"], ["8ff06", "56ae57"], ...]

dict_hex = keys_colors.join
# => "b9ca5acc2d98ff0656ae57..."

STDERR.puts "dict_hex: #{dict_hex.size} bytes"

dict_bin = [dict_hex].pack("h*")
STDERR.puts "dict_bin: #{dict_bin.size} bytes"

print dict_bin

डिकोडिंग और शब्दकोश की खोज

यह उपरोक्त के ठीक विपरीत है। पहले मैं बाइनरी डेटा को अपने 10,439 अंकों के हेक्साडेसिमल प्रतिनिधित्व में परिवर्तित करता हूं। फिर मैं इनपुट स्ट्रिंग (रंग का नाम) लेता हूं और अपने एमडी 5 हैश के छठे हेक्स अंकों के माध्यम से दूसरा प्राप्त करता हूं और 10,439 अंकों के हेक्स स्ट्रिंग में उन अंकों को खोजने के लिए एक नियमित अभिव्यक्ति का उपयोग करता हूं, जो 11 तक कुछ इंडेक्स विभाज्य 11 पर है और बाद के 6 अंकों को लौटाता है। , जो इसी रंग कोड हैं। उदाहरण के लिए, हैश b9ca5("क्लाउड ब्लू") के लिए, निम्नलिखित नियमित अभिव्यक्ति का निर्माण किया जाता है /^.{11}*b9ca5\K.{6}/:। \Kऑपरेटर छोड देता है उस समय तक मेल खाते हैं, इसलिए अभी पिछले छह वर्ण लौटाए जाते हैं।


यह काम नहीं करता है : आपके लिए आउटपुट pink/purpleहै #a6814c, लेकिन सही उत्तर है #ef1de7
nnonneo

@nneonneo यह अब काम करता है । पता चलता है कि मैं कुछ हैश टकराव था। अब यह आसान है, लेकिन काम करता है!
जॉर्डन

7

पर्ल, 7,375 बाइट्स

भंडारित डेटा ( grey-> E, आदि) को थोड़ा द्विआधारी डेटा के रूप में संग्रहीत करता है, इसे एक हैश में विस्तारित करता है और इनपुट के साथ रिक्त स्थान को बदलने के बाद मिलान कुंजी देता है _। मुझे नहीं लगता कि यह बहुत अच्छा है, और कुछ अन्य लोगों के पास डेटा को संपीड़ित करने के लिए बहुत अधिक बुद्धिमान तरीके होंगे, मैं बाद में इसके साथ खेल सकता हूं।

use IO::Uncompress::Gunzip qw(gunzip);gunzip\'<binary data>'=>\$_;for$v(qw{A/pale B/blue D/dark E/grey G/green I/bright L/light N/brown O/orange P/pink R/red U/purple Y/yellow}){eval"s/$v/g"}print"#".{m![/\w']+!g}->{<>=~s/ /_/gr}

एक प्रतिवर्ती हेक्सडंप यहां उपलब्ध है जो इस स्क्रिप्ट का उपयोग करके उत्पन्न किया गया था ।

प्रयोग

echo -n 'baby shit brown' | perl xkcd-colours.pl
#ad900d

2
Gzip के बजाय "zopfli --i100" के साथ अपनी इनपुट फ़ाइल को संपीड़ित करने का प्रयास करें। यह अभी भी एक gzipped फ़ाइल के रूप में पढ़ने योग्य होगा।
ग्लेन रैंडर्स-पेहर्सन

6

रूबी, 12131 12030 + -p= 12033 बाइट्स

बाइट काउंट http://pastebin.com/xQM6EF9Q<compressed text> में कच्चे पेस्ट डेटा के साथ बदलने के बाद है । (सुनिश्चित करें कि आपको फ़ाइल के भीतर टैब की वजह से कच्चा डेटा मिलता है)

मैं वास्तव में पाठ को और सिकोड़ सकता था, लेकिन अब मैं कुछ घंटों के लिए इस पर हूं और मुझे सोने की जरूरत है।

इनपुट एक अनुगामी न्यूलाइन के बिना STDIN से एक पाइप-इन लाइन है। अनुगामी न्यूलाइन में जोड़ने से +3 बाइट्स को बदलने की आवश्यकता होती ($_+?\t)है (chomp+?\t)

i="<compressed text>"
%w"Bblu Ddeep_ R*ight_ N*own Yyellow Tdirt Kdark Ldull_ Sdu} Qdusk Ee]ctric_ Ffaded_ G|een Iish A|ey Hlight Oor{g Ppa]_ Upurpl Cred Vvery_ -pink %ros ~sea .pea @egg ^burnt_ &baby ,poo =tea !t{ Mmedium_ $pa}el_ ;mud `aqua ?s{d >neon_ <lavend :gold +lime |gr ]le [mon }st {an *br".map{|x|i.gsub!x[0],x[1,99]}
$_=i.tr(?_,' ').lines.find{|s|($_+?\t)[/^#{s[/[^#]+/]}/]}[/#.*/]

4

BASH + bzip2, 8058 6809 6797 बाइट्स

bunzip2 -c c|tr -d "\t"|grep -F "$1#"|cut -d "${1: -1}" -f2

इसे कंप्रेस करने के बाद ओरिजिनल लिस्ट को किसी फाइल में स्टोर कर लें, यकीन नहीं होता कि इसकी अनुमति है।

के साथ बुलाना:

sh ./colors.sh "shit"

यह केवल पहला तर्क पढ़ता है। एक से अधिक शब्दों के साथ एक रंग पारित करने की कोशिश कर रहा है यानी dusty tealअसफल हो जाएगा। सभी तर्कों को पढ़ें $*या ऐसा कुछ करें।
मास्टर_एक्स

5
बस तर्क को उद्धरणों में लपेटने की जरूरत है।
जो

1
मैंने किया, xz लगभग 1k बड़ा है।
जो

1
आप `bunzip2 -cc` के बजाय` bzcat c` का उपयोग कर सकते हैं
इमैनुअल

1
क्षमा करें आप bzgrep ..... c इसके बजाय उपयोग कर सकते हैं
इमैनुएल

4

पायथन, 9360 वर्ण

किसी भी संपीड़न पुस्तकालय का उपयोग नहीं करता है। मैं इसे थोड़ी देर के लिए एक रहस्य के रूप में छोड़ दूंगा कि यह कैसे काम करता है और फिर तकनीक का लिंक पोस्ट करता है। बेशक इसे बाइनरी फॉर्मेट में डेटा को स्टोर करके कम किया जा सकता है लेकिन यह दूसरी बार के लिए एक एक्सर्साइज़ है।

G=[int(x or 0) for x in "0 -949  -948 -945 3  3 -944 2 2  -936     3 -935 -929 -927 2 -923 -922    3  3  -920   2 -916 2   2  4 -915 -911 2 4 -910 -909  -906 -898 -897  -890  2 -888  -887 2 -886  -885 2 -882 -880 -878 -876 -860  4 -858 3 4 3 -857 -856 3 3 2 2 -853 3 -852 -851  -850  -849 -848 -846 2 -841 -839 -835 -834   -831   2 2  -829  -823  2 -822 2  -821 4 -819 4  2 2 -815 2 -811 -808  5  3  -807 2 -805 -802 -796 2 2 -794   2 2 -792 2   -790  -787 -784    -781 -779  -778 -777 -776 -775 3 2   -770  2 5  -768 -766   -765  -763  -762 -759 -756 5   3 -751 -748  6 3 5 -738 -737 3 2 2  -724 3 -722 5 -721  -720 4 2  -719  2 -715 -713 -704  -701  2 5 2 -697 2  4 -693  -691 -689 -687 3  -684 3  2    -683   -682 2 3 -681 2  -680 2  -675   2 -669  -665 -664 -661  4 -658 -656 4 -655  -647 3   -644  4 2  2 2   2   -642  -639 -638 2  4 5 -630 -628  2 2 -626 5 -624    -622 -618  -612  -609  2   -607 3 4 -606 8 -596 4  3  -594 2 2  2 2  -593  -590 -588 -587  -585 -583 3 -581   -580 -578 3 -577 -575 2 4  2 -574  -566 4  3 -565 -563 -558 6 -556 3 -553 -552   2 -551  -548 -545 -542 3 -541  -538 3 2  3 -537  -534    3 -525 -524 -522  2    -520 2  -518    -517   3 6   -516   3 -515 2 -511 4  -510  4  -502 -501 -500  -499  2 -498 3 3 -497 2 3  -494 -493 -487 -485 -484 -483   -480 -478 -477 -476 2 -475 -474 2 -473 2 -471  -469 -458   3 -456 -455 4 2  -451 -450 -448 3 -447 2  4 9 2   2 2 -443 5  6  -439 -438  -434 -429 2  3 3 -426  2 -425 -423 2 -419  3 -416  -402   2  3  -401  -389 -388    2 2 -387 -384 -381   -379 17 -374 -371   -365 -363  -362 2  2    -360  -358  -357     2  5 7  -351 -350 -349 -347 -340 -338  -336  -334  2 2   -332    4  -330 -328   3      4 10  3 -326  -324 2 -323 -321 5  -315  -314 -305 11 -303   -301 18 -292 2 -291  -288 5 6   -283  -281 -280 -278 -277   -275 12   3 -274 -273 6 5 -269  2 7 2 9 -261  -257 -256  -252 -248 4   -243 -240 -239 -238  -236 -232  5 -230 -228   -223 -222   -221 -219 5  2  6     -218 6  -217 -216 -206 8  2    2  -203  -201 18 -196  -195    7  -194  -192 6 4 8  -191 -189 3 -186 -185    7    2   -183  -180 2 -179  10 -176 3 -174 4 3  -172 -171  -170 8  2   7 -164   -158 -157  -155 -152 -146 5 10  5 -144  -141  9  -139 -134 5  -132  2 -130  9    -128 -127 3 -126  -125   4  3   -120 -116 -112 -105 6  10 4 2 -104   -103  7 4  -101 -100  8 8    -96    -95 -93  -92  28     -91  5  11 -90 2 -82   13   3 -76  7   6  -75 -72 -68  -67   -62 3 3 2 -61   -60 -59 -56  10  -55   -53 2   8  8       -51  -46   2  -45 6 -44 2 4   -43 -42 2  -40 9  -37 -36   10 2 4 6   -35 3 2  -31 5 14  11     -29 -24  3   -22 -19 -17 -10 -8       -6 -1".split(' ')]
V="748500 fdff52 3b638c 0b5509 71aa34 eecffe c8aca9 75bbfd b1916e fa4224 cd5909 b7e1a1 ba6873 922b05 32bf84 31668a 6b7c85 fdff38 b04e0f 875f42 699d4c 03012d 647d8e cb416b c9ae74 0bf9ea 63b365 4b006e 02590f 885f01 1fa774 a6fbb2 ff5b00 b790d4 8cff9e 6b4247 ff6f52 fce166 90fda9 c9d179 d6b4fc c94cbe 419c03 017374 ffff84 41fdfe d0fefe 889717 cb0162 a24857 0a437a a552e6 d3b683 53fca1 464196 0cb577 6832e3 ff000d 598556 6258c4 c0fb2d 1ef876 c9643b 35ad6b 1d5dec 947e94 015482 65ab7c b2713d 920a4e 59656d ffffc2 fcfc81 cba560 03719c 8b2e16 cc7a8b c5c9c7 bf9b0c 08787f 25ff29 7a6a4f 3c4142 653700 005f6a 7a5901 a90308 afa88b 06470c d1b26f 343837 c0fa8b ffffcb 9dc100 7a9703 0c1793 befdb7 4da409 f075e6 152eff c4fff7 9ffeb0 658d6d 978a84 fa2a55 070d0d b59410 8a6e45 a4be5c 4984b8 8f99fb 25a36f 3d0734 ff9a8a c6fcff ff6cb5 ae8b0c 01ff07 7e4071 fef69e 8e82fe 8d8468 fd411e c85a53 ffe36e 5539cc 76fda8 acfffc d5ffff ad0afd f9bc08 ffb19a bf9005 3d7afd ff073a fff9d0 526525 1e488f b9a281 c071fe c88d94 5729ce 5f9e8f b2996e a2bffe d0fe1d faee66 c875c4 4f9153 fddc5c d99b82 b79400 a55af4 e4cbff ec2d01 b36ff6 280137 7f5e00 8f7303 1805db a9561e f0833a 95a3a6 030764 50a747 fe7b7c fea993 d7fffe c6f808 efb435 9be5aa c1fd95 9e0168 276ab3 9900fa 0d75f8 4b5d16 fffd01 aeff6e 7bb274 c4a661 5a86ad b9cc81 0b8b87 20c073 3f012c f10c45 3c9992 ac9362 047495 042e60 a5a391 380282 0e87cc 3b5b92 94b21c c04e01 001146 638b27 7d7103 fcb001 4c9085 fc2647 667e2c fffe40 fe4b03 033500 ff474c caa0ff ff9408 ff964f 8cfd7e af884a 7f5112 4efd54 b8ffeb f6cefc 749551 23c48b 0652ff b6ffbb fed0fc b75203 96f97b 990147 5edc1f beae8a fffe7a 017a79 436bad bc13fe 985e2b 214761 004577 0ffef9 770001 475f94 b5c306 20f986 75fd63 48c072 1bfc06 bcf5a6 fb7d07 6c7a0e da467d 2a0134 8b88f8 2baf6a 516572 fe420f b1ff65 430541 26f7fd fdee73 d5174e 06b1c4 a484ac a0febf c0022f fe2c54 886806 ac1db8 ff63e9 983fb2 ff796c 90b134 10a674 26538d 856798 874c62 76cd26 ba9e88 fdff63 c8ffb0 1d0200 661aee fe019a 029386 fdb915 ef1de7 04d9ff 7ea07a fafe4b 411900 efc0fe ff028d f7879a 13eac9 a2653e bcecac 53fe5c a8415b fbdd7e 98568d 94a617 fbeeac ccad60 4e0550 0b4008 f43605 0cff0c c45508 c1f80a 9b8f55 33b864 bd6c48 ff69af b25f03 fb2943 acbb0d 85a3b2 734a65 99cc04 020035 c95efb 9f2305 21fc0d b0dd16 b0054b cbf85f 1fb57a 8fb67b 7b5804 bf77f6 0343df 044a05 bffe28 706c11 966ebd 6fc276 d0e429 2242c7 b7c9e2 ae7181 6488ea 341c02 2cfa1f 6d5acf 056eee 758da3 e50000 825f87 a6c875 a442a0 f0944d 876e4b f5054f c77986 9cbb04 6140ef 89fe05 4e7496 ccfd7f d9544d e78ea5 6e1005 40fd14 544e03 3778bf 12e193 acc2d9 be03fd 82cbb2 db5856 c7c10c 6ba353 f1da7a 4f738e fa5ff7 c7ac7d 607c8e 76ff7b 6a6e09 155084 137e6d ddd618 ffffd4 751973 789b73 db4bda fd8d49 658b38 cffdbc f97306 08ff08 bccb7a fffcc4 ef4026 703be7 01a049 8f1402 632de9 016795 6f7c00 cfaf7b 5a7d9a bff128 80013f a8ff04 c0737a ceaefa 9aae07 05696b ffc5cb 0cdc73 d767ad 3f829d acbf69 cf0234 9e003a cea2fd 34013f fffd37 a4bf20 9a6200 840000 ad8150 ff0490 b9ff66 fe02a2 ffe5ad 8ee53f bdf8a3 c1c6fc 089404 107ab0 696006 742802 c87606 e03fd8 c2b709 6a79f7 014d4e c14a09 9d5783 fb5ffc 750851 929591 42b395 7f4e1e 9dff00 21c36f 96b403 154406 ac7e04 580f41 29465b 78d1b6 735c12 d4ffff 698339 6c3461 952e8f 01889f 610023 010fcc f504c9 05472a 8f8ce7 feff7f aaa662 5ca904 c48efd 9d7651 b66325 6b8ba4 dfc5fe 11875d a66fb5 2fef10 054907 c9b003 000435 cf524e c8fd3d 02ab2e 3a18b1 fec615 ca0147 15b01a 35530a 021bf9 ff7fa7 b17261 448ee4 2000b1 719f91 cb9d06 2ee8bb ffd1df 887191 3eaf76 1b2431 002d04 86a17d aa2704 014182 c83cb9 7b002c fac205 5c8b15 d5ab09 fdde6c 5f34e7 017371 89a203 019529 7f5f00 3d1c02 fdb0c0 b26400 005249 5e9b8a ffffe4 a7ffb5 f1f33f a8b504 4b6113 ca6b02 ffff14 aaff32 1e9167 ed0dd9 b16002 040273 048243 ffa62b fc824a 363737 fb5581 2b5d34 2dfe54 fe828c 536267 916e99 ab7e4c c20078 aefd6c d46a7e 7f7053 7f2b0a bb3f3f f7022a fdaa48 cb7723 805b87 5b7c99 c2ff89 c69c04 9db92c 9a0200 0804f9 0add08 9d0759 0165fc a50055 a87900 758000 0203e2 8d5eb7 287c37 7efbb3 fdfdfe de9dac d6fffa 9c6d57 51b73b d1ffbd b66a50 8af1fe e17701 fff39a 54ac68 2976bb ad03de 673a3f de7e5d c7fdb5 5cb200 4e518b fe0002 fff4f2 ca6641 4b0101 cafffb cfff04 645403 a0025c 490648 3c73a8 60460f ff7855 ffb07c ac86a8 030aa7 960056 720058 01386a f29e8e 3f9b0b 7d7f7c 5cac2d f6688e 01f9c6 6f7632 dbb40c 7bf2da b00149 0aff02 a2cffe 8cffdb af6f09 98f6b0 b29705 c79fef 90e4c1 04f489 fdc1c5 be6400 cd7584 fffe71 61e160 fcf679 3a2efe 388004 c292a1 980002 eedc5b 0a5f38 95d0fc 9b7a01 8fae22 fd5956 f4320c 738595 769958 a2a415 677a04 c3909b ff0789 ac4f06 fedf08 6ecb3c fc86aa 63f7b4 ac7434 2bb179 045c5a ffff7e 6f6c0a 9f8303 f36196 ab1239 63a950 7bc8f6 d648d7 b1d1fc 069af3 ca9bf7 ceb301 86775f 9a0eea 533cc6 74a662 b1d27b 70b23f a87dc2 017b92 feb308 7f684e 80f9ad 548d44 9c6da5 964e02 894585 d2bd0a c3fbf4 7b0323 00555a fffd74 601ef9 a9be70 507b9c 5170d7 373e02 728639 13bbaf c69f59 58bc08 00fbb0 d3494e befd73 5684ae c44240 a88f59 8b3103 24bca8 88b378 fdb147 fe86a4 01c08d 4a0100 06b48b b5485d 9bb53c 937c00 a83c09 f2ab15 8eab12 e6daa6 a6814c ffda03 76424e cf6275 1f0954 b0ff9d 77ab56 fefcaf de0c62 cdc50a 5fa052 a0450e 990f4b 9d0216 8e7618 d725de 8c0034 d5869d c87f89 606602 ffff81 d6fffe 028f1e e6f2a2 4e5481 fd4659 730039 ffb7ce 87fd05 05480d 0504aa b5ce08 01b44c b96902 ff6163 02066f 75b84f 2138ab 0bf77d ff724c dd85d7 77a1b5 ffd8b1 56ae57 a5a502 0a481e ffffff b6c406 ffc512 c2be0e 6dedfd be013c e2ca76 06c2ac fffa86 edc8ff 7ebd01 00035b 40a368 02c14d 87a922 00022e 997570 ffab0f 748b97 fe46a5 ca7b80 000000 c760ff ab9004 866f85 f4d054 d0c101 9e43a2 c4fe82 7a687f 6241c7 f8481c be0119 947706 a8a495 820747 850e04 3c4d03 7bfdc7 fffd78 7f8f4e 000133 fe83cc c9ff27 c27e79 d1768f fc5a50 a5fbd5 82cafc fe2f4a 2afeb7 36013f 728f02 8ab8fe ce5dae 9cef43 014600 02d8e9 062e03 61de2a 39ad48 910951 84597e 3b719f 49759c ff81c0 8fff9f ffdf22 ffa756 7af9ab 680018 a9f971 5d1451 009337 ad900d 1f6357 b27a01 5d21d0 ffbacd 82a67d 96ae8d 657432 929901 3c0008 f7d560 ffad01 a0bf16 76a973 d8863b 8f9805 df4ec8 87ae73 fff917 a13905 65fe08 feb209 3e82fc 826d8c 0a888a 8ffe09 cb00f5 f5bf03 aa23ff 8756e4 6e750e 0339f8 3d9973 ffcfdc cdfd02 9af764 fd798f 410200 7ef4cc 35063e ffb16d 2c6fbb ffffb6 bfac05 a57e52 fd3c06 dc4d01 696112 01153e 1f3b4d 0c06f7 510ac9 89a0b0 7e1e9c 9dbcd4 9a3001 3ae57f 828344 b9484e b1fc99 d5b60a 380835 665fd1 2a7e19 836539 05ffa6 d94ff5 d58a94 ada587 247afd ffb2d0 bbf90f 5d06e9 ff08e8 69d84f 667c3e 0f9b8e 2e5a88 c74767 a88905 94568c 77926f 6f828a c65102 94ac02 98eff9 658cbb 4b57db 5e819d bdf6fe 040348 a75e09 650021 b7fffa 9b5fc0 cb6843 04d8b2 feffca fe01b1 00ffff af2f0d 84b701 d90166 18d17b 895b7b 02ccfe adf802 d8dcd6 a00498 a03623 fffeb6 8c000f 5a06ef 56fca2 0485d1 fcc006 9e3623 b2fba5".split()
h=lambda d,s:hash(s*d)
x=raw_input()
d=G[h(1,x)%949]
print '#'+(V[-d-1]if d<0 else V[h(d,x)%949])

स्पष्टीकरण:

रंग नामों से रंग कोड के लिए एक न्यूनतम सही हैश लुकअप उत्पन्न करने के लिए http://stevehanov.ca/blog/index.php?id=119 से कोड के अनुकूलन का उपयोग करता है ।


3

पायथन 3, 4927

182 कोड + 4745 डेटा फ़ाइल

from hashlib import*
def f(s):
 k,b=md5((67*s).encode('ascii')).digest()[5:7],open('X','rb').read()
 for j in range(0,4746,5):
  if b[j:j+2]==k:print(('{:2x}'*3).format(*b[j+2:j+5]))

संचालन का सिद्धांत:

md5((67*s).encode('ascii')).digest()[5:7]रंग नामों से 2-बाइट मान के लिए एक सही हैश है। बाइनरी डेटा फ़ाइल बस 5-बाइट विखंडू की सूची है - 2 बाइट हैश और 3 बाइट रंग। कोड में इनपुट रंग का नाम है और मैच खोजने के लिए डेटा के माध्यम से खोज करता है।

बाइनरी फ़ाइल उत्पन्न करने के लिए कोड:

ba = bytearray()
with open('./rgb.txt','rt') as f:
    next(f)  # skip header line
    for name,code in (line.strip().split('\t#') for line in f):
        key = md5((67*name).encode('ascii')).digest()[5:7]
        ba.extend(key+bytes.fromhex(code))

with open('X', 'wb') as f:
    f.write(ba)

यहाँ कोड मैं एक आदर्श हैश खोजने के लिए इस्तेमाल किया है। कुछ भी नहीं फैंसी, सिर्फ तीन नेस्टेड छोरों: नाम दोहराने के लिए समय की संख्या (जैसे, 'नीला', 'ब्लूब्लू', ...); उपलब्ध हैश एल्गोरिदम; और हैश में ऑफ़सेट। यह संयोजन को प्रिंट करता है जिसके लिए कोई टक्कर नहीं है।

for i in range(1,100):
    for hashname in hashlib.algorithms_guaranteed:
        hashes = [hashlib.new(hashname,(name*i).encode('ascii')).digest() for name in names]
        for j in range(h.digest_size - 2):
            if len(set(x[j:j+2] for x in hashes)) == 949:
                print(i, hashname, j)
                break
    print(i)

3

पायथन 3, 296 + 3960 = 4256 बाइट्स

मैंने उपयोग नहीं किया gperf, क्योंकि यह केवल उस चाल को दोहराने के लिए बहुत उबाऊ होगा। इसके बजाय मैंने खरोंच से एक बल बल समाधान किया और इसलिए आकार इष्टतम नहीं है (लेकिन बहुत बुरा भी नहीं है)।

हालांकि मैंने पाया कि रंगों को अधिक कुशलता से कैसे संपीड़ित किया जाता है - उन्हें क्रमबद्ध किया जाता है और 4 बाइट्स से जोड़ा जाता है, LZMA इसका लाभ उठाने के लिए होता है। (रंग 2180 बाइट्स तक संपीड़ित होते हैं)

नाम से रंग खोजने के लिए, 15-बिट हैश फ़ंक्शन का उपयोग किया जाता है। सैद्धांतिक रूप से यह कम बिट्स के साथ पाया जा सकता है (संख्या 0..949 10 बिट्स के साथ एन्कोड किया जा सकता है), लेकिन मेरा कंप्यूटर कुछ भी बेहतर नहीं पा सका, यह बहुत अधिक काम है।

कोड स्टडिन से इनपुट लेता है और उत्तर को प्रिंट करता है।

कोड:

import codecs,hashlib as L,lzma,sys
h=L.md5(b'\x05_h'+sys.stdin.read().encode()).digest();f=open('a','rb');H=int.from_bytes(f.read(1780),'big')
for o in range(0,949):
    if H>>(o*15)&32767==(h[0]<<8|h[1])&32767:c=948-o;print('#'+codecs.encode(lzma.decompress(f.read())[c*4+1:c*4+4],'hex').decode())

डेटा फ़ाइल (बाइनरी, नाम aऔर उसी फ़ोल्डर में रखा जाना चाहिए ):

0596 61b2 005c 634a f47d 2c12 d5d2 e156
435a 1931 17a2 5f7b 547c 5a5b 8c40 0acd
fe13 3da6 21b3 bafb b79b 71ea 4af2 70e2
6195 6838 516f c5b7 e08f 6087 4665 cea9
8901 f8a2 b408 d333 1d7a 17b1 b35f 0a22
2aed 9f71 1fdc ac65 8991 2c3b 3b50 2578
c194 7990 03e6 d333 a368 7445 4992 8e1d
1b0b 882c 9614 4ec1 d71f 3ba4 b483 ce06
d3e9 7c09 ed11 2205 2a58 0fd3 f5a8 a573
3c7d fc68 9025 b0da 656a c642 cd1e d964
5197 3488 6794 cc78 df40 2818 d921 267f
c056 c554 2c35 0514 e2b9 4c81 dd95 9cfa
f2d8 dd0e 840e 2731 5530 ef3e 0b89 8320
4f88 e851 e2eb 5917 cf22 ff13 432f 5fbc
7cf9 0154 b7d7 12af 7e91 d2ed 8fad 4381
21f0 2973 ca7a 60ee b6af b2a4 1817 7fe9
6f9e 1ba3 5330 15bd 858b 8491 3436 e90b
b469 b8c3 ed4c d840 1a04 73c8 3788 1ffc
4c2e 4e9f 6f53 7668 7b26 b323 80a5 0ae3
18e6 5106 bff6 6eb5 ddf7 480d 1b3e dad4
be9a e831 9507 4675 d18a 38ef b3a5 c504
fa83 53f4 0ed0 9112 4c7b 597a ac0f e174
8546 2bda 6344 e515 5aca cb14 eeba c12d
ea91 e55c b157 c60d 635c afc8 c35a 99a0
3c54 acdd 1edb 65e8 edbc 32f3 df1c 55f9
aad0 fe4b b941 1d5b 88ac 8144 a737 ad97
73c7 b5c8 02c1 3df4 6c39 e9c5 c53f c350
135c b013 18fd 51d2 9e2c bdca 19c5 a15e
bc53 c564 f4c6 c0b7 9bb3 da22 230b db66
f36d f675 9732 1b54 3905 65cf dca9 087b
4675 cfaf c0df af8a a30a f25a 336b 4c8c
1938 0f9b ad95 12a7 60fa a29a d7f9 8d4e
61fe 9193 58b7 1af1 d836 0709 ddf9 3e1d
c5e2 4f98 3c75 bdb5 fee6 0128 a2c4 8578
ff4d 50e7 b8b3 e51f 9794 5b40 5031 a73e
313d 75c2 70da a5d8 3240 e68f 1eb3 215f
2286 ba27 5bee a32a f005 441e 18b4 6258
91c8 4190 65b1 a286 a800 8607 0a94 4e37
0578 9ad4 6f86 3509 6f1a 1e10 35cc 1d41
dafa bd43 3f1e be88 246f d896 3267 28e8
4b6c 8f25 1aa8 cdbf bb34 c436 d926 6e75
54dc e196 f7f7 f169 29af 6d38 16fb 2fff
a49c fa41 26c7 8b63 1f20 ccd9 2d92 fe40
cd0e bc75 5267 1f49 9c38 54fe 628c b06b
52c4 7c6a 97fc c63e 8491 0cc2 d242 d5cf
2e65 e740 2fa1 784a 8bf8 c28e 1a4d 6b5b
002a 7307 f7af 5908 0e37 5088 6818 d09d
5547 0a9a df0e 1169 d278 25b2 dd48 55d0
3cc8 cbf5 4315 1a3f c614 dfca 1188 13a3
969f 032d 90d2 1ef1 fd6e bd66 cdbb 73f4
c29d 3ab8 a3b4 462d 137c 1911 d5ef 9a43
2324 381b 612f 9611 35fc 7b6b 7e54 d906
f6ce 24bf dcc4 5c5b 0ebe a8ac 29d4 7378
3bc3 15f5 0c9d 77ce 9678 2985 69d7 dfee
4029 71af 427f 0c83 a3c1 d7aa 4387 bba1
eb0c a267 6755 ae83 2441 01af 8925 ec00
dc5f f711 3188 c89c 7964 e8b0 f58b 2cd3
da35 880e ac12 1554 8470 b476 27e1 a24d
ddd8 778e ff7f cf57 f374 7206 01dd 9b42
85b3 5ab8 ad09 8683 d6c3 6be6 a686 80c8
cf6e 35a8 6d15 ab85 93c3 fdd4 d0c1 654c
18f8 55e1 0962 0e23 3fe6 8c92 a4a9 e5f4
4151 3ad6 2efc 580b 6e39 6126 6b5e 4866
a2dd 58b3 fd7a af63 f876 9c12 cb3b 1bfe
3820 21a5 e2f9 e030 1848 b562 9898 cc3a
c9d1 7e93 6609 f15d 9fb1 cd79 c860 e903
7f72 b050 8e75 e997 9ebb 6b8a b81e 6b97
4cdf ac10 abdf 409b 60d7 9056 475c c4ab
1046 eb22 2529 aa8b e6e1 7e47 4bc2 3477
05ae e5ea 8dc4 ee2e 2eb1 396e face 9d8d
7430 9901 3564 0725 81f4 7175 40e5 e342
50f1 2bd2 ec8e 02bf 3609 5444 4896 b0f8
1c60 d02d e271 13ce 6420 dfbe 616c 5483
ca6d 7194 4665 9e38 7bce 0a73 5bc8 78a5
e95d fb2e eb75 80ed a5d5 9c1b 46ec f863
d042 f98d 4fac 54a2 6e60 bdf3 6b25 5abb
e8c8 1ecf 09a4 4f8e b9ea 1377 c406 8376
a7c0 1c10 e1de 8a4b 3af2 74d7 00e2 dcc6
83c0 c09f 96a2 bb70 4ba6 8d2d 1a64 d860
c021 1d19 c8c5 6148 7968 59cb 45f3 42e7
2527 1b2d 702c 77da 7dda 11f0 1c3d 8cac
9894 d615 4907 682c cbbe 55ae d68e 1719
a6ab e257 d6f9 59d9 52b9 e174 38a4 1683
1de2 989e c7fd d39e 8e65 61c9 8831 1861
7acb 83bb b2e3 41f1 0ba6 ab70 dcb8 4624
a085 ac65 dd16 1e62 73e5 53f8 fc37 3a57
ead1 a4f1 0fd0 0ae7 34c6 7650 1eea ff24
f2b5 ef97 69a7 4939 b6b4 8588 2f4a ff84
1cf6 6f39 2b41 fa07 7f4b 14b0 b797 5ff0
ab83 2eae 23d7 f295 0644 951b 9b67 f55c
42bc d7f7 41ee 6b19 58d1 8028 557c 268f
ae8d bb40 4f81 e342 2e37 3dc2 7fb9 e89c
c7cd aad9 cacf 41bd 5883 8913 0e93 d4ed
ae42 51f4 b6f4 377a 8fbf 5e05 456a c102
e454 2a81 8c05 2595 6531 0b9b 7f3f 6b79
c341 789c 1021 0c14 1189 f5e9 0c29 ef0f
73e1 5573 ddb8 371e 1be4 e4c1 979c 7486
e7b7 e736 c175 dd5c e2d5 181a ac40 3ed6
03cb c6db fb02 34b3 b4cc 3df8 797a 9ac5
f686 b1ed 7820 6a2f 34cf cc00 704f 28b0
2f81 bb66 5838 b4b0 c9c2 f386 2176 2906
f783 1e2d 9475 f98b b038 e795 dcf0 5eaa
e9e4 fa53 f38a b4c8 556c 77e4 b3e8 690b
e9d6 a42d 9786 ca76 b721 168c 1775 172f
1d7f 007b 77ad 7ce2 92f8 ea2c 7af5 ab57
0db6 b365 d9b3 21e2 29c0 613e 60e6 7aa7
b8f3 dc7c a2de dc6d f193 d279 04b8 3c3b
11b1 df6f 14aa a2cf 9561 2c64 8941 065c
f053 f218 e8bf 37ad f147 273e 9977 d818
d2e7 d1b7 67e3 6fa2 5e44 51ec c802 2828
ecbb 9b46 bf77 9cad abe6 68de 448a 390e
6665 5aca 5d00 0000 04ff ffff ffff ffff
ff00 0069 7ea0 e4ca 10fd 878f 79c1 bd67
f49f f836 a77f 61f8 4e3a bfd0 309e 8414
c871 2596 aebc 89cc 7aca e279 1fe8 7e84
271f 29d5 01ca e2b4 70b2 af51 e7dd dab2
3b6e 4a5e b512 1e84 b958 f918 75aa 8880
50d1 37ca bcc7 7308 d9c6 87b3 8a50 4f9f
7e02 f65a 7486 85a2 d114 f736 68cc 16df
a508 2a36 9a4d c276 7836 0c0d dd95 2d5b
5728 2068 e911 1541 a2fd d39b e551 d3a9
3e47 96a1 d338 e7b1 7b25 3ba8 71aa a310
d0ef 2673 5a9c c9b4 d36e bd41 9bc7 eacd
b630 2535 e65c 339c d9bf afe2 8949 505e
2286 7a66 87c5 9fe7 4410 e9c2 c7fd 705a
b0e1 28e5 339e 4d92 2684 76a3 63f4 8967
ce46 014d 7c42 1c77 8ffa a36b b0a6 44f3
5962 b6fb 70e8 c7cf 53e8 a89b 7cd1 43e0
c7d2 61e3 7620 54d0 35bb eac5 160b 01fe
521a 1487 24fb b788 ba41 7e30 73b3 ac8d
a95a b9e4 bd10 bc9a b1bf aadb 5856 c729
dc16 c52a 53b1 6004 17b0 35ca 374f 8f1e
803c a176 1043 864d b329 3a4c 6e80 fd25
aad2 5ed1 76a7 2b81 e400 04a9 6a0b c55b
eb4c 6c8b c5c8 99b3 6d3c 0d92 f61b 58a4
66d8 cd73 2862 fc81 cdbe d47f 5b9e 5dee
7d93 7ec3 5245 7cb9 05f3 809e 7e41 f848
df58 d6ca 4248 0a4d c2ed 9181 d055 9732
c15c 1091 d3e1 b880 22c0 e7dd 67a3 f1e1
e469 deef 6aa6 e50a 7c89 6ee1 1eb7 c571
4c11 863d 512e 05a4 fc31 1a79 4ba6 4420
ef4a 0e77 a925 21e8 e4d5 81fe 527e ead9
da86 c76b a785 7a53 3a2d 409c 2041 236a
7fb8 3547 ccac e82e 9bc6 db79 670f 84c0
df27 d1c4 e26a 7b4a c951 d57e 4056 e0e3
1288 dc4d 63fa 6e62 489b 0eba 728d 2232
a9ca 123c 8b15 9bdc 6317 02c8 0a3f 07aa
03db 6a1b a906 d99d c007 bbf7 872a fc1f
4459 a7cc 29e5 3111 d4e4 c834 f9de 575a
9755 bd21 bd5f 7284 df3d a131 fd32 b8fa
6b64 3ac9 9a22 2459 8740 c50b 8634 627b
80d8 35e6 535e 4ee1 4641 1d18 55fa 8b51
a8d5 9a4f fd4e 856d d325 8bcd e336 f221
a987 48e1 0c7c 53e9 b022 6b28 6556 c4bc
7df7 2ac5 1f5f bb93 ef09 8a45 2439 dd91
fc30 d602 4648 e78e 24c4 abc3 a37f 5046
d3b7 7c1d 605f ca0c 27cb 7941 1256 d147
50b4 fe76 03e1 8617 c815 d9e8 a0b8 d05d
1b05 fcba 9902 4df1 8fb1 db82 eec0 9624
795b ab0d 8c01 7911 71a6 7484 cc1d 91d2
c56b 8ed2 9ca8 1cd3 24ff d705 d62d d826
44ef f7ab 4fb9 db61 7fb5 23c3 0b92 4737
03ba 01c7 5395 160d ed29 bef7 e5d6 19d7
a6af 4131 8f12 2bf0 46c3 d986 ccb5 a055
bc3b defc 545c 6632 c2a8 52c5 8a6a 9a9a
6ef4 dbdb d6f8 0d73 0c37 7128 7926 f11f
1d15 1edf d236 d74a 74e7 1692 d81d b000
1af1 cf7a 9fc2 be3a c831 34d8 edc8 a014
56cb ee36 3bdc 4e6d 529a 7b70 ecd9 0607
bbad 1f97 f0ff 0412 6c99 f7de e720 ecac
bf33 06f4 b3b4 d2c4 ad05 4be3 c378 dd1c
1cb9 71de df25 c3c6 6540 3beb e667 e274
75b0 fe5f f1ad 5793 97ae 939d 3a7f 0c1d
3d25 ed5c 46d6 eda2 983d ba0c 852b 6075
4530 cdee 10fa 60af c929 8f24 2aab 8920
940a f61f 982e 469b a31e d7ab 9d5d d9d8
85f5 772f 84c4 c1d9 ccd7 101a f4e7 8357
2e27 2c63 0f42 c782 4bca f10b 7b79 feae
3f42 f04f ea3e a681 5e66 25cd aa6a 63fc
5ec7 65ce 639c 861a 5541 b9a1 61e5 3d8d
70de 336c 7d44 4342 cd24 6496 099f 90f1
8b1c bdfc 24d9 0664 cdf5 157d 617f 92c3
53d6 a0f7 b9ae 6e4c 3055 86bc 7625 8652
f9bd 5669 7758 f9c8 90c6 18ad 49a5 1471
06c6 fcdf 76ba 6153 bb95 d896 0d81 f084
51ec f334 179e 345e 5442 23db ee18 dd21
dc8f 4851 b71d 850b b60e e7cb 759c 317d
ce3e 6516 0e99 50de cea2 71ce ce32 1a25
7ca8 0221 20f3 858d 0d84 b5d1 10f4 4780
28e4 9cf0 c3cd a486 7640 59ff 55bd c094
4bd4 06c8 bb63 d795 4fb3 5638 e927 96b4
0620 6625 b0f7 b16a 73ac 0e3c 9e3d b686
ea96 f404 b622 6952 9747 0bf7 f499 f822
19a5 b61c ce80 900d c04c 873b 6542 6410
6889 533b 4554 52e1 c159 a410 3ddb 3ed8
7435 b330 e9dc 449e 43d8 8c55 6f67 2fb7
539f 5072 d4e5 318b 0b8b 7738 00e4 be0b
7493 bf0d f104 046a 2191 9d01 ca30 df4b
20fa 0896 aa97 ce48 9679 9566 9e2b f3cb
da81 3d90 fe67 30db a340 a6a6 9080 5fa1
f35b 8d9a a754 2f49 2d0d 58e3 e4ea 2759
e7d9 d9d8 cede 1366 31ce 19a0 8363 0fb8
b85c 66d0 281b 8528 d745 e454 a1a7 6935
bfc3 1c7c cbca 66d9 69ae b06a b6be fd51
61fa 02cc e09d 7a20 2c3e f0f9 6237 5791
6217 6b0e 6a21 fb74 f59e 66ff a666 a373
1ad3 8b19 7c88 8b38 f2b9 db02 5b6c 33d4
4cfe 22da 6562 9017 44c4 35c8 658a f47e
bdfe a4d7 ddbf 430e a633 d5d6 a473 89af
411e 9448 5a54 c0b1 0256 666c 119c c662
aa1e a953 076b a9d3 a2f5 591d 1c7c 5102
7f37 8f43 ee2a 0626 8609 2fc1 1e21 ebcd
e9e5 c6fb f19d a942 ddf2 0c84 9fa6 77fe
00bb c088 4731 6640 cc51 0a4d 62bf fb67
2856 069b 4265 c567 f20f 236d 9d11 8c70
56fd 8e56 a812 7e82 4837 0b3b d440 b0d1
73ba 65bb aa5f 0f85 5776 f621 7106 de0d
86e6 6aee 3012 b950 a545 b68e 2f20 ff6f
bd07 a4eb d352 b407 3566 a875 2e42 2bfa
bfcc 7c78 aec4 9aea 4331 4d6d 7c3a f930
78d9 9c21 59cb c996 2eaf 23a4 11ba 1de0
d647 62d5 da40 bb61 493b 6c68 b2b6 473e
35c1 fd86 8034 b515 1649 90d8 86fc 1204
63f4 83dc 72b4 9a11 5950 5f40 c70d a290
9784 3637 f826 af67 5380 0736 2888 f0a9
f99b 8012 b67e 21e6 3c0c 068e 3cb9 5266
f171 780b ca10 1546 0a16 c502 0de0 0cf8
970c fc6c ebd1 0ce5 0b8b 64e8 bedd cf24
dae9 a605 45b6 d562 ef1e ed6a 6ccd 72f8
0467 e0c7 1123 274e 5ee2 564d 5100 be4a
76ca 51d8 1e0d 65ba 4d24 4c64 8c32 0f51
7124 66f8 6daa 3b6d 90f6 46a6 16fc 7703
233f fa4b e769 a68c ec70 a4e0 0de5 ab0c
e43f 6508 936f a197 2bdb 9a69 ef2f 817c
e617 03f7 5aa8 c38e 3b9f d1d7 552d 16b0
0f96 686c 28db 2389 0146 cec1 4e65 4afa
f1ee 8dbb 9868 a356 8fc3 f8d1 17fe 3f18
f649 9070 604a 1b1c e2d0 08eb 896e 2d39
d862 084f d371 3778 a0a6 2b42 f34d ab25
9350 41d1 7432 e20b abe0 ed70 376f c13f
c4a7 da36 dd8c 5746 9409 1552 2042 f13d
9416 4075 f2d2 7e90 9366 e7bc f7e5 3d01
1947 b6a8 5ed7 040f ca1a b066 53bd b91b
8935 db90 f398 58e1 4c1f 9942 d102 a337
7bd8 d3bb 5646 082b dbac e0be 2ad2 f4ff
7952 9b56 0096 3f42 febc 8b19 2b53 4aaf
1b56 103d 6236 fa07 7ccd b51b 7a48 f24b
5830 1fff ec22 4000 

कैसे चलाएं:

$ echo -n 'very dark purple' | python3 code.py
#2a0134

2

सी, 19,566 बाइट्स

एक दयनीय 19,566 बाइट्स।

#include <stdio.h>
int main(int argc,char **argv){int m=0;char *t=argv[1];int c=0;while(c!=EOF){if(m==1){if(c==10||c==13){printf("\n");m=2;}else{if(c>32)putchar(c);}}if(m==0){if(c==*t){t++;if(*t==0){m=1;printf("%s -> ",argv[1]);}}else{t=argv[1];}}c=getchar();}}

बोग-मानक C. rgb.txt फ़ाइल को स्टड के माध्यम से पाइप किया जाता है। खोजने के लिए रंग को पहले तर्क के रूप में दिया गया है।

इसलिए:

./xkcd "bright sea green" < colors.txt

देता है:

bright sea green -> #05ffa6


3
कृपया मेरी चुनौती के चौथे पैराग्राफ को पढ़ें।
orlp

7
गोल्फ में आपका स्वागत है! दुर्भाग्य से नियम कहते हैं कि यदि आप एक फ़ाइल से पढ़ते हैं (या इस मामले में, इसे पाइप में) तो आपको फ़ाइल के बाइट की गिनती को भी शामिल करना होगा। Kolmogorov जटिलता के सवाल बड़े डेटा सिकुड़ने के बारे में हैं।
वैल्यू इंक

1
ओह, मैं geddit। हम्म ...
ncke

2

जावा, 7,978 7,435 बाइट्स

कोड 293 बाइट्स है, डेटा 7,142 बाइट्स है

golfed:

Object f(String k)throws Exception{Map c=new HashMap();ObjectInputStream i=new ObjectInputStream(new GZIPInputStream(new FileInputStream("c")));for(int j=0;++j<950;){c.put(i.readInt(),i.readInt());}String s=Integer.toHexString((int)c.get(k.hashCode()));while(s.length()<6)s="0"+s;return"#"+s;}

Ungolfed:

public class DecipheringXkcdColors {

  public static void main(String[] args) {
    Map<String, String> testData = new HashMap<>();
    testData.put("light moss green", "#a6c875");
    testData.put("straw", "#fcf679");
    testData.put("dark fuchsia", "#9d0759");
    testData.put("custard", "#fffd78");
    testData.put("purple", "#7e1e9c");
    try {
      for (Map.Entry<String, String> data : testData.entrySet()) {
        System.out.println("Key -> " + data.getKey());
        System.out.println("Expected -> " + data.getValue());
        System.out.print("Actual   -> ");
        System.out.println(new DecipheringXkcdColors().f(data.getKey()));
        System.out.println();
      }
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  // Begin golf
  Object f(String k) throws Exception {
    Map c = new HashMap();
    ObjectInputStream i = new ObjectInputStream(new GZIPInputStream(new FileInputStream("c")));
    for (int j = 0; ++j < 950;) {
      c.put(i.readInt(), i.readInt());
    }
    String s = Integer.toHexString((int) c.get(k.hashCode()));
    while (s.length() < 6)
      s = "0" + s;
    return "#" + s;
  }
  // End golf

}

कार्यक्रम में "सी" नाम की फ़ाइल इस कार्यक्रम के उलटा संचालन का परिणाम है: इनपुट फ़ाइल में प्रत्येक कुंजी का हैश कोड लें और इसे रंग मान के पूर्णांक प्रतिनिधित्व के साथ संग्रहीत करें। यह एक वस्तु आउटपुट स्ट्रीम, एक GZip आउटपुट स्ट्रीम, फिर एक फ़ाइल आउटपुट स्ट्रीम में जाता है। यह प्रोग्राम उलटा इनपुट धाराओं के माध्यम से इसे पढ़ता है।

इस डेटा सेट में सभी रंगों के डिफ़ॉल्ट जावा हैश कोड अद्वितीय हैं, इसलिए यह हैश मैप में एक अच्छी 32 बिट कुंजी बनाता है। मान पहले से ही एक पूर्णांक है, इसलिए जो भी करने की आवश्यकता है, उसे हेक्स स्ट्रिंग के रूप में सही ढंग से प्रारूपित करना है, यदि आवश्यक हो तो, छह अंकों के साथ गद्देदार, सामने एक हैश मार्क के साथ।


1
मैंने विभिन्न संपीड़न तकनीकों के साथ-साथ कस्टम हैश की भी कोशिश की, लेकिन मैंने जो कुछ भी करने की कोशिश की, वह जावा में अंतर्निहित कार्यक्षमता को हरा नहीं सका।

1
मैं GZIPInputStream :-) का उपयोग करने के लिए एक अच्छा सरल उदाहरण देने के लिए आपको धन्यवाद देना चाहता हूं
Tschallacka

2

जावा, 4649 बाइट्स

जावा कोड: 497 बाइट्स, डेटा फ़ाइल: 4152 बाइट्स

फाइल यहां मिल सकती है

import java.io.*;import java.util.*;public class A{static void main(String[] a) throws Exception{byte[]d=new byte[4864];new FileInputStream("d").read(d);long h=a[0].hashCode(),k,l,r=0;h=(h&1023)+(h&14336)/2+(h&491520)/4;BitSet b=BitSet.valueOf(d);for(int i=0,j;i<33216;i+=35){for(l=0,j=16;j>=0;){l<<=1;if(b.get(i+j--))l|=1;}r+=b.get(i+33)?1:0;r+=b.get(i+34)?2:0;if(l==h){for(k=0,j=15;j>=0;){k<<=1;if(b.get(i+17+j--))k|=1;}System.out.println("#"+String.format("%06X",(k<<8)+r).toLowerCase());}}}}

ungolfed:

import java.io.*;
import java.util.*;

public class A{
    public static void main(String[] a) throws Exception{
        byte[]d=new byte[4864];
        new FileInputStream("d").read(d);
        // compute word hashcode
        long h=a[0].hashCode(),k,l,r=0;
        h=(h&1023)+(h&14336)/2+(h&491520)/4;        
        BitSet b=BitSet.valueOf(d);
        // browse data file
        for(int i=0,j;i<33216;i+=35){       
            for(l=0,j=16;j>=0;){
                l<<=1;
                if(b.get(i+j--))l|=1;
            }
            // compute color blue component
            r+=b.get(i+33)?1:0;
            r+=b.get(i+34)?2:0;
            // do hashcode match ?
            if(l==h){
                // compute color value
                for(k=0,j=15;j>=0;){
                    k<<=1;
                    if(b.get(i+17+j--))k|=1;
                }
                System.out.println("#"+String.format("%06X",(k<<8)+r).toLowerCase());
            }
        }
    }
}

प्रोग्राम जावा हैशकोड के एक उन्नत संस्करण का उपयोग करता है जो केवल 17 बिट्स का उपयोग करता है:

    long hash = s.hashCode();   
    long hash2 = hash & 0b1111111111;
    hash2 += (hash & 0b11100000000000) / 2;
    hash2 += (hash & 0b1111000000000000000) / 4;

रंगों को नीले घटक के बढ़ने से हल किया जाता है। उन्हें 18 बिट्स पर संग्रहीत किया जाता है: 8 लाल रंग के लिए, 8 हरे रंग के लिए और 2 डेल्टा नीले रंग के लिए।

कुल फ़ाइल आकार: 949 रंग * (18 + 17) = 33 215 = 4152 बाइट्स


1

जावास्क्रिप्ट (Node.js), 10785 बाइट्स

q=>`${require('zlib').inflateRawSync(new Buffer('<encoded data>','base64'))}`.split(';').map(x=>x.split(':')).find(([a])=>a===q)[1]

उपयोग:

const f = q=>`${require('zlib').inflateRawSync(new Buffer('<encoded data>','base64'))}`.split(';').map(x=>x.split(':')).find(([a])=>a===q)[1]
console.log(f('baby shit brown')) // #ad900d

एन्कोडेड डेटा


1

MATLAB, 94 + 7.243 = 7.337 बाइट्स

MAT-फ़ाइल "h.mat" को चर "c" के साथ नाम के CRC32 चेकसम की क्रमित सूची (c = java.util.zip.CRC32; c.update (uint8 (x)); c.getValue; ();) और रंगों के परिवर्तित हेक्स कोड (sscanf (x (:, end), '% x')) को "e" के रूप में समान क्रमबद्ध सूची। इसमें (R2013b, v7 फ़ाइल प्रारूप, 7.243 बाइट्स का आकार होना चाहिए।

फ़ंक्शन निम्नानुसार है

function g(x);load h;c=java.util.zip.CRC32;c.update(int8(x));sprintf('#%x',e(h==c.getValue()))

यह MAT-फ़ाइलों के अंतर्निहित संपीड़न और CRC32 फ़ंक्शन के लिए जावा के समर्थन का लाभ उठाता है।


1

जाओ, 6709 बाइट्स

कोड 404 बाइट्स है, डेटा 6305 बाइट्स है

package main
import ("bytes"
"compress/flate"
"fmt"
"os")
func main(){t:=make([]byte,6643)
i:=os.Args[1]
copy(t,i)
s:=[]byte{byte(len(i))<<4|t[0]>>1&8|t[0]&7,t[1]&6<<5|t[2]&30|t[3]>>2&1,t[3]<<7|t[4]&1<<3|t[5]&20|t[6]&6<<4|t[7]&3,t[8]&3|t[9]&1<<3|t[10]&1<<4|t[11]&1<<5|t[12]&4}
f,_:=os.Open("f")
flate.NewReader(f).Read(t)
for i:=0;;i+=7{
if bytes.Equal(s,t[i:i+4]){fmt.Printf("#%X", t[i+4:i+7])
return}}}

डाटा के साथ एनकोडेड है xxd -p। बस नाम की एक फ़ाइल में निकालें fसाथ xxd -r paste f। कोड के रूप में चलाया जा सकता हैgo run file.go "tree green"


1

सी #, 6422 बाइट्स

कोड 575 बाइट्स है, डेटा 5847 बाइट्स है

डेटा आसन्न GZipped फ़ाइल में मौजूद होता है जिसमें मूल डेटा का रूपांतरित प्रतिनिधित्व होता है। रंगीन शब्द जो एक से अधिक बार दिखाई देते हैं, उन्हें निकाला जाता है और फ़ाइल के शीर्ष पर एक हेडर टेबल में रखा जाता है, जो एक-बाइट की लंबाई से पहले होता है।

डेटा प्रविष्टियाँ (हेडर के बाद) में एक सेट होता है:

  1. हेडर टेबल से एक सामान्य शब्द का प्रतिनिधित्व करने वाली एकल बाइट प्रविष्टियाँ (मान बराबर ऑफसेट + 16)
  2. इनलाइन स्ट्रिंग डेटा एक बाइट लंबाई क्षेत्र (अधिकतम लंबाई 15) द्वारा उपसर्ग

प्रत्येक प्रविष्टि को 0xFF, 0xFE, 0xFD के साथ समाप्त किया जाता है जो इंगित करता है कि अगले एक, दो या तीन बाइट्स क्रमशः रंग मूल्य ऑफसेट का प्रतिनिधित्व करते हैं।

तालिका को क्रम में पार्स किया गया है और रंग मान तब तक जमा होता है जब तक कि इनपुट से मेल नहीं खाता।

न्यूनतम अपघटन / लुकअप कोड:

using System;using System.IO;using System.IO.Compression;namespace G{partial class P{static void Main(string[]a){var f=new GZipStream(File.OpenRead("m"),CompressionMode.Decompress);var b=new BinaryReader(f,S.Encoding.GetEncoding(1252));Func<int>r=()=>f.ReadByte();var d=new string[256];int t,v=0;while(""!=(d[v++]=new string(b.ReadChars(r()))));var k="";v=0;while(0<(t=r())){if(t<0xFD)k+=(t<16?new string(b.ReadChars(t)):d[t-16])+" ";else{v+=t==0xFF?r():t==0xFE?b.ReadUInt16():(r())+(b.ReadUInt16()<<8);if(k.Trim()==a[0]){Console.WriteLine($"#{v:x6}");return;}k="";}}}}}

डेटा संपीड़न कोड

public static void Compress(string path)
{
    var lines = File.ReadAllLines(path);

    var grams = new Dictionary<string, int>();

    var data = new Dictionary<string, string>();

    foreach (var line in lines)
    {
        var tokens = line.Split('\t');

        data[tokens[0]] = tokens[1];

        foreach (var gram in tokens[0].Split(' '))
        {
            int count;

            if (grams.TryGetValue(gram, out count))
            {
                grams[gram] = count + 1;
            }
            else
            {
                grams[gram] = 1;
            }
        }
    }

    var dict = new Dictionary<string, byte>();
    byte codeValue = 0;
    foreach (var result in grams.OrderBy(kvp => -kvp.Value))
    {
        if (result.Value == 1)
            break;

        dict[result.Key] = codeValue;
        codeValue++;
    }

    using (var outputData = new BinaryWriter(File.OpenWrite("m.dat"), Encoding.GetEncoding(1252)))
    {
        foreach(var dictValue in dict.OrderBy(kvp => kvp.Value))
        {
            outputData.Write((byte)dictValue.Key.Length);
            outputData.Write(dictValue.Key.ToCharArray());
        }

        outputData.Write('\0');

        int currentColor = 0;

        foreach (var entry in data.OrderBy(kvp => kvp.Value))
        {
            foreach (var gram in entry.Key.Split(' '))
            {
                if (dict.ContainsKey(gram))
                {
                    outputData.Write((byte)(dict[gram] + 16));
                }
                else
                {
                    outputData.Write((byte)gram.Length);
                    outputData.Write(gram.ToCharArray());
                }
            }

            var colorValueString = entry.Value.TrimStart('#');
            var colorValueInt = int.Parse(colorValueString, System.Globalization.NumberStyles.AllowHexSpecifier);

            var colorValueDiff = colorValueInt - currentColor;

            if(colorValueDiff <= byte.MaxValue)
            {
                outputData.Write((byte)0xFF);
                outputData.Write((byte)colorValueDiff);
            }
            else if(colorValueDiff <= ushort.MaxValue)
            {
                outputData.Write((byte)0xFE);
                outputData.Write((ushort)colorValueDiff);
            }
            else
            {
                outputData.Write((byte)0xFD);
                outputData.Write(colorValueDiff);
                outputData.BaseStream.Seek(-1, SeekOrigin.Current);
            }

            currentColor = colorValueInt;
        }
    }

    var d = File.ReadAllBytes("m.dat");
    var g = new GZipStream(File.OpenWrite("m"), CompressionLevel.Optimal);

    g.Write(d, 0, d.Length);
    g.Dispose();
}

1

C # 7,209 बाइट्स: 6,643 बाइट्स डेटा + 566 बाइट्स कोड (878 बाइट्स अनइंस्टाल्ड)

Github repo यहाँ है: https://github.com/nbcarey/color-map

FNV-32-1a हैश का उपयोग करके डेटा फ़ाइल में रंग नाम संपीड़ित होते हैं क्योंकि यह हैश एल्गोरिथ्म रंग नामों के इस सेट के लिए संप्रेषणीय रूप से टकराव मुक्त है। इसलिए प्रत्येक रंग का नाम 4 बाइट्स के रूप में संग्रहीत किया जाता है।

प्रत्येक रंग को 3 बाइट्स (लाल, हरे और नीले रंग के लिए प्रत्येक) के रूप में संग्रहीत किया जाता है। कोई जादू नहीं।

नतीजतन, RGV मान के लिए रंग नाम की प्रत्येक मैपिंग संपीड़ित फ़ाइल में 7 बाइट्स रखती है।

यह FNV-32-1a हैश का एक-पंक्ति संस्करण है (केवल एक सरल ASCII वर्ण युक्त स्ट्रिंग मानकर:

uint hash = Encoding.ASCII.GetBytes("royal blue")
            .Aggregate(0x811c9dc5u, (h,b)=> h=(h^b)*0x01000193u )
            ;

यह संपीड़ित डेटा फ़ाइल https://github.com/nbcarey/color-map/blob/master/color-map/hashed-color-map.dat पर github repo में है

यहाँ न्यूनतम कोड है:

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;namespace A{class B{static void Main(string[]C){var D = new Dictionary<uint,uint>();var E=File.ReadAllBytes("hashed-color-map.dat");for(int i=0;i<E.Length;i+=7){uint F=BitConverter.ToUInt32(E,i);uint G =(uint)(E[i+4]<<16|E[i+5]<<8|E[i+6]);D.Add(F,G);}foreach(var H in C){uint I;var J=D.TryGetValue(Encoding.ASCII.GetBytes(H).Aggregate(0x811c9dc5u,(h,b)=>h=(h^b)*0x01000193u),out I);var c=J?String.Format("#{0:X6}",I):"NOT FOUND";Console.WriteLine("{0}: {1}",c,H);}}}}    

और यहाँ मानव-पठनीय कोड है:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace color_map
{
  class Program
  {
    static void Main( string[] args )
    {
      var map = new Dictionary<uint,uint>();

      var data = File.ReadAllBytes("hashed-color-map.dat");
      for ( int i = 0 ; i < data.Length ; i += 7 )
      {
        uint hash = BitConverter.ToUInt32(data,i);
        uint rgb   = (uint)( data[i+4] << 16 | data[i+5] << 8 | data[i+6] << 0 );
        map.Add(hash,rgb);
      }

      foreach (var cn in args )
      {
        uint rgb;
        var hit = map.TryGetValue(Encoding.ASCII.GetBytes(cn).Aggregate(0x811c9dc5u, (h,b)=> h=(h^b)*0x01000193u ), out rgb);
        var c = hit ? String.Format("#{0:X6}",rgb) : "NOT FOUND";
        Console.WriteLine("{0}: {1}", c , cn);
      }

    }
  }
}

1

PHP, 5014 बाइट्स

सबसे अच्छा नहीं है, लेकिन यह देर हो चुकी है और मुझे कुछ नींद लेने की आवश्यकता है। :-)

PHP की सुंदरता यह है कि आप अपने स्क्रिप्ट में पेलोड डेटा को इनलाइन कर सकते हैं और फ़ाइल को स्वयं पढ़ सकते हैं, इसलिए स्क्रिप्ट आत्मनिर्भर है। बस इसे डाउनलोड करें , इसे चलाएं और यह रंग के नाम के लिए संकेत देगा।

<?$f=fopen(__FILE__,r);fseek($f,269);$m=stream_get_contents($f);while($l<4745){$d.=str_pad(dechex(ord($m{$l++})),2,0);}$h=sha1(trim(fgets(STDIN)));$k=substr($h,0,3).$h{16};for($i=0;$i<9490;$i+=10){if($k==substr($d,$i,4)){echo'#'.substr($d,$i+4,6);}};__HALT_COMPILER();
$¥¬ÂÙóûV®W}a²™nÂÀ¨ÿÄ°iØOûO‰E…&@p²? xÔÿÿuAe«|Šü•.¤üüÁÿ¥£‘F²8€?šL…8^›Šlï´5m‘Ù›‚´
[...MORE BINARY DATA...]

यहाँ मूल चाल रंग नाम हैश करने के लिए और उस हैश के न्यूनतम पहचान पदार्थ उत्पन्न करना है। मैंने पाया कि एक SHA1 हैश के 4 चार्ट पर्याप्त हैं, पहले 3 और 17 वें विशिष्ट रूप से उन सभी रंगों की पहचान करने के लिए। कुंजी बाइनरी के साथ-साथ रंग कोड में है, जो कि सुविधाजनक रूप से प्रति रंग चैनल एक बाइट है। तो हर प्रविष्टि में 5 बाइट्स होते हैं, जो 5 x 949 = 4745 बाइट्स पेलोड (कोड में आपके द्वारा देखा गया जादुई नंबर) के लिए बनाता है।

संपीड़न ने बहुत मदद नहीं की, bzip2, LZMA सभी ने बड़ी फ़ाइलों को बिना किसी और चाल के बनाया, यह इस दृष्टिकोण के लिए जितना संभव हो उतना संकुचित है।


1

बैश + (कोरुटिल्स, गज़िप, xxd, ओपन्सल, सेड, ग्रीप), 4946 बाइट्स

डेटा: 4482 बाइट्स, कोड: 464 बाइट्स

s=$(echo $1|openssl dgst -md5 -binary|base64|cut -c3,10,19)
f=$(gzip -cd g)
a=''
function p {
q=$(grep -Eo "[$1]{[A-Za-z0-9/+]+}"<<<$f|sed -r "s/([$1]\{|\})//g")
for i in `seq 1 6 ${#q}`;do
n="$1$(cut -c$i-$((i+1))<<<$q)"
c="$(echo -n $(echo $q|cut -c$((i+2))-$((i+5)))|base64 -d|xxd -p)"
a="$n#$c,$a"
done
}
p $(echo $s|cut -c1)
s=$(sed -r 's~([+/])~[\1]~g'<<<$s)
r=$(echo $a|grep -Eo ",?$s#[a-z0-9]+")
if [ ${#r} -gt 0 ];then
echo -n '#'
echo $r|cut -d\# -f 2
fi

आधार में डेटा यहां पाया जा सकता है । मुझे पता है कि कोड अधिक गोल्फ हो सकता है। अब बहुत नींद आ रही है: / किसी भी सुझाव का स्वागत है :-)

व्याख्या

लाइसेंस टिप्पणी को हटाने के बाद मैं मूल फ़ाइल पर किए गए कार्य कर रहा हूं।

  1. रंग नामों के द्विआधारी md5 की गणना करें और इसे बेस 64 में बदल दिया: openssl dgst -md5 -binary|base64
  2. पाया कि सभी प्रविष्टियों का विशिष्ट रूप से प्रतिनिधित्व करने के लिए 3, 10 और 19 अक्षर का उपयोग किया जा सकता है। base64, डेटा का प्रतिनिधित्व करने के 64 अक्षर का एक सेट का उपयोग करता है A-Za-z0-9+/। इसलिए, मैं 2 बाइट्स खोजने की उम्मीद कर रहा था क्योंकि सभी प्रविष्टियां 494 और 64 * 64 = 4096 थीं, लेकिन मुझे कोई भी नहीं मिला। मैंने sha512चरण एक में उपयोग करके 2-चार अद्वितीय प्रविष्टियों को खोजने की कोशिश की, लेकिन बिना किसी भाग्य के। इसलिए, मैं रंग नामों के लिए इन 3 बाइट्स के साथ रहा।
  3. मैंने बेस 64 को हेक्स के बजाय रंग नामों में दर्शाया: (echo '0:';echo -n "$line"|cut -d '#' -f 2)|xxd -rp -l 16|base64
  4. मैंने चरण 2 से पहले बाइट द्वारा परिणामों को समूहीकृत किया।
  5. मैं zopfli -i1000फ़ाइल को संपीड़ित करता था।

इसलिए संपीड़न से पहले परिणाम फ़ाइल इस तरह दिखाई देगी:

+{wf/7FtHhPAAIgWXKwtrpFbAaS6/i9KYk7cj//bpvuy9zvOysmxxvz//6vBP+m2sZFuXG+EgcIhZY1tsTAYif5s1f//xCFS7/}/{61snE90JK69qWKBIJDy83YXXE4df1jNx+XMGQA/60B1Msf9lKaAAEzLs+1WB}0{uiBWlrhIdJVRGSMr+ERZ78D+m2Tv1USQpL5cS3wcb8Hmj/+fZMa6NTEUwrcJqRvv1z+k2VRNvy/7GavV/5qKCTlFaMk5/3lsisUWVy2lraWH3nuaKBdb/+Nu}...

मैं भी लेकिन से छोड़कर सबसे खराब परिणामों के साथ अन्य संपीड़न उपयोगिताओं की कोशिश की zopfli -i0000 --zlibके साथ 4470 बाइट्स और zopfli -i10000 --defalteसाथ 4464 लेकिन मुझे यकीन है कि कैसे वहाँ uncompress स्वरूपों के लिए नहीं था।

रंग कोड खोजने के लिए मैं रिवर्स एक्शन करता हूं। मैं दिए गए नाम से 3 वर्ण कोड बनाता हूं और मैं मूल रंग कोड को आंशिक रूप से फिर से बनाता हूं। उदाहरण के लिए, adobeमैं वह सब बनाता हूं, जो शुरू होता है X:

Xqy#bd6c48
XL7#7ea07a
XI4#3a18b1
...

फिर मैं Xqyलाइन को पकड़ता हूं और दूसरे हिस्से को वापस करता हूं जो कि रंग का हेक्स है।

मैंने वास्तव में इस पहेली का आनंद लिया और यहां कई शानदार जवाब हैं। धन्यवाद और अच्छी नौकरी सभी को!


0

बैश + कोरुटिल्स / xxd, 4064 बाइट्स

डेटा 3796 बाइट्स (डेटा फ़ाइल का हेक्स डंप)

बैश 268 बाइट्स

h=`md5sum<<<$1|xxd -r -p|xxd -b -g0 -l128 -c128|cut -c18,20,26,41,46,49,65,85,88,90,94,95,118,135`;case $1 in mud|aqua?blue)h=0${h%0};;esac;xxd -b -g4 -c4 d|while read -r x;do let b+=2#${x:23:2};case ${x:9:14} in $h)printf '#%04x%02x\n' $((2#${x:25:16})) $b;;esac;done

Ungolfed

# Set h to select 14 bits from the md5sum in base 2
h=`md5sum<<<$1 | \
   xxd -r -p|xxd -b -g0 -l128 -c128|cut -c18,20,26,41,46,49,65,85,88,90,94,95,118,135`
# Disambiguate hash collisions
case $1 in
   mud|aqua?blue)
      h=0${h%0}
      ;;
esac
# process each 32-bit record:
#   First 14 bits are hash
#   Next 2 bits are blue deltas
#   Final 16 bits rg
xxd -b -g4 -c4 d | \
   while read -r x; do
      let b+=2#${x:23:2};
      case ${x:9:14}
         in $h)
            printf '#%04x%02x\n' $((2#${x:25:16})) $b
            ;;
      esac;
   done

समग्र विचार 32-बिट फ़ील्ड के माध्यम से स्कैन करना, मिलान करने वाले अद्वितीय 14-बिट हैश का पता लगाना और उस स्थान पर रंग कोड प्रिंट करना है। 18-बिट रंग एन्कोडिंग सुपर Chafouin के दृष्टिकोण का लाभ उठाता है।

अद्वितीय 14-बिट हैश 128 बिट md5sum से बिट्स के 14 के सबसेट के साथ शुरू होता है। उन बिट्स को खोजने के लिए मैंने C ++ में एक आनुवंशिक एल्गोरिथ्म का उपयोग यहां किया । कोड "डेटा" नामक एक निश्चित फ़ाइल को प्री-लोड करता है, जो कि बाइनरी में सिर्फ md5sum है, प्रति पंक्ति एक है। यदि आपको नुस्खा के रूप में इसकी आवश्यकता है, तो इससे डेटा फ़ाइल बन जाएगी:

(cut -f1 rgb.txt|while read x; do md5sum<<<$x | xxd -r -p | xxd -b -g16 -c16| cut -d' ' -f 2;done) > data

मुझे पीढ़ी 2 में इस कोड से सबसे अच्छा उम्मीदवार 14 बिट्स (जो मैंने अब तक देखा है) मिलता है, लेकिन इस सेट में दो टक्कर हैं। विशेष रूप से: "मड" और "पेल पर्पल" मैप एक ही मूल्य पर, और "एक्वा ब्लू" और "लाइट ग्रीन" मैप एक ही मूल्य पर। चूंकि केवल दो टकराव हैं और मुझे कुछ भी बेहतर नहीं मिला है, इसलिए मैंने उन्हें मना किया है; इनमें से प्रत्येक बाल्टी मान का आधा उपयोग नहीं किया गया है।

मैंने पहले से ही घ पर संपीड़न की कोशिश की; लेकिन न तो bzip2, न ही gzip, और न ही xz d के आकार को छोटा करता प्रतीत होता है।


0

ग्रूवी, 153 + 10,697 = 10,850 253 + 9870 = 10,123 बाइट्स

मैंने तय किया कि मुझे एक समाधान चाहिए था जिसमें केवल एक फ़ाइल शामिल थी, इसलिए (अंतरिक्ष की स्पष्ट लागत पर) मैंने यूनिकोड वर्णों के लिए डेटा का एक GZIPped CSV संस्करण एन्कोड किया था 0x0020-0x007E (जो मुझे लगता है कि आधार 95 एन्कोडिंग होगा?) कोड 253 वर्ण है, स्ट्रिंग की सामग्री 10123 वर्ण है।

import java.util.zip.*
t=0
'''^/3"O:<]NULAydP{|dgMn0T4;4&Y!~0=(BsILP$#KxAoQ<C6Z-.Psh/}k3&uOEa[S}R+u4=X*K`?X&zTKSQT>xdA-_XEy2/e{N$Ue:DSF- *Df1E3x)i=cq;FFq]|p,!sbQpE5F}$qr]zu'jK&A^\\Vd9"sKPgF_^uv>q)6#/"b1#gR"yvZ#<p9{T+__!fl\\\\=7P{zO0('G R+5QKuX}( ,r$V]" ;G)\\3Yooo}<)%HrxnFWLtG1Dwe!N Nz*u;Ti`TI}ly@T.zA!Lx{w#e0[:Y@feo,=^M|D7qwZLHz2Hss&:z!%W2s|1S%TK]MaH]$KzQGR=*uue5O{d~J{%hU+[0_2z&|iiw )\\aq?(5:~l_u%6U^,&V&N$1YoYUX]E%}T`MN=/#KA?@['=]c|l?=!S9v,S|1]2do8cx>Q`WA]+ nMK_YDa~TdM+Ot4v[Ty\\){}zl0FG2cF**j'tN<g@>^ s='jDcXj|j],2P:p>3_V4$ybMXP?|7D4+W{Mmtsbs#S\\eZH!BUj.1_{@k/YPKe"D2yJ7!~T8A*o3z`1e_hvsd[,^k8>~{>/EUQo#:v>=dO$mkyyl+E[*@C1Adym8-cMYRjY IVxTzu@@Z`^ V,&9zO_?P*j~F~t&XPj*pQyH4[b0ob1JB@?X&_vGPx$Y.\\h6.!d+`CY-=w~IJ*)8&Q;HW"cv#]@tw0A\\uX@+{a"?PjvOF.{l])Z5&pV&]r*4f|Fr &fcnW)6|==t7"TqXe`EK6vfyGU)$xqP6c#snqwBYt}0|ayy~o]CUd',>fva~1OC1p5@,k0aJy,!BkF1yGe@qVF-T12bdE~6m420Zc [v|:w~l_[ZPq<*G?DA}~H<lJ 7y"c@Yq8JtFz#uur*E]dxbt:%mXdc}>%Mvg^^qL603|~@DdqWp]e6R9J?\\4Il/"v|tZXo\\8EtW^t.+~TcSK9T{ymny=KOD[,coYoh5eg~Uge(_N08w5HxP-BV\\E%Rajr\\K3RE{eP^c#QYEU6%|].W&_-nX=d| _i:S,CAlaCquAjtKfCNV~$r7sU)4BN*@'3=MoM&kxWzQvOeW$\\gM(\\&d=1y(D'cF=;O!Q.noW'k1u(Kmalk:xNFl,H)o3rlcS\\VcYMIcB.08,*3kQi~g9Y!>'<#KtJp]c5J|~U8j!\\>!0L<=0W(Xg<QF\\EA[~N-t/k 07 ]YPyYT(u|tJ3(=Wle~o3i6Z{pg)qWiMh=K1Ny]IJN^%O -.%L?>:fkbo7bLj +Xr{L|B*hq\\,$3m(nz+:U:fq5BpQz9Qznlu2h6\\9#>00Z%gb?AmJ]9$XTSM|]ZeKRXIE$Xd2MGDqzZ M9m7K8*ZlX1W"A"H+H9h3 YZscB.<l-YNe;NbuvGlq3@:xrA#:o@.6IqM+#b.eg|k/CDiW[JPU~7E$o5O1Q.7F:8sF7!~:$Mh1:sm%_#Q@>86;*-kZs1PdL`b^,>zh\\[,>n7Ve;6+#yvTcJEm,RUnZ4pP7*PED\\AMX9$m}K>-x&faPz[=ho?|%rrF@>!RYH)F(#L"v$?g:[19\\"M[O8vGOXP>4k CLt^$2,rf<gd?dw~K6w;|+u'Z6W+<qfq%ShD?.Q(ya<wXc:PdrP4c7R%=%#7#s^v"Pe^:AVTg`t\\)O^J%ZWXGZcZ(5ay@\\SXFE.7a/p/?8^6Iu]{-=kTNQ[~uTru~}[]&hka2nt)~CwaCfhG~[:=>}OZ?TA)dP*CDC7C|VVUX@b5SW#7RNy~7i63>={*U3=@qz*+=R$4?[3yTTM0;i=u%#wSOZe87w*.{5m>q1ZmV1$DuBUJD_R7B>H)``*o2b(_|%JHT.+8d1fdc yG(BaG8!]*:7_@&u#goQ^K0P%Jp!hbFk}!jaYpa(:e%k[ r&sm~Dn-S@V[ZH9U=b#,Ur04-Da;9JnUslwvf3CqmD9O5LTd5q4,K8*CjzjA/|/D9L\\|#[\\Z)gUhi`](S=VaU*FBu4m{N\\'CcUw!Qf+#Y8^0v=gf2F1\\i2kb=kv{*'7Yf%\\Pi4)+;3v'^#F}S-Dr)x9?UB<m7KOn<rjU30")%4{p_<fCb!D=0# Q-rhI\\^~Rx+2`CUXB/:CpYWwwk}*u<J/h-\\V^!EgfjKt<z8Ra*3{Oe0;:-+'$Z0(_nP|8Z]Gm4zJO!bu9[znH_05V1*1\\7"Q#S.ZtV\\FCS|'OJ#qHRQP>P4$<(E6W%zE&+LCqFe8%p`By6+jrk<VfFVu5WZA}vK_{n>:f]Rg}@}yT89CS1J\\xgvl:+>mCac+V@fnTXY,6pg/Vk$N WXsq]U{Y:A01pTx6`$W8+fqn,XAS[i{F:7~uX5Z-\\C-u/zDa1,A-\\?#SQ@(I{po`NrX~/7Dm+Fp0A4uPS\\#+!ex+\\K0A/N*jAJJP~C_B(.+CIx=!'@'|n.w5T3KcD;(*O)#@YJA$<;K*G-k?PW?{tIF8GUJjWtF|GVAp/3V'k&ehk~ibSVg'SSB}eVxRbSS=3;'o/=1@OY<s"6Y;'&`6"J]`Dtq}UM_<xN1dD$k~),^~Wb003~QFep1L @_pL<vp6_pNIaHQ*PO&5!-E`EkFyt&;Hd"uBULxUY+xY:F}>zTH( YYzQh+Qi0x9~'.i,47@2Ar kVL{$[);#2+_9L[ooa=.QtBPO-T3H@M[\\k^E"qS0/~f2@q}B>.r|B{DnXkcj5Bl}'q4%w<J)q=-?g5N0 r(z8CWe:ssf}PO&gd4F$~w5'LbIiXH:f4}0/0+#n@js#0+qhApQ\\&{rK@F8=K6xqgETEL(G{Iu+?)`kWMWjSZp}pP6TnF$[&~0caL.HM5cm+mJ;"<ld<'m2@.~j_[pQ6PaVK^XZ/,|.z,XXBwt;\\Ug%bHv8K-5#)#?"4-u]58SBXM@j^wv- EH!bz8Xnq@3309@:5|jd6{jff$e$nM0JW%A~a+?`tMb~'a`\\5<V=f$l-6Rqa4.4LnK;sjQ"^w?}gWl%G$nir3S7YO ysDwTfOHOF`:_*A-gF4{)qL:hNUXW6Z<Ohxqf<)rJ|8X{#rCn:r8yN+xv5}<<[mM<<,N2+4~r,Y #s&o>`-*03z'`\\+:CA4%/HQVTH-!;e{UUMg`tm!)"si-)W2$~~S+*W0ws QP_5U<W{"IceL?FQn[b(FjkRD0EBc,y>$5(C.C`?xKX5Qdr"mwoH\\gTX[yuOk"M.b6<O|HO`ClKKOS *5jkJH&riC`IGRc=$NP}#4kUUs3<'x)D[.u-%{) Hx7Oj(c;qzosHGk,$n[pRw[<b8D>|50XT@}h^Bn 9SRR}GsL1@K=F!%H&f!ENNQ1)U;0j9iJoJ%n&Sb5w3@ehvdCpk([ yM(t34_a9Z}{WU`oRTEfE!bG!"QTURfSZHh~l<k*1cX\\,\\_ {dA.VdD{sMj,M18-{Jswd"jr4/721>g8J,q!883SQ6p3]LYDrJoF'{:g1TS4m%b5!b6i[fbAQQbbu3{J's&rt)N>.WkpH3I}UFwd~~[}Xi;-hl))`0rRw~|:Gcc#+HXdA}o[="E$CKEF'/VD_L4ipRF'@S@3vS&Zk6[v~s/-=Qsli-2C8`93?>?]p)=:&-EAbrhLx~x<T&y5BwSu(_p@!\\NSKdX70U<-t*}K-<)g>)A s?x9}t<:RWHQT2aU[(M}pWY\\:<s>*+9L_2XR~9-$Py)>}&qbQ5ZV%!5[QQpLNiV^}F]J3<BAIJ6E+/Of$_B)q7X)>u}W^:b(>?_|iG ZnBNVe[e`Gapt t!qROz'M6Os(.led}wtz1wDi}^TM6yC+y~Se8^#@, @ZNB^jEY<dI;".UhkVZfeVJB4J+Fg1t6Qgcio7@fvng:s_W&*D/rP SsYErf6;xlF&}&:5[RMv7=+;|!n>gsLq,A<LkK/R7*#cnpRb:Oq(iM7Z}:#|TzD{6:Q\\[y;zA.tO=NX9X=veF"Hvg["oAItX7exbJ_`D@5@QY4)s9*TK!3Umkk>T)Wuu~p[!j1j"'"gN.6_Uslo(Z>#m<Wr%Gg>>/+xA- 8NQBeYLd{#}pk"+Ll`[=W":)c^3:WV)>3mS1!v]/XytHGG:v<V0rIm7]Gb>H,m'D3A<xV+8YB?4k@L(n$WV\\>P5%Ur!|CcYJ3O^x!*)btz-T+oLO{e{tjKD==rG"6fI_nF1n~a>nqqf1WQRvR+8]QIOIMjY=TJ9dK:7[bf:E%h1d}h<Nj[(;olGs)Z>'nJ`EqNh4p|<yXlYr%'CrF8JWTo)d2HklsDkOv/($ y~UOTta?4k2U^]a\\6IK'dm'#3XHY ]V0)iJ`NV^3<]*4)p`w/Mns_/WuGnRsKSvZjgZDX<lg/u:fli{2k$%qt*nP6v? I~tdyN>@7,D@m$vIH2dr-pLp[}]<nmS(//Y0IMi>{"3F-XmnN92L \\ZY}1;y% ac^(Kz$PVK+#-@1*;]~;l)VvHGC?1IbvqXe4K7(ZY;^)~S&5{L\\bQRs}Fmi6h@s0^b7"zo`f?IA`i.iXOud9IxsCb}zGX/s3HUg?;1e.a\\/jCqP~K8Y#7v6+"6S ?e.pF<B,LO,~"]Y;(LL G}Y@H/k4F6hcuk8LjOOh6kJZ[Sd uo#U>j[i<\\;uR3B1*"JJ"kD(8a9l!}CQ|L'8oVP>{<jfw+'[m'pR.6%aF!>LcqMC$I,l7w~y,8BM<e=iB|(pDDJVei'zOPrSTI]`ditp}Zl<\\Nn\\y9r$jA;I?l[/"u\\2\\v]"0rU7wwQ!62}f}? MWt|#HNP1((]]Lz!pBY[MG{0lN H5[v3T)RT6eGfRL`_auwOWhgW2[Fca_K/ qz0Xryc=!, bGLI9:t#-] -nEDf0#MULimVVwKVn~{RH6f$97E3*L?0n^tQnt.uKOVO9/iQ#oN3%"HNIT/QN~jtt7HH-!f2<|3O4[|f8Pj_/,V7':O5i0>f%!X[nR*+^6GO=6.y@`x'MllbrmIiQlKBIErOv4Mp!<;Bxv,l:`DslO>IbZNfB<*/[R9F\\A@u1 _"e8%54cM,dejpP%Q<Kf#;<hfrD;*&wl)KNbt0z5h~6*dwl-eo.x/"gn3zwE<peP1iL77U+FSD!P~D3$ElPS%x,Rfnh&=&n5a27ok@8&I29#(M drb\\d"EiFyNw*ZQ9M@w96iq7Zu*JClp=S$Br5Rr+%n_`J/(\\8"87Sa}JTFN&<d=(:KIN\\hW<t]UD>m1 mA3eW&iH<8GL]pN3av|.Z5@@IQdsklji%gLSqzcm5FFM$Lg:\\ib#I&b2:ZJj3w1#B3Ovjtqj<S*R5duR]z@TTGYUKnP)/N<P;Z.R_s,.X,.n~PIV7([sirqhg7B5Vuw8}G3tMq\\gAsvh5R:gybQba'bLW^sbxN/M,BAA,)if/BvPyU_MGNvS^(]k3KQbJk|%H7=B".MlQIP4'2K"^v _'|V!+RWtX+<(sRr~p}/J~Zyxf+kBieZB~(B!/Epp@h6!:|U9Ak}LG6=9xoD'TuiP *M$Mr6w}Q;q~ >MZ(N^YqllEQM$Q,: dc==/YKJ#qDdHNO^zu%?'7BEo*xa%S*X!vcLKc$/W KZ@2C?~Dblf\\?C?t@"S5LAQ[5)b3>q{T}'_OOhb+iH$!>HhFgtYJijK@C'Z&g4QVx2\\O>X@,=J#P~2])&|-[M|.qZ5%ya3{,rx%K,Ipvs"jv}0? e_H*CpZwm7}CpcR4/xVz}3/1>5\\p+_>-|aH=Y<k#0+8eMa,JziJ>r qDLJie1nC&}g84{(wH^TL:`'\\ + Z<gt1s ^}WxMTRe2.*djV{B}5npS{F'B:k181bV?!]&XkTi%lvZB`<S- ?C<EEHO|2Ri,BP(cC[F:x#e,$*D*ZPmuhTk\\G+aFfMV~pT-FKz=fj\\o>-9UY%"|wi4,1DN:Yo80T*D6QL/q(Wu$U,1IfqtGY&iMP)=P,$xaT*2+@V4"PnU$L^t]?,@<}:Jfh?hL}MUa9U1]vVuIUl2'z%l|?Y@u>84e39Z:oH)OxNhn`LK`&9+"/Q7&$>TR%I';gZ9G-'&`F?M}*fy8tiU*ZU=[>K#)Re$GQXju2s1q}l00&U=DvT-s"a+n*TPrx)Bz5})r"Il4^.2U:g|g}&>q4u$WS:]yhEZzt.M%~WYI_,0Sa(Rwe''Mh1ut06[^q,L`<\\x[!IS&(~j!xvTAW{DwK`hPlUy!$ki]W'tYbO;a\\o>X9%L|gQjX[z0`VJz['-GSybY+}3Xt`xF_%\\q:ufFfQ,SK8FabUCR63}at@.8{G3RAO-%A.?zjxaDnXs!w]--?{Cwi4NX"=,dyLwRf-lO[e8<Uov`bd@t$DI*WKO$?c]gDdmB,`D`6kC@9]I6l fTpk0{=x[6'riqTXL:2~\\iG*]C)%Jx9.vJ{aQ_7>:>)akb),L[-~}!1bcBsh)kz>j"hIM~"(A.S\\/K'uDTMPgX5p wqk<?r;[)2[.vCAV~H$lUS`6Gs{KOE.SD<OSD;j^S%yNw4Sku.iKBz``IR*c0X|oI3\\)6Xe%&N6?Ex6Y*TW;WSwi DhhqA}:,}kX}~kY}qz}t&,(Lb1[<=4Ha-,91J1+l{"^WQL'0qvY]TdM/h^A"|27N;>5i#Ka"aYpwk|,kV2XS*JP[}zB.iRD_O'>"-DKx6h0 %`}qWN)vc#K%WUQ5vTzX7Hq1sE7hg%kAYod~RVM<}&.Ub@ebo6jo>{(y'^R!|^;n!*>h8<P.Q6Zu9?%:Yz&1C>C2mT<U_BN=8=#ds><G>V'W1]C*#zkrp=c/6Z=rMU{dRtU$8]P(2brytf!I Y=c_jh@c8jj>p<lF/Xvh(mKeW P>-qO4KWZbR1o;2M qz`PrvAF(Av,dMRpcno#%C_]W9rMrjBCu',glHbB"X.jRbTeu+,Bu/+ R=3e)SYv+bS"3vD2!5;&lgC.3w Q4:IDmY*cyqc$SYee&zl44b<"Uxloy,*XGuZ;]#yMLp;Rp/>2}n||c+Xt,r<T'Nn[Obqjf5B[5Vm()$$qW)ZQzeXa6,N}/=!6klFhRG%>BvhGFcS2]GO8+>k/xp+MHwO!#rDg!KvVWC.!Q:FjC3UTt`Ut+>yWd$#HIEDR>?Qr@V5,_Ts-m;&<cn+q<g^LU'v7?a.c*EM{,9*#re#}9NWqw]|:0ZAjt+^vE50H^Jzi_2"D5Ab\\=gG&f.iuo_`RCxcYn%Vs>=pdRp-88D^j}yC^[kT|7v_CrbW&pa_wEWM9de!y(MfL9E1!CNGcXpJqJBXR]OZm6e^XS[cBeK3wvXfAa6eT{+TGq8#Wqp}"L[LHNc`>0V0.,rR:2ij{P'/K*Mn^nab%1qXopwh$^Nq2LL8}Wx]QV|3'r'M:c/r@aG7_/t/yB=o,++YjUYO+`r6Ot~51]+*D"{B9atCfTX'gwT/Men\\.VE}]DtnWFc)P `^2|2l[/leo.{wbme+p7[VK.b'p1A$3hkZ@_G^,G*vMAJJ5tKZT nOm(yy&Xoduos0<?^Q8ht&/sXE>{EXcTr.sxH4yrc%553u1/rcm:W^:v;8+g&o1%&c2BVG>X'vdY6lnS;o_T& DIHt]z^vrH>"#).nK/'6n(9TOue~tXcXt)sW57?6>h@$jX!VFt16CP3)Sf4~@/k$Wn>R^-@]8;eW0!3/*bw\\Ao]jsU&2^%ylL@8s+;"+&p`rh_')Y+{XrgslTC=|mb%|Sk{Lb.uCxW+e8%~=*`0KnVyAj;kf)<QSvwoD^"4~ql.7e\\j0k>"\\Zgv%>T3ie{cdd*70 @_~^D].q%=but)A[Q!o1pX&nO+/`F{Ks)5[zU8`_%iY>r+t@BMy`04qwZ8r@j f:j,WIWlx:l*SRbuWBRD_$Ep?h*i/Td*>u+XZ~2]!=[}^J)T8F(`+%{%#K\\ue|+DNHg!PNZ/8C0V@QH2KF^.nFW26;\\H5-Hg|t-i:z9F@8@{EJ%^og%19;?#~Q_7ZVpQ|]1$?,wg?HM)DNr4H]h3`qmjZ3(06r+<}0%,B[(3siMPakb90q2(c$wqeye9NDf$XXFrd#_dh=I]:TaUEo(ItV\\t+NUpygO#|/7l0kx)vND:dhkH)gu;lbn4n(:8'FxY,(CCheT)sm!3k]F4_j1"zXMHd0/0Efuo#yF:i.LjvW^EWU-).]ns"j^u_jB}LF9y9c%MF.:Oai]>_s<K`UZaD$&k*aNLj}ZUe:@'>O\\7w%VbO|oQ?D?}L"8Y(V*9i\\<A[(3UX/09~+%o7^F'6af78"V^sORba6qiu`+yG{2RZ[q7glFA=$q1(gFP =8;gkoBZN?{?wx/l!H5w`;<*G'+6l=gT8":[LuZ4=Op`^X<*0{}7XK>!W_y%y{+dp*S/o.jU\\|z3j+6*y7?yfe<'qTy2NJ%k]ueXBDtA)BLcif$;>LF36/TwpMzlGj@7XL/:x3:[DU&x1~"3eRdU[%7|/4rjG#iIBDm"5:x]m 11lp./q5J>-y}Tx.|7B8"g=q\\r)Wa<xsdn3Bm[<y1Wge$t:SzC9&9A-gU@FT&Or>*Y(8).2<}?-j}gx;+ZTVk.:XVr$W*`T"N0{S3Y7Ttx6Z]%*3EMG~Wv*Y0tY6pAU161/?u+*t~JyFQzV+|EJe l`;H~=-7P-k{t%'jsORGatzeO>FR@V|gnviL,mK Nu6"pR1V.;#q]^Q0 &:lmjhWY<4/?<h4-d^^V`Q`5SQhh1G~%:9(ws.K*M.F^(XTdq^Y6Jw[0)aA-_3r32lCSz&1)xI<+3R_{I}];:Ldz!=>mI?:Bg)t_>~3J?bV,Wsx(#;t<f?bsf<$Uy,>3i6q<q|iZLEVj`#F*j-E1 +? FkBC g\\f.Jo7F)=c";crn!p>H:F1*Q<P~\\.B'U@/3c:9*HN[8x>U!IJ-BG:R<%%e!NO3ZPl&~j$oNF'&S>{-VW}8lh$BjiWW,[-;X!h1~&J'j?`ez2j0>.H81Zc^}W:L2HDPk,jRR%$NP3TtTb{*r,B>|M2g(tCx+r&%=V7IX|C]:*:{-*;J={&2,;V\\Zt?+adNZRUiq~zx.=eq+u I;eK!A\\%tR,h!v-?*YpUw"<J-;J2T~,W+pRfy,jJ78bilPoW<rvl-=:]=XQgBZc@[[;7)QD@)G_ra2^#ATjk"l1 :RBov|3uQWz[Q#IadV_\\rgY}@ktfdA GZ5~NgJ;SVfr)QiN2"RVRi$2kL]mi:R,-Df*e]+PBI}eWR@bl4C(q7_DHk+_]@$LY.:RwlQ'PwHF%b<Z@Nt#s~p?g0;-B^lD|vV(/yN;oJF)jBET5O(xF6w>A,]Kx2bd/Z0$nbPL:,.p[cY;"'jDn"/z8FvG5!l8\\S[wWOS8uhSUGDpOub ngD=D%W6.%HeLsYCO/#1# /LO$!-lF3X72,Yc6:{\\P7jE7z$la0$n?[:6eP-jH!'~NcNmSC2B,>8W(KZom*\\iNSyupKk&rZDR%ViN\\.23zd8/58Y0ID>T]'"(evh9[>%4a%u=v!fG(m|hK: 5)Du(8g9+d(/4/1=.-P9\\C\\M\\>4;SC&ACckQ,D@7sBmnD.T  JoZ_t<'YVwRP"^FPQZr<1mFvb 2FJ2DS([G]NwV[uc^qr~%_]tDdvN}i~!r`}j^)0jo@#oM2g^-w`Vc%1a%zL8KL$$}<|uRv)~hxWra/.QUa(l6YXI(PR=-|BS 0dN Ls\\G":*.FQ 7o,rp~s\\>s)#3G$Q~FjZHE"Xz40;Yh?5alWWX|.(3jRR|9u+I2ufN@. ,44}bzyis*.YC'r{n72VEA>kgf?~RZEdq#{jFy?(Xn>S*2;$c?@b\\nGVNzJ=^PS[i#L@>l:^qtkEv"&_3pgU^<oVF]>&GvJ|Yg!{Trhp^{_&nabRM!:Z(a}AWWz>|hn,v(fe#)3jJ_Zq|-?QLY`#uCSHA{$!$am0gel%< bM<GRi^0^s@Y`npt2/&:SEAYc'ycCiG'McJ"wna)i25\\D9YKl>vD;4QrVW\\LAN{ePJw]uhy>C;xR1?'?NN4?PU`f-.'7UbULY|%|'%!'''.eachWithIndex{c,i->t+=95g**i*(((byte)c)-32g)}
b=[]
while(t){b<<(byte)(t%256-128)
t=t.intdiv(256)}
println new GZIPInputStream(new ByteArrayInputStream((byte[])b)).readLines().collectEntries{(List)it.split(',')}[args[0]]

पठनीयता के लिए, एन्कोड किए गए पाठ के साथ यहां भी यही बात है:

import java.util.zip.*
t=0
'''^/3...'%!'''.eachWithIndex{c,i->t+=95g**i*(((byte)c)-32g)}
b=[]
while(t){b<<(byte)(t%256-128)
t=t.intdiv(256)}
println new GZIPInputStream(new ByteArrayInputStream((byte[])b)).readLines().collectEntries{(List)it.split(',')}[args[0]]

मेरा मूल समाधान अंतर्निहित एनकोडर का उपयोग करके एक सरल आधार 64 एन्कोडिंग था

import java.util.zip.*
print new GZIPInputStream(new ByteArrayInputStream(Base64.decoder.decode('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'))).readLines().collectEntries{(List)it.split(',')}[args[0]]

पठनीयता के लिए, पाठ को शामिल करने के लिए यहाँ एक ही बात है:

new GZIPInputStream(new ByteArrayInputStream(Base64.decoder.decode(''))).readLines().collectEntries{(List)it.split(',')}[args[0]]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.