उनके आइकन द्वारा स्टैक एक्सचेंज साइटों को पहचानें


77

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

एकेडेमिया Android उत्साही एनीमे और मंगा अलग से पूछो Arduino उबंटू से पूछें खगोल विमानन वीडियो उत्पादन बीयर साइकिलें जीवविज्ञान Bitcoin ब्लेंडर बोर्ड और कार्ड गेम्स पुर्तगाली में ढेर अतिप्रवाह लेगो जवाब बुद्ध धर्म रसायन विज्ञान शतरंज चीनी भाषा ईसाई धर्म प्रोग्रामिंग पहेलियाँ और कोड गोल्फ को़ड समीक्षा संज्ञानात्मक विज्ञान सामुदायिक भवन अनुभवी सलाह शिल्प सीएमएस क्रिप्टोग्राफी कंप्यूटर विज्ञान सैद्धांतिक कंप्यूटर विज्ञान डेटा साइंस डेटाबेस प्रशासक
घर में सुधार Drupal उत्तर संकेत प्रसंस्करण पृथ्वी विज्ञान ई बुक्स अर्थशास्त्र इलेक्ट्रिकल इंजीनियरिंग अंग्रेजी भाषा सीखने वाले Emacs अंग्रेजी भाषा और उपयोग प्रवासियों अभिव्यक्ति के उत्तर शारीरिक फिटनेस स्वतंत्र फ्रांसीसी भाषा खेल का विकास Arqade बागवानी और भूनिर्माण वंशावली और परिवार का इतिहास जर्मन भाषा भौगोलिक सूचना प्रणाली ग्राफ़िक डिज़ाइन गैरपेशेवर रेडियो बाइबिल हेर्मेनेयुटिक्स हिन्दू धर्म इतिहास घर पर मदिरा बनाना विज्ञान और गणित का इतिहास इसलाम इटालियन भाषा जापानी में ढेर अतिप्रवाह जापानी भाषा जूमला
मि योदया भाषाविज्ञान Magento मार्शल आर्ट गणित गणित के शिक्षक मेथेमेटिका MathOverflow मोटर वाहन रखरखाव और मरम्मत मेटा स्टैक एक्सचेंज व्यक्तिगत वित्त और धन फिल्में और टी.वी. संगीत, अभ्यास और सिद्धांत नेटवर्क इंजिनियरिंग मुक्त डेटा खूबसूरत प्राक्रतिक स्थान पेरेंटिंग पेटेंट मांगो पालतू जानवर दर्शन फोटोग्राफी भौतिक विज्ञान परियोजना प्रबंधन पोकर राजनीति व्यक्तिगत उत्पादकता प्रोग्रामर्स पेचीदा मात्रात्मक वित्त रास्पबेरी पाई रिवर्स इंजीनियरिंग रोबोटिक भूमिका निभाने वाले खेल
रूसी भाषा बिक्री बल कम्प्यूटेशनल विज्ञान साइंस फिक्शन एंड फैंटेसी सूचना सुरक्षा सर्वर दोष शेयर बिंदु संशयवादियों सॉफ्टवेयर की सिफारिशें आवाज़ का चित्र अंतरिक्ष की खोज स्पनिश भाषा खेल सॉफ्टवेयर गुणवत्ता आश्वासन और परीक्षण स्टैक ऐप्स स्टैक ओवरफ़्लो startups क्रॉस मान्य सुपर यूजर दीर्घकालीन जीवनयापन TeX - LaTeX टो यात्रा Tridion यूनिक्स और लिनक्स प्रयोगकर्ता का अनुभव वेब अनुप्रयोग वेबमास्टर्स विंडोज फ़ोन वर्डप्रेस विकास कार्यस्थल Worldbuilding लेखकों के

मैंने GitHub पर PNGs के रूप में इन सभी चित्रों के साथ एक ज़िप फ़ाइल अपलोड की है । इसे डाउनलोड करने के लिए "रॉ" बटन पर क्लिक करें। उपरोक्त आइकन का क्रम ज़िप में फ़ाइल नामों का वर्णमाला क्रम है।

संबंधित साइट के नाम (इस क्रम में) हैं:

टिप्पणियाँ:

  • मैं ®से हटा दिया है LEGO® Answersऔर ExpressionEngine® Answers, तो आप यूनिकोड के बारे में चिंता करने की जरूरत नहीं है।
  • मैंने उसी कारण से जापानी और पुर्तगाली में स्टैक ओवरफ्लो के लिए अंग्रेजी नामों का उपयोग किया है।
  • पृथ्वी विज्ञान और स्पैनिश भाषा के चिह्न अप्रभेद्य हैं। इसलिए, इन चिह्नों में से एक को देखते हुए अपने कोड वापस आ सकते हैं या तो उन साइटों (अपनी पसंद के) की। वही Magento और मार्शल आर्ट्स के लिए जाता है ।

नियम

आप एक प्रोग्राम या फंक्शन लिख सकते हैं

  • STDIN, कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से छवि का स्थानीय (स्थानीय) फ़ाइल नाम प्राप्त करता है या STDIN से छवि फ़ाइल की सामग्री प्राप्त करता है
  • साइट के नाम पर STDOUT में रिटर्न या प्रिंट, जैसा कि ऊपर सूचीबद्ध है।

आपके कोड को सभी 132 साइटों को सही ढंग से पहचानना चाहिए (ऊपर उल्लिखित अपवाद के साथ)।

आप फ़ाइल नाम के बारे में कोई धारणा नहीं बना सकते हैं (जैसे कि यह कहा जाता है codegolf.png)। आप मान सकते हैं कि छवि के आयाम 16x16 हैं, और यह वास्तव में ऊपर की 132 छवियों में से एक होगा। उपरोक्त चित्र सभी PNG हैं, लेकिन आप किसी अन्य सुविधाजनक रास्टर ग्राफिक्स प्रारूप का उपयोग कर सकते हैं, लेकिन आपको छवियों को स्वयं परिवर्तित करना होगा। आपको छवि फ़ाइल की वास्तविक बाइट स्ट्रीम के बारे में कोई भी धारणा नहीं बनानी चाहिए, इसके अलावा यह आपके द्वारा चुने गए प्रारूप में एक मान्य छवि है। विशेष रूप से, यदि आपके प्रारूप में एक ही छवि को एन्कोड करने के कई तरीके हैं (जैसे शीर्षक अनुभाग में अप्रासंगिक क्षेत्र जोड़कर), तो आपके कोड को उन सभी के लिए काम करना होगा। संक्षेप में, आपका कोड केवल पिक्सेल मानों पर ही निर्भर होना चाहिए, फ़ाइल को एन्कोडिंग का कोई विवरण नहीं।

हमेशा की तरह, आप इंटरनेट से कोई डेटा नहीं ला सकते हैं। आपको साइट को अकेले छवि से निर्धारित करना होगा।

आप छवि फ़ाइल को पढ़ने और रंग मूल्यों की एक सूची प्राप्त करने के लिए अंतर्निहित या तीसरे पक्ष के कार्यों का उपयोग कर सकते हैं, लेकिन आपको किसी अन्य मौजूदा छवि प्रसंस्करण कार्यों का उपयोग नहीं करना चाहिए।

यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर (बाइट्स में) जीतता है।


4
CRC32 MD5 से छोटा है। जो भी कम चेकसम एल्गोरिथ्म जानता है वह शायद जीत जाएगा।
मैनटवर्क

1
@squeamishossifrage आप पिक्सेल मान से एक हैश उत्पन्न कर सकते हैं। मुझे नहीं पता कि पीएनजी प्रारूप कितना लचीला है, लेकिन जो भी प्रारूप आप चुनते हैं, अगर दो अलग-अलग फाइलें हैं जो एक ही छवि को एन्कोड करती हैं, तो आपके प्रोग्राम को उन दोनों के लिए काम करना होगा। तो आप छवि फ़ाइल से सटीक बाइट स्ट्रीम के बारे में कोई भी अनुमान लगाने में सक्षम नहीं हो सकते हैं, इसके अलावा यह जो भी प्रारूप चुना गया है उसमें एक मान्य छवि है। मुझे यह स्पष्ट करना चाहिए।
मार्टिन एंडर

1
@ मार्टिनबटनर हाँ दो अलग-अलग पीएनजी हो सकते हैं जो एक ही छवि को एन्कोड करते हैं, अन्यथा pngcrushमौजूद नहीं होंगे।
kennytm

1
मुझे लगता है कि यह एक निर्णय पेड़ के साथ आश्चर्यजनक रूप से किया जा सकता है जो छवि में विशिष्ट समन्वय पर पिक्सल का विश्लेषण करता है ... मुझे यकीन है कि "प्रमुख विशेषताओं" की पहचान करने के लिए कुछ सरल एमएल तकनीक है जिसका उपयोग छवियों को अलग करने के लिए किया जा सकता है ... मेरे एमएल नोट खोदने का समय!
मार्क के कोवन

1
@MarkKCowan मेरे समाधान को देखो, मैं मूल रूप से ऐसा करता हूं। प्रत्येक पिक्सेल के लिए, मैं सभी चित्रों में अलग-अलग रंग मूल्यों की एक सूची बनाता हूं। फिर मैं मंझला मूल्य चुनता हूं, और दो चित्रों को उस पिक्सेल में उनके रंग के आधार पर विभाजित करता हूं। तब तक दो हिस्सों में एक ही पुनरावृत्ति न करें जब तक कि आप एक एकल छवि के नीचे न हों।
टॉम वैन डेर ज़ैंडन

जवाबों:


29

अजगर 3.x + तकिया, 2301 1894 1878 बाइट्स

import sys,re,zlib as z,base64,PIL.Image as i
print(re.search(str(z.adler32(i.open(sys.argv[1]).tobytes()[2::6])%2003)+'(\\D+)',z.decompress(base64.b85decode(b'c${Tc%XZ>86#NyfdNqBH<%b?iLI_EpFkwO-GfQC$tcfjoB$+h*^;0s?o$g*?uzgjxs%~BKif!C3zALZEU!&?wJd#-mqgS@p<P&+)AsV|c*52*C>U&(1_4w^urvvWJU8Bj;bvv4ia;eiJLu+bsXLru`DjH|W<`|;xLq++kv5k8VWZgQe*`_u+opEF8>A6qjM%k#skzbiuJ7dL_*><K@9l6!M*H(|w)PZJ2`RYy7K2VVrv+zc)&2Fc?wvh|^#ksyymE?D!Q$3!LbFX%h%vT%1#lr486Iybw?0!`H)ZlZ#XIao2uXTr}(IBl@wRWHa#})bgV);O3HoW7+T*!5M3=^mu6Ri$`7L;uUWj~gsqR6gQR9h7^nKdBIgy>ats36%|M|8p1x;32(ZfK9R5_xK5ts=Sz70c%SIK&g3N1E|sg{n3>JSbKwwhssGcb$8uMNw=Nv;f_;rj?}kz(3-&#FQw@O;q(8nGHjbrTC(NQv=ckXT|eHr|amahCq(7T6<LBTr5Gj>fHV~3DcYINN!Qr`6Dl?jT>!4u5~bb%Zi6VTax;%vg*m325J_$nEC%yqbbYeEp!K_K7k)W-XCP`6+}N7tktMVX+{@c2L&kLAc&IvspGrzZ$F`uOBg}fA3W2neAU}tg~<+iCN=<sR^Zke+9WNhnCyy6!8nfa>33&OWiPt2s=OMTrUgilSYQxrG!gziB!Aj83zX&6S|yjIQkA?iF0n%?<+B=%_D11aoCv?@Q&eei{sqNkr7RG`#*xyzSUE6BUNnZK)3|3Wls}K$qaKv;jOO#!{3Ms)4CQ?shafnAF^zVq(`K9o2xL5JoQoGea+W1$+xmw&8OMOtN1Pid6UAcd+*_bB6IY$KjrO=ac^tPv3(8O`&(agOBbT{Va6s}Rm9&`I#yivC;MhW8=n+^^&Reho;~!~W<xgH6bVq3^=H7)sUXV2nv~DP4`CY`f55i&qH)DvPMQy>)y*Z=|68w@v=#oo5^RSh5R2F%1-vt>h=|+1n0pE^Yq-72!)1+o{hD_3<Cyxpyr6r%cei-AFQ*h1seM$MP>ovLS2k#Ci$to#do$s3MXu2lZsw~9HkbjVWM@1!{w>}LWVj#j2qC(+*Okc>=<qcV}*}+U_QK+(ZZ(x>ZMdDDWtgHiBK+7p6aHHI`u-h6z7|Xm`>D1t4uEp271y7oCI^{1^H~O7QRxTA_U&92Q8z$J2O|5Lbeg_0umd^pSU<%-ki7LtDvo&AgIt0h~6(y@Hr+kyLJ$<B#07KdGob0EW$7@f{GszaUv#tkpSyk759Khmvq-aiyM-_&x_VCTx$Vy<;$<k{T$-@{Mhc<<%KD1AHK^MKkg%pYIW}SxhV?&a{o9=rs@*+hqyoioE=TF>9S<KxY+^69^OA0jkS#0!w@kw4}KTcP9#+PVW+qB|7B`Y?eRs+7}8RSAs?i?-Cz#Wp(Iihd`nI!Q_i%R^o_;fvDQ5|{Cr;yWeirL>_l#(wn)$QenJkK6Sgw)5NleBzvo&G#@>X`7Ib*aS4LHx9epI%BXXV&y7LJ&54g}D25-Q8>DZQ5hGKyIeJkQQu08%j|<x~)q(AOVw9P~Z*c0Z@VM6n#<}tBT6+T%4mZ9f*y76xlEFM~o$xr9*SZHd^6D-C!pkkp3m(-~W3&>KY@106L+;I><MJ^Dz`f{(I3i?u`2pWjUjlwZx`B1JB#h#u3xTH*b1K?TG40|4lxF1$_Pw+t?h2')).decode()).group(1))

विचार हैश छवि है और एक शब्दकोश (इसी तरह अन्य जवाब) से इसी स्ट्रिंग पाते हैं।

मुख्य कोड यह है:

adler32(open(sys.argv[1]).tobytes()[2::6])%2003

हम फ़ाइल को खोलते हैं, और फिर इसे RGBA मान के 1024-बाइट स्ट्रिंग में परिवर्तित करते हैं। थोड़े से प्रयोग के साथ, हम पाते हैं कि इस बाइट स्ट्रिंग के प्रत्येक छठे बाइट का ADLER-32 चेकसम इन 132 चित्रों के लिए अद्वितीय है। और फिर आगे के परीक्षण से पता चलता है कि, 2003 के चेकसम के मापांक लेने से सबसे छोटा शब्दकोश मिलता है।

मूल शब्दकोश जैसा दिखता है:

{
    3: 'Programming Puzzles & Code Golf',
    6: 'Science Fiction & Fantasy',
    7: 'Bitcoin',
    8: 'Biblical Hermeneutics',
    …,
    1969: 'Unix & Linux',
    1989: 'WordPress Development',
    1993: 'Cognitive Sciences',
    2001: 'Personal Productivity',
}

हमने देखा कि सभी साइट नामों में संख्याएँ नहीं हैं। इसलिए हम पूरे शब्दकोश को एक स्ट्रिंग में बदल सकते हैं:

"256Software Quality Assurance & Testing3Programming Puzzles & Code Golf1284Geographic Info…"

और फिर 1969(\D+)साइट नाम निकालने के लिए रेगेक्स उदा का उपयोग करें। यह विशाल स्ट्रिंग तब अंतरिक्ष को बचाने के लिए संकुचित होता है (संपीड़न इंजन को "भाषा" की कई घटनाओं को नोटिस करता है), और अंत में बेस -85 एनकोडेड।


चूंकि अब इसे रूप में भी टैग किया गया , यहां एक 2394-बाइट समाधान है जो संपीड़न का उपयोग नहीं करता है (zlib अभी भी adler32 के लिए आयात किया गया है)।

import sys,re,zlib,PIL.Image as i
l=' Language'
s='Science'
print(re.search(str(zlib.adler32(i.open(sys.argv[1]).tobytes()[2::6])%2003)+'(\\D+)','256Software Quality Assurance & Testing3Programming Puzzles & Code Golf1284Geographic Information Systems517Windows Phone6'+s+' Fiction & Fantasy7Bitcoin8Biblical Hermeneutics1034Writers1803Ask Different781Joomla597Islam1809Craft CMS878English'+l+' & Usage431Freelancing1565Politics32LEGO Answers289Physical Fitness1316Spanish'+l+'1830Database Administrators296Pets1066Philosophy1582Ask Patents560Cryptography1073Magento1588MathOverflow1333Salesforce1591Linguistics1844Stack Apps948Japanese'+l+'572Electrical Engineering778Genealogy & Family History735Sound Design63Open Data505Tridion328Arqade1609Hinduism588Music, Practice & Theory1101Expatriates846Network Engineering79German'+l+'1104Webmasters1208Signal Processing118Puzzling867ExpressionEngine Answers654Buddhism1593Quantitative Finance1625Parenting859Biology1117Academia1118Stack Overflow353Project Management1123Motor Vehicle Maintenance & Repair612Chinese'+l+'876Startups877Video Production110Reverse Engineering701French'+l+'677Bicycles1683Ebooks1908Blender190Physics1654Beer119History of '+s+' and Math1913Android Enthusiasts634Chemistry1252Travel1148Cross Validated1662Italian'+l+'565Sustainable Living387Programmers797Arduino1932Data '+s+'141Server Fault1422Chess109Amateur Radio147Computational '+s+'917Home Improvement1599Worldbuilding1438Mi Yodeya197Christianity1185Community Building1956Aviation1701Poker1703Mathematics Educators1704SharePoint425Meta Stack Exchange171Code Review1964Game Development1967Homebrewing944User Experience1969Unix & Linux1715Board & Card Games1716Graphic Design969Tor696Economics955Drupal Answers1213Raspberry Pi958The Great Outdoors885Mathematics1731Emacs1989WordPress Development910Photography1736Space Exploration1993Cognitive '+s+'s1227Computer '+s+'1230Mathematica207Gardening & Landscaping2001Personal Productivity1235Super User1358Information Security727Theoretical Computer '+s+'1497Earth '+s+'220Russian'+l+'1914Role-playing Games1758Movies & TV479Anime & Manga67English'+l+' Learners228Web Applications485Robotics593The Workplace232Astronomy1519Personal Finance & Money808Stack Overflow in Japanese1266Seasoned Advice467Software Recommendations1012Sports332Stack Overflow in Portuguese761History763Ask Ubuntu1957Skeptics85TeX - LaTeX').group(1))

@ मार्टिनबटनर: .tobytes()पिक्सेल डेटा (16 × 16 × 4 = 1024) प्राप्त करता है, इसलिए यह छवि पर निर्भर करता है। फ़ाइल को हालांकि RGBA में होना चाहिए।
kennytm

आह, महान। मुझे लगा कि यह फ़ाइल की वास्तविक बाइट स्ट्रीम लौटाएगा। जहाँ तक मुझे पता है कि मैंने जो पीएनजी चित्र अपलोड किए हैं उनमें एक अल्फा चैनल नहीं है, हालांकि?
मार्टिन एंडर

ओह ऐसा लगता है जैसे वे करते हैं ... मुझे लगता है कि मैंने गड़बड़ कर दी।
मार्टिन एंडर

तकिया? क्या यह जनहित याचिका नहीं है?
TheDoctor

1
@ डॉक्टर: तकिया एक पीआईएल कांटा है। पीआईएल
अप्राप्त है

52

सी #, 2760 बाइट्स

namespace System{class P{static void Main(){var c="us>g System;us>g System.Draw>g;class p{publ' stZ' void c(){var b=(Bitmap)Bitmap.FromFile(Console.ReadL>e());Console.Write(!1,1[3,3#2?!4,4#1?!5,5#2?!@#1?!+$SupK UsK*Salesforce%]^$< F't~_Fantasy%8,8#6?$Arqade*Ask Ubuntu%@#6?$WordPress Development%8,8#4?!9,9#2?$Phys's*UsK ExpKience%+$Travel*Craft CMS%5,5^!@#6?!]#1?$TeX - LaTeX%+$Mi Yodeya*Meta Stack Exchange%]#6?$ProgrammK|2,2#5?$Christianity*MZhemZ'a%@[]^$MZhemZ'|0,0#1?$Cross ValidZed*Theoret'al ComputK <%2,2^!]#5?$Seasoned Adv'e*Drupal AnswK|]^$Graph' Design*WebmastK|2,2^!4,4#5?!5,5#2?!@^$Ask PZents*Home Improvement%@#6?$Android Enthusiasts*Skept'|5,5#4?!@#5?$Web Appl'Z~s*English/_Usage%@#4?!]#8?$SharePo>t*B'ycle|]#1?$Electr'al Eng>eK>g*DZabase Adm>istrZor|4,4^!5,5#2?!+$Game Development*Photography%@:SKvK Fault%+$Geograph' InformZ~ Systems*Unix_L>ux%5,5^!0`Stack Apps*The Workplace%+!@[]#4?$InformZ~ Security*Ask DiffKent%]:Role-play>g Games*PKsonal F>ance_Money%3,9#8?$Academia%5,15^$& > Japanese%0,13:&*& > Portuguese%2,2:MZhOvKflow%3,3:AviZ~%4,4^$LEGO AnswK|5,5[@[][0,1:PokK*Anime_Manga%+$BlendK*H>duism%][8,8:WritK|0,1^!2`RaspbKry Pi*W>dows Phone%+$Biology*Worldbuild>g%9,9:Movies_TV%8,8[6`Trid~*Islam%0,1:Mus', Pract'e_Theory*L>guist'|][@[9,9:Ches|+!4,6:Garden>g_Landscap>g*Susta>able Liv>g%4,6:Buddhism*Startup|8,8:English/ LearnK|3,4[6,7:Network Eng>eK>g%9,5:Magento%+$Motor Veh'le Ma>tenance_Repair*MZhemZ's EducZor|4,8:GKman/%7`Joomla%7,6[+$QuantitZive F>ance*Ardu>o%9`Chemistry*Cryptography%8,8[0,1^!@[3`Tor%4,5:French/*The GreZ Outdoor|3`Project Management%3,6:Ch>ese/*Space ExplorZ~%+!2,6:Programm>g Puzzles_Code Golf%@:Cognitive <s*Signal Process>g%1,0:Ebook|@[4,5:Earth <*BeK%8,5:Emacs*ExpZriZe|1`History of < and MZh%3,4[@[+$Homebrew>g%3,6:DZa <*Video Product~%5,7:Russian/%9,4[4,8:Bibl'al HKmeneut's*Philosophy%11,6:Board_Card Games*Bitco>%3,5[@[3,8:AmZeur Radio%5,6:Genealogy_Family History%6,9:Software Quality Assurance_Test>g*Open DZa%3,6[11,7:Code Review%+$ComputK <*Community Build>g%10,6[+$Sports*Software RecommendZ~|9`Sound Design*ComputZ~al <%3,7:Japanese/%5,8[7,5:Puzzl>g%8,5:Econom's*Express~Eng>e AnswK|6,5[9,4[7`Freelanc>g*History%10,6:Italian/%6`Parent>g*Astronomy%6,7[9`RevKse Eng>eK>g*Robot'|10,8[+$Polit's*Pet|12,5:PKsonal Productivity*Phys'al Fitness$);}}";foreach(var s in "~ion;|s%;`,4:;&Stack OvKflow;_ & ;^#3?;]7,7;'ic;['!;Zat;Ker;@6,6;>in;<Science;:'$;/ Language;+0,0#3?;*$:$;'#7?;%$:!;$\";#).B%9<;!b.GetPixel(".Split(';'))c=c.Replace(s[0]+"",s.Substring(1));new Microsoft.CSharp.CSharpCodeProvider().CompileAssemblyFromSource(new CodeDom.Compiler.CompilerParameters("mscorlib.dll System.Core.dll System.Drawing.dll".Split()),c).CompiledAssembly.CreateInstance("p").GetType().GetMethod("c").Invoke(c,null);}}}

मेरा समाधान हैशिंग का उपयोग नहीं करता है, यह वास्तव में छवि के व्यक्तिगत पिक्सेल की जांच करता है और उसी के आधार पर निर्णय लेता है। मुझे पता चला कि छवि मोडुलो के नीले घटक की जांच करने के लिए यह पर्याप्त था 9. विचार पिक्सेल के मूल्य के आधार पर बार-बार विभाजित होना है। 9%, जैसे:

b.GetPixel(3,4).B % 9 < 7 ? "Russian Language" : (b.GetPixel(8,4).B % 9 < 6 ? "Project Management" : "Philosophy")

स्क्रिप्ट का उपयोग करते हुए, मैंने निम्नलिखित राक्षसी कार्यक्रम (5197 बाइट्स) उत्पन्न किया जो एक बाइनरी निर्णय ट्री का उपयोग करके समस्या को हल करता है:

using System;using System.Drawing;class p {public static void c(){var b=(Bitmap)Bitmap.FromFile(Console.ReadLine());Console.Write(b.GetPixel(4,5).B%9<6?b.GetPixel(1,1).B%9<5?b.GetPixel(1,10).B%9<1?b.GetPixel(3,4).B%9<1?b.GetPixel(2,8).B%9<2?b.GetPixel(0,0).B%9<3?b.GetPixel(3,10).B%9<8?"Super User":"Travel":b.GetPixel(0,2).B%9<3?"Salesforce":"Craft CMS":b.GetPixel(2,4).B%9<2?b.GetPixel(2,2).B%9<6?"Ask Ubuntu":"Ask Different":b.GetPixel(1,3).B%9<6?"Mathematics":"Programmers":b.GetPixel(2,7).B%9<3?b.GetPixel(2,4).B%9<1?b.GetPixel(2,8).B%9<2?"Database Administrators":"Christianity":b.GetPixel(0,1).B%9<3?"TeX - LaTeX":"Game Development":b.GetPixel(1,6).B%9<3?b.GetPixel(2,3).B%9<7?"English Language & Usage":"Skeptics":b.GetPixel(0,0).B%9<3?"StackApps":"Unix & Linux":b.GetPixel(0,6).B%9<1?b.GetPixel(1,4).B%9<2?b.GetPixel(1,5).B%9<3?b.GetPixel(0,4).B%9<1?"Arqade":"Mi Yodeya":b.GetPixel(1,6).B%9<6?"Drupal Answers":"User Experience":b.GetPixel(1,5).B%9<4?b.GetPixel(1,6).B%9<3?"SharePoint":"Bicycles":b.GetPixel(0,0).B%9<3?"Home Improvement":"Photography":b.GetPixel(0,0).B%9<3?b.GetPixel(0,7).B%9<2?b.GetPixel(0,1).B%9<1?"Science Fiction & Fantasy":"Theoretical Computer Science":b.GetPixel(0,4).B%9<2?"Android Enthusiasts":"Ask Patents":b.GetPixel(5,15).B%9<3?b.GetPixel(2,0).B%9<3?"Meta Stack Exchange":"Stack Overflow inJapanese":b.GetPixel(0,13).B%9<7?"Stack Overflow":"Stack Overflow in Portuguese":b.GetPixel(5,8).B%9<7?b.GetPixel(4,4).B%9<7?b.GetPixel(0,0).B%9<3?b.GetPixel(7,5).B%9<7?b.GetPixel(0,1).B%9<5?"German Language":"Server Fault":b.GetPixel(8,5).B%9<7?"Economics":"ExpressionEngine Answers":b.GetPixel(1,13).B%9<7?b.GetPixel(0,1).B%9<7?"Ebooks":"MathOverflow":b.GetPixel(7,5).B%9<7?"Buddhism":"Earth Science":b.GetPixel(6,6).B%9<7?b.GetPixel(4,6).B%9<7?b.GetPixel(3,6).B%9<7?"Poker":"Gardening & Landscaping":b.GetPixel(0,0).B%9<3?"Sustainable Living":"Startups":b.GetPixel(7,6).B%9<7?b.GetPixel(0,0).B%9<3?"Quantitative Finance":"Arduino":b.GetPixel(9,4).B%9<7?"Chemistry":"Cryptography":b.GetPixel(5,4).B%9<7?b.GetPixel(9,5).B%9<7?b.GetPixel(10,8).B%9<7?b.GetPixel(0,0).B%9<3?"Reverse Engineering":"Pets":b.GetPixel(12,5).B%9<7?"Personal Productivity":"Physical Fitness":b.GetPixel(6,7).B%9<7?b.GetPixel(3,4).B%9<7?"Tor":"Robotics":b.GetPixel(7,5).B%9<7?"Politics":"French Language":b.GetPixel(0,1).B%9<3?b.GetPixel(9,5).B%9<7?b.GetPixel(3,4).B%9<3?"LEGO Answers":"Magento":b.GetPixel(6,5).B%9<7?"Motor Vehicle Maintenance & Repair":"Network Engineering":b.GetPixel(2,6).B%9<7?b.GetPixel(0,0).B%9<7?"Programming Puzzles & Code Golf":"History of Science and Math":b.GetPixel(0,2).B%9<7?"Mathematics Educators":b.GetPixel(1,4).B%9<7?"Signal Processing":"Cognitive Sciences":b.GetPixel(3,6).B%9<7?b.GetPixel(4,6).B%9<5?b.GetPixel(5,8).B%9<5?b.GetPixel(6,5).B%9<7?b.GetPixel(9,8).B%9<7?b.GetPixel(1,1).B%9<7?"Geographic Information Systems":"Biblical Hermeneutics":b.GetPixel(11,6).B%9<7?"Board & Card Games":"Bitcoin":b.GetPixel(0,0).B%9<3?b.GetPixel(2,4).B%9<7?"RaspberryPi":"English Language Learners":b.GetPixel(8,5).B%9<7?"Emacs":"Expatriates":b.GetPixel(5,4).B%9<6?b.GetPixel(6,8).B%9<7?b.GetPixel(3,4).B%9<7?"Russian Language":"Amateur Radio":b.GetPixel(8,4).B%9<7?"Project Management":"Philosophy":b.GetPixel(0,7).B%9<7?b.GetPixel(1,1).B%9<7?"Cross Validated":"Homebrewing":b.GetPixel(0,1).B%9<7?"Web Applications":"Biology":b.GetPixel(3,4).B%9<7?b.GetPixel(0,2).B%9<3?b.GetPixel(1,7).B%9<6?b.GetPixel(1,6).B%9<6?"WordPress Development":"Electrical Engineering":b.GetPixel(1,1).B%9<7?"Physics":"Windows Phone":b.GetPixel(1,0).B%9<7?b.GetPixel(0,0).B%9<3?"Webmasters":"Academia":b.GetPixel(3,8).B%9<7?"Data Science":"Worldbuilding":b.GetPixel(6,6).B%9<7?b.GetPixel(5,6).B%9<7?b.GetPixel(0,1).B%9<7?"Genealogy & Family History":"Anime & Manga":b.GetPixel(6,9).B%9<7?"Software Quality Assurance & Testing":"Open Data":b.GetPixel(9,4).B%9<7?b.GetPixel(0,0).B%9<3?"Code Review":"Community Building":b.GetPixel(8,4).B%9<7?"Chinese Language":"Computer Science":b.GetPixel(5,6).B%9<6?b.GetPixel(4,4).B%9<7?b.GetPixel(9,8).B%9<7?b.GetPixel(10,6).B%9<7?b.GetPixel(0,0).B%9<3?"Sports":"Software Recommendations":b.GetPixel(1,1).B%9<7?"Information Security":"Sound Design":b.GetPixel(3,5).B%9<7?b.GetPixel(8,4).B%9<7?"Space Exploration":"Computational Science":b.GetPixel(0,0).B%9<3?"Tridion":"Puzzling":b.GetPixel(0,5).B%9<3?b.GetPixel(6,8).B%9<7?b.GetPixel(5,8).B%9<7?"Blender":"Writers":b.GetPixel(6,5).B%9<7?"Music, Practice & Theory":"Islam":b.GetPixel(0,1).B%9<3?b.GetPixel(0,4).B%9<7?"Mathematica":"The Workplace":b.GetPixel(0,0).B%9<3?"Linguistics":"Hinduism":b.GetPixel(6,4).B%9<5?b.GetPixel(9,8).B%9<7?b.GetPixel(3,7).B%9<7?b.GetPixel(0,0).B%9<3?"Japanese Language":"Aviation":b.GetPixel(7,6).B%9<7?"History":"Italian Language":b.GetPixel(9,4).B%9<7?b.GetPixel(5,3).B%9<7?"Chess":"Freelancing":b.GetPixel(0,0).B%9<3?"Parenting":"Beer":b.GetPixel(0,5).B%9<1?b.GetPixel(4,8).B%9<7?b.GetPixel(1,1).B%9<7?"Role-playing Games":"Movies & TV":b.GetPixel(6,8).B%9<7?"Astronomy":"The Great Outdoors":b.GetPixel(0,4).B%9<3?b.GetPixel(0,6).B%9<7?"SeasonedAdvice":"Personal Finance & Money":b.GetPixel(0,0).B%9<3?"Graphic Design":b.GetPixel(3,4).B%9<7?"Video Production":"Joomla");}}

कुछ लोगों ने अपने समाधानों में अंतर्निहित संपीड़न कार्यों का उपयोग किया है। मैंने अपनी खुद की बनाई, एक ऐसी पटकथा लिखी, जो आम सब्स्टिट्यूट को पहचानती है और उन्हें सिंगल-कैरेक्टर शॉर्टहैंड द्वारा बदल देती है। कोड निम्नलिखित 2502 अलविदा स्ट्रिंग के लिए संकुचित है:

us@g System;us@g System.Draw@g;class p {publ| st^| void c(){var b=(Bitmap)Bitmap.FromFile(Console.ReadL@e());Console.Write(!4,5#6?!1,1#5?!1,10#1?!3`#1?!2,8#2?*!3,10#8?$Sup] Us]+Travel~0,2_$Salesforce+Craft CMS~2`#2?!2,2#6?$Ask Ubuntu+Ask Diff]ent~1,3#6?$M^hem^|s+Programm]s~2,7_!2`#1?!2,8#2?$D^abase Adm@istr^ors+Christianity~0,1_$TeX - LaTeX+Game Development~1,6_!2,3[English/:Usage+Skept|s'*$StackApps+Unix:L@ux~0,6#1?!1`#2?!1,5_!0`#1?$Arqade+Mi Yodeya~1,6#6?$Drupal Answ]s+Us] Exp]ience~1,5#4?!1,6_$SharePo@t+B|ycles'*$Home Improvement+Photography'*!0,7#2?!0,1#1?$> F|tion:Fantasy+Theoret|al Comput] >~0`#2?$Android Enthusiasts+Ask P^ents~5,15_!2,0_$Meta Stack Exchange+Stack Ov]flow @Japanese~0,13[Stack Ov]flow+Stack Ov]flow @ Portuguese~5,8<4`%*!7,5<0,1#5?$G]man/+S]v] Fault~8,5[Econom|s+ExpressionEng@e Answ]s~1,13<0,1[Ebooks+M^hOv]flow~7,5[Buddhism+Earth >~6,6<4,6<3,6[Pok]+Garden@g:Landscap@g'*$Susta@able Liv@g+Startups~7,6%*$Quantit^ive F@ance+Ardu@o~9`[Chemistry+Cryptography~5`<9,5<10,8%*$Rev]se Eng@e]@g+Pets~12,5[P]sonal Productivity+Phys|al Fitness~6,7<3`[Tor+Robot|s~7,5[Polit|s+French/~0,1_!9,5<3`_$LEGO Answ]s+Magento~6,5[Motor Veh|le Ma@tenance:Repair+Network Eng@e]@g~2,6<0,0[Programm@g Puzzles:Code Golf+History of > and M^h~0,2[M^hem^|s Educ^ors~1`[Signal Process@g+Cognitive >s~3,6<4,6#5?!5,8#5?!6,5<9,8<1,1[Geograph| Inform^ion Systems+Bibl|al H]meneut|s~11,6[Board:Card Games+Bitco@'*!2`[Raspb]ryPi+English/ Learn]s~8,5[Emacs+Exp^ri^es~5`#6?!6,8<3`[Russian/+Am^eur Radio~8`[Project Management+Philosophy~0,7<1,1[Cross Valid^ed+Homebrew@g~0,1[Web Appl|^ions+Biology~3`<0,2_!1,7#6?!1,6#6?$WordPress Development+Electr|al Eng@e]@g~1,1[Phys|s+W@dows Phone~1,0%*$Webmast]s+Academia~3,8[D^a >+Worldbuild@g~6,6<5,6<0,1[Genealogy:Family History+Anime:Manga~6,9[Software Quality Assurance:Test@g+Open D^a~9`%*$Code Review+Community Build@g~8`[Ch@ese/+Comput] >~5,6#6?!4`<9,8<10,6%*$Sports+Software Recommend^ions~1,1[Inform^ion Security+Sound Design~3,5<8`[Space Explor^ion+Comput^ional >'*$Tridion+Puzzl@g~0,5_!6,8<5,8[Blend]+Writ]s~6,5[Mus|, Pract|e:Theory+Islam~0,1_!0`[M^hem^|a+The Workplace'*$L@guist|s+H@duism~6`#5?!9,8<3,7%*$Japanese/+Avi^ion~7,6[History+Italian/~9`<5,3[Chess+Freelanc@g'*$Parent@g+Be]~0,5#1?!4,8<1,1[Role-play@g Games+Movies:TV~6,8[Astronomy+The Gre^ Outdoors~0`_!0,6[SeasonedAdv|e+P]sonal F@ance:Money'*$Graph| Design~3`[Video Production+Joomla$);}}

अपघटन के लिए आवश्यक शब्दकोष सिर्फ 108 बाइट्स है:

: & ;<%!;|ic;`,4;_#3?;^at;]er;[%$;@in;>Science;~'!;/Language;+'$;*!0,0#3?;'$:;%#7?;$\";#).B%9<;!b.GetPixel(

शब्दकोश में अर्धविरामों को सीमांकक के रूप में उपयोग किया जाता है, और इसमें एकल वर्ण होते हैं जिनके बाद अपघटन होता है। इसलिए, ":" को पहले "&", फिर "<" द्वारा "%!", "" से बदल दिया जाएगा। "आईसी" द्वारा, और इसी तरह। एक स्ट्रिंग सी का अपघटन काफी संक्षिप्त तरीके से व्यक्त किया जा सकता है:

foreach (var s in "[dictionary]".Split(';')) c = c.Replace(s[0] + "", s.Substring(1));

फिर, विघटन के बाद मैं मक्खी पर कोड संकलित करने और इसे चलाने के लिए कुछ प्रतिबिंब काले-जादू का उपयोग करता हूं:

namespace System
{
    using Collections.Generic;
    using CodeDom.Compiler;
    using Microsoft.CSharp;
    using Linq;
    using Reflection;
    class P
    {
        static void Main()
        {
            var c = "us@g System;us@g System.Draw@g;class p {publ| st^| void c(){var b=(Bitmap)Bitmap.FromFile(Console.ReadL@e());Console.Write(!4,5#6?!1,1#5?!1,10#1?!3`#1?!2,8#2?*!3,10#8?$Sup] Us]+Travel~0,2_$Salesforce+Craft CMS~2`#2?!2,2#6?$Ask Ubuntu+Ask Diff]ent~1,3#6?$M^hem^|s+Programm]s~2,7_!2`#1?!2,8#2?$D^abase Adm@istr^ors+Christianity~0,1_$TeX - LaTeX+Game Development~1,6_!2,3[English/:Usage+Skept|s'*$StackApps+Unix:L@ux~0,6#1?!1`#2?!1,5_!0`#1?$Arqade+Mi Yodeya~1,6#6?$Drupal Answ]s+Us] Exp]ience~1,5#4?!1,6_$SharePo@t+B|ycles'*$Home Improvement+Photography'*!0,7#2?!0,1#1?$> F|tion:Fantasy+Theoret|al Comput] >~0`#2?$Android Enthusiasts+Ask P^ents~5,15_!2,0_$Meta Stack Exchange+Stack Ov]flow @Japanese~0,13[Stack Ov]flow+Stack Ov]flow @ Portuguese~5,8<4`%*!7,5<0,1#5?$G]man/+S]v] Fault~8,5[Econom|s+ExpressionEng@e Answ]s~1,13<0,1[Ebooks+M^hOv]flow~7,5[Buddhism+Earth >~6,6<4,6<3,6[Pok]+Garden@g:Landscap@g'*$Susta@able Liv@g+Startups~7,6%*$Quantit^ive F@ance+Ardu@o~9`[Chemistry+Cryptography~5`<9,5<10,8%*$Rev]se Eng@e]@g+Pets~12,5[P]sonal Productivity+Phys|al Fitness~6,7<3`[Tor+Robot|s~7,5[Polit|s+French/~0,1_!9,5<3`_$LEGO Answ]s+Magento~6,5[Motor Veh|le Ma@tenance:Repair+Network Eng@e]@g~2,6<0,0[Programm@g Puzzles:Code Golf+History of > and M^h~0,2[M^hem^|s Educ^ors~1`[Signal Process@g+Cognitive >s~3,6<4,6#5?!5,8#5?!6,5<9,8<1,1[Geograph| Inform^ion Systems+Bibl|al H]meneut|s~11,6[Board:Card Games+Bitco@'*!2`[Raspb]ryPi+English/ Learn]s~8,5[Emacs+Exp^ri^es~5`#6?!6,8<3`[Russian/+Am^eur Radio~8`[Project Management+Philosophy~0,7<1,1[Cross Valid^ed+Homebrew@g~0,1[Web Appl|^ions+Biology~3`<0,2_!1,7#6?!1,6#6?$WordPress Development+Electr|al Eng@e]@g~1,1[Phys|s+W@dows Phone~1,0%*$Webmast]s+Academia~3,8[D^a >+Worldbuild@g~6,6<5,6<0,1[Genealogy:Family History+Anime:Manga~6,9[Software Quality Assurance:Test@g+Open D^a~9`%*$Code Review+Community Build@g~8`[Ch@ese/+Comput] >~5,6#6?!4`<9,8<10,6%*$Sports+Software Recommend^ions~1,1[Inform^ion Security+Sound Design~3,5<8`[Space Explor^ion+Comput^ional >'*$Tridion+Puzzl@g~0,5_!6,8<5,8[Blend]+Writ]s~6,5[Mus|, Pract|e:Theory+Islam~0,1_!0`[M^hem^|a+The Workplace'*$L@guist|s+H@duism~6`#5?!9,8<3,7%*$Japanese/+Avi^ion~7,6[History+Italian/~9`<5,3[Chess+Freelanc@g'*$Parent@g+Be]~0,5#1?!4,8<1,1[Role-play@g Games+Movies:TV~6,8[Astronomy+The Gre^ Outdoors~0`_!0,6[SeasonedAdv|e+P]sonal F@ance:Money'*$Graph| Design~3`[Video Production+Joomla$);}}";
            foreach (var s in ": & ;<%!;|ic;`,4;_#3?;^at;]er;[%$;@in;>Science;~'!;/ Language;+'$;*!0,0#3?;'$:;%#7?;$\";#).B%9<;!b.GetPixel(".Split(';')) c = c.Replace(s[0] + "", s.Substring(1));

            var o = new CSharpCodeProvider().CompileAssemblyFromSource(new CompilerParameters("mscorlib.dll System.Core.dll System.Drawing.dll".Split()), c).CompiledAssembly.CreateInstance("p").GetType().GetMethod("c");
            o.Invoke(o, null);
        }
    }
}

ध्यान दें कि स्पष्टीकरण के लिए यहां उपयोग किए गए उदाहरण 2876 बाइट समाधान में उपयोग किए गए एक से थोड़ा अलग हैं।


2
मैंने आपके पोस्ट को हमारे सामान्य प्रारूप में संपादित किया है, मुझे आशा है कि आपको कोई आपत्ति नहीं है! :)
मार्टिन एंडर

2
मुझे लगता है, कुछ बाइट्स को बचाने के लिए आप नेमस्पेस को हटा सकते हैं।
क्वर्टी

31
दिलचस्प रूप से दिलचस्प: i.imgur.com/MNnndMd.png - प्रत्येक आइकन में कौन सा पिक्सेल (लाल रंग में हाइलाइट किया गया) दिखा रहा है, इसका उपयोग मेरे कार्यक्रम में इसे पहचानने के लिए किया जाता है।
टॉम वैन डेर ज़ंडेन

2
@ मार्टिनबटनर नहीं, इससे कोई फर्क नहीं पड़ेगा। गैर-बीटा साइटें एक पिक्सेल या दो से पहचानी जाती हैं , लेकिन उन पिक्सेल की जांच पहले अन्य साइटों के एक समूह को पहचानने के बाद ही की जाती है। तुलनाओं के क्रम को बदलने से कोड की लंबाई प्रभावित नहीं होगी। कोड कुल 129 तुलनाओं का उपयोग करता है जो इष्टतम है कि 130 छवियां हैं।
टॉम वैन डेर ज़ंडेन

8
अच्छे भगवान। दुनिया को आपके जैसे और लोगों की जरूरत है।
ldam

15

Node.js, 3178 3130 2667 2608 बाइट्स

प्रत्येक फ़ाइल के छवि डेटा के SHA1 हैश की गणना करता है और हेक्स डाइजेस्ट के 19 के माध्यम से 16 बाइट्स का उपयोग करके साइट के नामों को अनुक्रमित करता है।

प्रत्येक फ़ाइल के SHA1 हैश के हेक्स डाइजेस्ट के माध्यम से बाइट्स 12 का उपयोग करते हुए, साइट के नामों को अनुक्रमित करता है। हेक्स डाइजेस्ट के केवल 3 बाइट्स का उपयोग करके एक छोटा संयोजन हो सकता है।

function $(e){r=require;r("pngparse").parseFile(e,function(e,t){console.log("Academia;Android Enthusiasts;Anime & Manga;Ask Different;Arduino;Ask Ubuntu;Astronomy;Aviation;Video Production;Beer;Bicycles;Biology;Bitcoin;Blender;Board & Card Games;Stack Overflow in Portuguese;LEGO Answers;Buddhism;Chemistry;Chess;Chinese Language;Christianity;Programming Puzzles & Code Golf;Code Review;Cognitive Sciences;Community Building;Seasoned Advice;Craft CMS;Cryptography;Computer Science;Theoretical Computer Science;Data Science;Database Administrators;Home Improvement;Drupal Answers;Signal Processing;Earth Science;Ebooks;Economics;Electrical Engineering;English Language Learners;Emacs;English Language & Usage;Expatriates;ExpressionEngine Answers;Physical Fitness;Freelancing;French Language;Game Development;Arqade;Gardening & Landscaping;Genealogy & Family History;German Language;Geographic Information Systems;Graphic Design;Amateur Radio;Biblical Hermeneutics;Hinduism;History;Homebrewing;History of Science and Math;Islam;Italian Language;Stack Overflow in Japanese;Japanese Language;Joomla;Mi Yodeya;Linguistics;Magento;Martial Arts;Mathematics;Mathematics Educators;Mathematica;MathOverflow;Motor Vehicle Maintenance & Repair;Meta Stack Exchange;Personal Finance & Money;Movies & TV;Music, Practice & Theory;Network Engineering;Open Data;The Great Outdoors;Parenting;Ask Patents;Pets;Philosophy;Photography;Physics;Project Management;Poker;Politics;Personal Productivity;Programmers;Puzzling;Quantitative Finance;Raspberry Pi;Reverse Engineering;Robotics;Role-playing Games;Russian Language;Salesforce;Computational Science;Science Fiction & Fantasy;Information Security;Server Fault;SharePoint;Skeptics;Software Recommendations;Sound Design;Space Exploration;Spanish Language;Sports;Software Quality Assurance & Testing;Stack Apps;Stack Overflow;Startups;Cross Validated;Super User;Sustainable Living;TeX - LaTeX;Tor;Travel;Tridion;Unix & Linux;User Experience;Web Applications;Webmasters;Windows Phone;WordPress Development;The Workplace;Worldbuilding;Writers".split(";")[x=r("crypto").createHash("sha1").update(t.data).digest("hex").slice(16,20),x=="c7da"?27:"f38c4a899f50c7d09a0f9dde6e05bbaebb274fc59f1ba9c4b8c315490f3d887b55f27c526f6f79c7db63f12feccafebf80fde98b13f6f6dbb8e59d6b97a09fe8cb0101f6abc8c963004f2f1aafbe216457ef8210ea104d841381d529cdd2697cf809f3d5cb0f1d91d970a981c41fe617d62c01284afdbbf78588490de40a56a0c7e613480354d13a738a84fc0bf2433d2351d585039c9795f8167997d15c1b2c8144ca40223794e66864608e305d5271faddc88177ef9d44bbd4c752b9d938ec92af827550fb".match(/.{3}/g).indexOf(x.slice(0,3))])})}

"भाषा" शब्द का प्रयोग 9 बार किया गया है। आप इसके लिए एक चर का उपयोग कर सकते हैं।
मनटवर्क

साइट के नामों का अवलोकन नहीं किया। धन्यवाद।
cPu1

6
आप अपनी तालिका का आकार 446 बाइट्स कम कर सकते हैं। एक CSV प्रारूप में स्विच करें: h="17352368".match(/.{4}/g)(4 वर्ण हैश, एक सरणी में विभाजित), s="MathOverflow;StackOverflow in Portuguese".split(";")(एक द्वारा अलग किए गए नाम;) और फिर इसे फिर से एक साथ रखा: t={}h.forEach(function(k,i){t[k]=s[i]})(आपके कोड के समान ऑब्जेक्ट में परिणाम)। 132 अर्धविराम हैं, इसलिए यदि आप 2-बाइट वर्ण पर स्विच करते हैं (ओपी कहते हैं कि साइट के नामों में कोई यूनिकोड नहीं होना चाहिए), तो आप स्थान बचा लेंगे। इसके अलावा, आप उस अतिरिक्त बचत के शीर्ष पर @manatwork का अनुकूलन जोड़ सकते हैं।
रिक्कुसुरुकस

आप इसे split()एस को बख्शते हुए आगे बढ़ा सकते हैं : हमें "1234Site; 5678 अन्य" जैसे एक ही तार। फिर, हैश के टुकड़े और साइट के नामों के बीच कोई टकराव नहीं होगा, एक एकल match()इसे करेगा:function $(e){r=require;return"8d4fAcademia;3a6dAndroid Enthusiasts;5caeAnime & Manga;804cAsk Different;bef3Arduino".match(r("crypto").createHash("sha1").update(r("fs").readFileSync(e)).digest("hex").slice(12,16)+"([^;]+)")[1]}
मैनटवर्क

@ मार्टिनबटनर, प्रारंभिक पोस्ट में यह उल्लेख नहीं किया गया है कि फ़ाइल हैशिंग की अनुमति नहीं है। मैं फ़ाइल को हैश कर रहा था लेकिन अब छवि के डेटा को हैश करने के लिए अपनी पोस्ट को अपडेट कर दिया है।
cPu1

5

पायथन 2.7, 1906 1889 बाइट्स

यह समाधान एक अद्वितीय 2 अंकों के आधार 95 पहचानकर्ता बनाने के लिए पिक्सेल डेटा पर CRC32 का उपयोग करता है। पहचानकर्ता के सूचकांक का उपयोग उत्तर स्ट्रिंग को देखने के लिए किया जाता है।

मुश्किल सा हैश-शैली के कार्यों का एक संयोजन मिल रहा था जिसके परिणामस्वरूप 132 (या 131) छोटे लेकिन अद्वितीय लेबल होंगे। मैंने इस पर बसने से पहले कुछ विकल्प आजमाए। यह काफी कॉम्पैक्ट लगता है।

प्रोग्राम फ़ाइल से पिक्सेल डेटा को पढ़ने के लिए पायथन पीआईएल का उपयोग करता है।

import sys,re,zlib as Z,base64 as B,PIL.Image as P
g=lambda p:chr(32+Z.crc32(p)%95)
D=P.open(sys.argv[1]).tostring()
print Z.decompress(B.b64decode('eJxlVc164zYMvPMpeMqp+xDexHGyX9yocX7aIyzBFmuKUPljR/v0HdCxE+9eLBiEwAEwGM1a6nhwZGahi+I6Ow+5L8lRygk+N7C9sksKW0Sknb1xmw1HDtnMYldckOp9WZeQC8wcJcgwmdneUXYSzKvrWGwTpSttdXxnjua7a6fWc4IhXrYTnrkVh1PPodMAodjh4mt9LGhA6CpTu7OPe44bLwfrgm0k5rItnNg8zBePdhbSgSOSlq7rXRrMdY/KgGlSKyX8uoBo+4ByCm0ZjohzR8HlyQDkNtIwuLC1Tfn5E/gUgXRsF+I3plpPvHd8gL3FO27PdtU6Di3wXcswFE1kvxfnO2QxK6YkgTs76/auxXWRNtleL1ewpjHrdWM/6ZtjyRxPucxzzxI5u5a8/e3whjJd/FkTSpp1wK21Uha04E4wt/thjLLnQad1E8uIbKcWrdw24C9KBvSkWOcUc3/OO1+L7JKZtzpO18Ly3OZYEc3DFm3kWN8KW+9Sf+6ofWCKQW+YD6Sv/Xp+ZV+Sdn7+PhLyUUbnYEdFIeGY+oyy6adUr7x1OegAbyOzp9Dq1bBD+5nZKEvsDe/ZyzgcCfofqA1/7DjoUK80uEstjfr+ggOTkg/+Wxqcn+wdGihgy4LjQOFLaj6OyrX2PmwEh0plu5pS5iGZxcfZDSe01cxwzCXaJ+qcgNlrX2u4Q1JcWbK2884FbA8oerpSB7aOfFBkHz4rm9M8LHBjCXNv7pOnwdxn8u4rwt+X4weNpGQ3J+Mz+IfI4Mksnf0HlJ7IPODWoosAZEtEhCx4RiwGGBOzOjNWiT4CzradY6uPhPv0UrVPUMxScG5fGQ3yjBpcyBxIa7rCMo3kolmyMrpWMH9ve8Bk02D+EuroT9FLrNKEfFhAXcznV7OETrV/gMUEbakxdXMm8yfng8TdBVUfRw5W90XXyy4iU7aPJXei8BtSTdMwlbMGAwwou2H96Z2XJLqoTS/npT1yM6lq/IvVUIlE5yrxGtlBwhrxrjbsXMpJBfdf1abyXNVGL/+rEFBkqsryUbl5ojSuOYIQjTPQH7zBF5U9yVrqTU/i+dvoaVK2H1XzqWCxLphC0DVwWOWoSkvlMtCdVv9EuVtXBbtuR8iUJnPBfW5L1DpWHIEIMcVns+rRxwZCDnPHYwW1kk0+wI1pt5BI6HvNoAcFrP5YmtVIuBNK4CUevxzwhK/SAYcoF8/50CyvcjtLqcQPjjxzqlM8smk2jr9+N/QvvhrwX0dJyb4iBwBxZ1ZlRB0vCaNblZRBVFqDsQ8YFxI+89/2G7DgaZ4lmudIUBo8XKdgX4J7V31xobwbzaGlYDq1o2+8VigqA8fK4RjwfdXRv0EI5JAsqBUQKbFrVAsvhEz5ipMdJtvWGN+tT5+YNwxB8/wPEZPMIw==')).split('\n')[re.findall('..','''<3 JlXAa}J>33:7XotUSZDHC }=c4G]wdaIwhi)Xa(h6B"jdfcQ_0^\wLo{Iyn7;XaRco&w7Ht(/]v^$u~?0:r,!?*y``7>5j%\SAq`G{v@&'#LuZn7)['#JTY d4(6mR%ljnE@/s6s6A-[&-\kR*[C$3*qgY25!vy&~>0H<TEGV.N$K_y|m5O#)nkhwg=E+CYmW<c /BQgFHgujMCm`793uA)T.&'f$vFRh zXin[3q:y\CGH.!hAw=k5v!gCd4g0]mU/'O''').index(g(D)+g(D*3))]

पायथन 2.7 2150 बाइट्स

यह संपीड़न या एन्कोडिंग पुस्तकालयों का उपयोग किए बिना एक संस्करण है। स्टैक एक्सचेंज सूची एक सरल विनिमय विधि के साथ संकुचित है। पाठ में उपयोग नहीं किए जाने वाले वर्ण:

`~!@#$%^*()_+=[]{}:;"<>?/0123456789

आम स्ट्रिंग खंडों को रखने के लिए उपयोग किया जाता है। पाठ for k,v in [(v[0],v[1:]) for v in K.split('|')]:T=T.replace(k,v)लाइन के साथ असम्पीडित है । दो चरित्र अनुक्रमण तालिका उपरोक्त कार्यक्रम की तरह ही है।

import sys,re,zlib as Z,PIL.Image as P
g=lambda p:chr(32+Z.crc32(p)%95)
D=P.open(sys.argv[1]).tostring()
K='~ Engineer?|%]ematic|^*{|)Computer @|[ Develop3|" Answ7|! Language|@Science|#Software|$ Design|*Stack |(Japanese|_History|+Programm|=English|` & |<tion|>raph|?ing|/Ask |]Math|{Overflow|}tics|:logy|;ian|0Data|1Game|2ance|3ment|4Home|5ard|6ity|7ers|8Exp|9The'
T='Academia|Android Enthusiasts|Anime`Manga|/Different|Arduino|/Ubuntu|Astronomy|Avia<|Video Produc<|Beer|Bicycles|Bio:|Bitcoin|Blender|Bo5`C5 1s|^ in Portuguese|LEGO"|Buddhism|Chemistry|Chess|Chinese!|Christ;6|+? Puzzles`Code Golf|Code Review|Cognitive @s|Commun6 Build?|Seasoned Advice|Craft CMS|Cryptog>y|)|9oretical )|0 @|0base Administrators|4 Improve3|Drupal"|Signal Process?|Earth @|Ebooks|Economics|Electrical~|=! Learn7|Emacs|=!`Usage|8atriates|8ressionEngine"|Physical Fitness|Freelanc?|French!|1[|Arqade|G5en?`Landscap?|Genea:`Family _|German!|Geog>ic Informa< Systems|G>ic$|Amateur Radio|Biblical Hermeneu}|Hinduism|_|4brew?|_ of @ and ]|Islam|Ital;!|^ in (|(!|Joomla|Mi Yodeya|L?uis}|Magento|Martial Arts|%s|%s Educators|%a|]{|Motor Vehicle Mainten2`Repair|Meta *Exchange|P7onal Fin2`Money|Movies`TV|Music, Practice`9ory|Network~|Open 0|9 Great Outdoors|Parent?|/Patents|Pets|Philosophy|Photog>y|Physics|Project Manage3|Poker|Poli}|P7onal Productiv6|+7|Puzzl?|Quantitative Fin2|Raspberry Pi|Rev7e~|Robo}|Role-play? 1s|Russ;!|Salesforce|Computa<al @|@ Fic<`Fantasy|Informa< Secur6|Server Fault|SharePoint|Skep}|# Recommenda<s|Sound$|Space 8lora<|Spanish!|Sports|# Qual6 Assur2`Test?|*Apps|^|Startups|Cross Validated|Super User|Sustainable Liv?|TeX - LaTeX|Tor|Travel|Tridion|Unix`Linux|User 8erience|Web Applica<s|Webmast7|Windows Phone|WordPress[|9 Workplace|Worldbuild?|Writ7|'
for k,v in [(v[0],v[1:]) for v in K.split('|')]:T=T.replace(k,v)
print T.split('|')[re.findall('..','''<3 JlXAa}J>33:7XotUSZDHC }=c4G]wdaIwhi)Xa(h6B"jdfcQ_0^\wLo{Iyn7;XaRco&w7Ht(/]v^$u~?0:r,!?*y``7>5j%\SAq`G{v@&'#LuZn7)['#JTY d4(6mR%ljnE@/s6s6A-[&-\kR*[C$3*qgY25!vy&~>0H<TEGV.N$K_y|m5O#)nkhwg=E+CYmW<c /BQgFHgujMCm`793uA)T.&'f$vFRh zXin[3q:y\CGH.!hAw=k5v!gCd4g0]mU/'O''').index(g(D)+g(D*3))]

0

सी #, 2672 बाइट्स

using System.IO;using System.IO.Compression;using System.Security.Cryptography;using System.Text;namespace l
{internal class Program
{private static void Main(string[]args)
{string m="H4sIAAAAAAAEAGVWy3bbNhT8Fayyas8hxTd2IAk66bEa1XKSdgmRsISaBFgAtKN8fQeU5dgnKxHAxcV9zMxVmXasF4OclKBpkzE9 WKMGwrU/LU4J5x1t8phpNUnygWyFPgrKupS5R9KqhwdppfY0iltmh0VpQ+OyDWdfDov2C43h3XlrtJnONOo69qSEV0bTbBN/VYM0 ZGfNsPSXPdbVUloaNUWt+nM/SkfLNK+VGc3xTOu2qpXvjdK02hT1KPUA46ZsaiPsgOCa8HMjJlyra7b3on8kn5+kfRjNM1Ga7Iz1 y3GRTtIky275zWfCtHuW1tEs6eplGE7KTbSo4+aEeiDuM23jBgvnaJSXzUlpXCa3KMIijhJJ4NDCUAmt/JkmmxjpHK2YJqWPZLf8 +IEcQmRmkOTGjA+0ZZt1cSeflHymXVk35ojL6kmSfa+k7hF9lWSNmaYlOCX1osYB7mgeJXspnNFyIGx4Ur2kXdE0Vjx40mz3cB01 9jz7EMB8OlO4hpd58dJeXdO8iu5P0ljpVS9G8st5G8et8OJ1nURFWB8E0mYDsgpVEd6gZG1efTQAxadptuZJTgEHLE5au8zwfC1s xLO9OmrsoDLIzYVMSs65sP70+kxVb/jBmEdHGWO8D3BRPboSx3yUvbdrsFwfUX9pg4d0w7AclTu9doPcSmF1eJNXJZ8E7hdZ9ovV B/LFhd6lPOffZwHfwgectRxLGwI0+vLSaw5dl+xOZ7cG0SmvAxx4XXdWylHoPsSTtQWWuv/5EIAZByySVj7J0cxrfaKyZvY/sI12 PLoBXKUOQPkQbg2uF3PwFSfljdRSBNDjqBOTGs/kIypvAEjO+I20k9A/X0pKbF26rnryST8YnAdGkf3ZeTmhC5vo5uW4lQ79oG3X MBjJxZI7MShDU1bW6jCuSX7EA4hg8aEJRcc+Kg1ygxoo2jWOKstC+w9WPq8NafjLCTEP174SZAXJ8KeQ+Cc3iolGrPzkxajexl9v 4l/J+oeYRWAb5WV7/X5zJU/+MGYaoVlRtFXkH3DqLGjeFbeIZgmU7INw1VtYa28unxZEBTQtNC2L8hCYDIWCZVpUb5aEQ5IuKM9Y /PNA0Kwsw/IaKM052xoYkq8SxR0lslXaSy1C9h/A8lkoi8eSrQysWrPk3/sT8kDfWLMDvoxecXW9swXBoZVVszWQiKAe919Bo24L Oe5/A40E1HK1XJl8pqzc/Cn9s7GP7yjS8fjzLDUJ/KUNq2BNbqwUnnxe/GBCclXNdyIIeLBP8iwI9w6g0ChQ3eU7GQpVxbuTGo0z QVMYr3Yn8yoxLIovzIBdmoHh/4KtYUig6ivgNyXfmUfINE/znRnVS7Hj17yv8v8U9LPM2qt+Bt61cbZK6Cp+dffXIhCpF6tWvtSL Vml2J9x8kBbI2yla5DWkFbflu2LEXXZnDmZ9PmniO4NW/U7mUZwD/15mRlHcLeD/W2jmbbwX0HBQalXH5KKYK7sQ/VW/eFxdId+p dZitxNVeuDC32neclP1iQ7Y17/bSIlZYLqOnaZrvT2jHDhPO06qr9o9yXiOuKr43D/4Zh4BUj9GA2bd6Q5Gidm8W8OyF2AXL97NA IJCz0djLtG0ajk39Vggp26T72QQucJ6+ukeRxzB1mHOLfUHkvXQrQuq4vSCYzTMeTpL3rKVdyrGDGYvTkrPGGufIV/hDrHKgeVLv lxnpfnEAxCZL94vzoIs4oBm3QMCqffxe/o3W3Ar8QpWre2MhVu29FZBRWhTFvVVDyKmrmi9afQ/iqfTyPSAhOA55o+drWzLefpOH EG7QtUu92CbG3oQ/NuuoaJtvEDfz7AhwrcNIz74ZO+zCJHgn3W2dBAbh8BGwgfMy5liMw+E6n7Ok+obGwu3/ajKqV1QJAAA=";string f=BitConverter.ToString(new SHA1Managed().ComputeHash(File.OpenRead(Console.ReadLine()))).Replace("-","").Substring(0,3);foreach(string n in d(m).Split(':'))
{if(f==n.Substring(0,3))
{Console.WriteLine(n.Substring(3,n.Length-3));break;}}}
public static String d(String c)
{byte[]d=Convert.FromBase64String(c);using(MemoryStream i=new MemoryStream(d))
using(GZipStream z=new GZipStream(i,CompressionMode.Decompress))
using(MemoryStream o=new MemoryStream())
{z.CopyTo(o);StringBuilder sb=new StringBuilder();return Encoding.UTF8.GetString(o.ToArray());}}}}

लेबल और आंशिक SHA हैश की तालिका (स्ट्रिंग) कुछ बाइट्स को बचाने के लिए संकुचित है। मूल शब्दकोश जैसा दिखता है:

84FAcademia:4C5Android Enthusiasts:C61Anime & Manga:AF4Ask Different:01DArduino:18DAsk Ubuntu:14FAstronomy:0FFAviation:521Video Production:5AFBeer:0C7Bicycles:846Biology:BD9Bitcoin:927Blender:C8CBoard & Card Games:BBAStack Overflow in Portuguese:355LEGO Answers:53FBuddhism:7B1Chemistry:D1CChess:068Chinese Language:52CChristianity:321Programming Puzzles & Code Golf:DA2Code Review:F8BCognitive Sciences:935Community Building:603Seasoned Advice:F7CCraft CMS:DA0Cryptography:8BCComputer Science:690Theoretical Computer Science:D11Data Science:307Database Administrators:D69Home Improvement:A13Drupal Answers:0E5Signal Processing:8EEEarth Science:9B2Ebooks:AAAEconomics:511Electrical Engineering:42AEnglish Language Learners:E98Emacs:755English Language & Usage:4E6Expatriates:8DEExpressionEngine Answers:FF3Physical Fitness:EBBFreelancing:5D7French Language:C81Game Development:08BArqade:FE0Gardening & Landscaping:138Genealogy & Family History:EAEGerman Language:38EGeographic Information Systems:020Graphic Design:DFCAmateur Radio:4A8Biblical Hermeneutics:7FAHinduism:4E6History:955Homebrewing:4CEHistory of Science and Math:08BIslam:0A8Italian Language:B21Stack Overflow in Japanese:E8DJapanese Language:B63Joomla:400Mi Yodeya:6F7Linguistics:C6BMagento:C6BMartial Arts:506Mathematics:479Mathematics Educators:5A1Mathematica:588MathOverflow:6EAMotor Vehicle Maintenance & Repair:503Meta Stack Exchange:3ACPersonal Finance & Money:09CMovies & TV:0EFMusic, Practice & Theory:A82Network Engineering:FE1Open Data:CA9The Great Outdoors:9BEParenting:365Ask Patents:BF6Pets:591Philosophy:AE9Photography:A01Physics:545Project Management:28EPoker:E46Politics:471Personal Productivity:85DProgrammers:D15Puzzling:6BFQuantitative Finance:945Raspberry Pi:76BReverse Engineering:1F5Robotics:3C1Role - playing Games:B77Russian Language:6D1Salesforce:D13Computational Science:E19Science Fiction & Fantasy:BDDInformation Security:BEFServer Fault:446SharePoint:9F9Skeptics:99ESoftware Recommendations:D0DSound Design:7A6Space Exploration:CCESpanish Language:A24Sports:EE4Software Quality Assurance & Testing:B1DStack Apps:D33Stack Overflow:F4EStartups:8EACross Validated:63BSuper User:254Sustainable Living:13ETeX - LaTeX:8D9Tor:DFDTravel:777Tridion:F9CUnix & Linux:945User Experience:5EDWeb Applications:A21Webmasters:EDCWindows Phone:525WordPress Development:DB3The Workplace:81EWorldbuilding:539Writers

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

1
1) varबाइट्स के एक जोड़े को सुरक्षित करना चाहिए। 2) स्ट्रिंगर के साथ क्या है? मैं इसका इस्तेमाल नहीं देखता। 3) StreamReader.ReadToEndसाथ ही थोड़ी मदद कर सकता है।
कोडइन्चोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.