BOMB को उजागर करें!


214

आपको सीक्रेट एजेंट की साइडकिक के रूप में आपके तकनीकी ज्ञान के लिए काम पर रखा गया है ताकि यह सुनिश्चित हो सके कि अच्छा आदमी अपना काम कर सके और दुनिया को बचाया जा सके।

यह एक उच्च तनख्वाह और पूरी दुनिया की कृतज्ञता के साथ सेवानिवृत्त होने से पहले आपका अंतिम मिशन है। लेकिन इससे पहले कि आपको ईविल जीनियस की बिग ओवरली बड़े पैमाने पर बीओएमबी को नष्ट करना पड़े (ऐसा लगता है कि दुष्ट प्रतिभा एक स्मार्ट गधा है जो पुनरावर्ती शब्दकोष पसंद करता है)। वैसे भी आप और आपके दोस्त ईविल जीनियस सीक्रेट बेस के बहुत कोर में हैं, BOMB को निरस्त करने के लिए तैयार हैं जो महाद्वीप को मिटा सकते हैं। अपने पिछले मिशन में आप अपने कोड को "PASSWORD_01" करने के लिए निरस्त्रीकरण कोड प्राप्त करने में कामयाब रहे। आप अपने कीबोर्ड को BOMB से कनेक्ट करते हैं, लेकिन जब आप जाने के लिए तैयार होते हैं, तो ईविल जीनियस के गुर्गे गोलियों की बौछार के साथ प्रवेश करते हैं। दुर्भाग्य से इनमें से एक गोली आपके कीबोर्ड पर प्रभाव डालती है। "काम खत्म करते हुए मैं उन d * ckheads को विचलित करता हूँ!" आपका दोस्त कहता है और फिर अपनी बंदूक से फायर करना शुरू कर देता है।

ऐनक

  1. एक प्रोग्राम लिखें जो किसी भी तरह से आउटपुट करता है जिसे आप स्ट्रिंग PASSWORD_01(अपरकेस) चाहते हैं।
  2. चूँकि आपका कीबोर्ड बुलेट से टकरा गया है, आप केवल इन कुंजियों का उपयोग कर सकते हैं:

    1 2 3 4 5

    Q W E R T

    A S D F G

    < > Z X C

    Ctrl Shift Tab Space

    Shiftकुंजी का उपयोग करके , आपका कीबोर्ड आपको इन वर्णों का उपयोग करने की अनुमति देता है:

    ! " · $ %

  3. आपके पास कीबोर्ड और स्क्रीन (उदाहरण के लिए एक माउस) के अलावा कोई अन्य हार्डवेयर नहीं है, न ही आपके कंप्यूटर में लिखे पासवर्ड वाली फाइल।

  4. आपके पास इंटरनेट कनेक्शन नहीं है।

  5. आप मान सकते हैं कि गोलियों के आने से पहले आप दुभाषिया खोल / स्रोत संपादक खोल सकते हैं। दुख की बात यह है कि कीबोर्ड के हिट होने से पहले आपने इसमें कुछ नहीं लिखा है।

  6. आपके पास वर्चुअल कीबोर्ड नहीं है। वास्तव में BOMB में एक TOO_FUNNY डिटेक्टर होता है जो यदि मानक लूपहोल्स का उपयोग करने का प्रयास करता है तो यह विस्फोट कर देगा ।

  7. चूंकि आपका दोस्त सीक्रेट बेस से बचने के लिए जल्द ही खत्म होने की प्रतीक्षा कर रहा है, इसलिए आपको सबसे छोटा कोड संभव लिखना होगा (इसलिए यह और !)।

सौभाग्य क्योंकि गिनती शुरू हो गई है!

मदद मोड: इसके अलावा एक KEY(केवल एक कुंजी जिसे आप कीबोर्ड से चाहते हैं, लेकिन शिफ्ट + की या किसी अन्य संयोजन से नहीं) चमत्कारिक रूप से भी बच गया है। जैसे: आप उपयोग कर सकते हैं =, या ... 0या /यह अतिरिक्त कुंजी अक्षरों में से किसी में भी नहीं हो सकती PASSWORD_01(इसलिए आप जोड़ नहीं सकते Pया O)। उस कुंजी को अपने उत्तर में नाम दें। आपके पास इस कुंजी के उपयोग के लिए 10 वर्णों का दंड है, चाहे आप कितनी बार कुंजी का उपयोग करें।


67
क्या मैं कीबोर्ड के लेआउट को DVORAK में बदल सकता हूं?
n --h'a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

42
क्या हमें कम से कम प्रवेश कुंजी मिलती है?
Οurous

72
व्हॉट्सएप, यहाँ है आपका बड़ा मौका!
जर्मन_गुई

43
पासवर्ड क्यों नहीं किया जा सका है stewardesses?
कोडब्रेकर

24
मजाक जवाब: मैं एक जासूस हूं, मैं अपनी घड़ी में छिपे बैकअप कीबोर्ड पर स्विच करता हूं।
नजल्ल

जवाबों:



136

बैश, विम और डीसी (343)

मैं एक बैश प्रॉम्प्ट पर बैठा हूं जिसे ईविल जीनियस द्वारा कॉन्फ़िगर किया गया है, और निश्चित रूप से वह VISUAL=vimडिफ़ॉल्ट वातावरण में है। edit-and-execute-command( C-x C-e) बैश इनवॉइस के लिए डिफ़ॉल्ट बैश बाइंडिंग का उपयोग करना $VISUALऔर बाहर निकलने पर इसकी बफर सामग्री निष्पादित करेगा ( ZZ)। मैं निम्नलिखित अनुक्रम में टाइप करता हूं (नोट: kbd-मोड सामान्य मोड और नियंत्रण अनुक्रम में जारी किए गए आदेश हैं):

  1. C-xC-e
  2. aबिल्ली <<< 45 C-c4C-aa

    अब विम बफर में सम्‍मिलित है cat<<<49a। जारी है ...

  3. 45 C-c3C-aa

  4. ५४ C-c41C-aa
  5. 55 C-c13C-aa

    अब विम बफर में सम्‍मिलित है cat<<<49a48a95a68a। जारी है ...

  6. 51 C-c31C-aa

  7. 55 C-c24C-aa
  8. 44 C-c43C-aa
  9. 42 C-c41C-aa
  10. 42 C-c41C-aa
  11. ५४ C-c11C-aa
  12. 55 C-c25C-aaए> एस

    अब विम बफर में समाहित है cat<<<49a48a95a68a82a79a87a83a83a65a80a>s

    सम्मिलित करें मोड से बाहर निकलें, सहेजें और बाहर निकलें

  13. C-cZZ

    sफ़ाइल अब एक में शामिल है dcस्क्रिप्ट कि ढेर पर वांछित स्ट्रिंग उत्पन्न करता है, अब हम प्रिंट आदेश जोड़ने की जरूरत है।

  14. C-xC-eaडीसी <<< 55 C-c25C-aaa >> sC-cZZ

    उपरोक्त आदेश को 9 बार दोहराएं।

  15. C-xC-eaडीसी <<< 55 C-c25C-aaa >> sC-cZZ

  16. C-xC-eaडीसी <<< 55 C-c25C-aaa >> sC-cZZ

  17. C-xC-eaडीसी <<< 55 C-c25C-aaa >> sC-cZZ

  18. C-xC-eaडीसी <<< 55 C-c25C-aaa >> sC-cZZ

  19. C-xC-eaडीसी <<< 55 C-c25C-aaa >> sC-cZZ

  20. C-xC-eaडीसी <<< 55 C-c25C-aaa >> sC-cZZ

  21. C-xC-eaडीसी <<< 55 C-c25C-aaa >> sC-cZZ

  22. C-xC-eaडीसी <<< 55 C-c25C-aaa >> sC-cZZ

  23. C-xC-eaडीसी <<< 55 C-c25C-aaa >> sC-cZZ

  24. C-xC-eaबिल्ली <<< f >> s

    डीसी स्क्रिप्ट निष्पादित करें:

  25. C-xC-eaडीसी एसC-cZZ

आउटपुट:

PASSWORD_01

sफ़ाइल की सामग्री :

49a48a95a68a82a79a87a83a83a65a80a
P
P
P
P
P
P
P
P
P
P
f

4
मैं किरदार vimकी वजह से स्क्रिप्ट करने की सोच रहा था Ctrl; इसके साथ जोड़ी बनाने के लिए अच्छी सोच dc! इसके अलावा, उत्कृष्ट समाधान :)
nneonneo

2
आपको उन सभी <kbd> </ kbd> टैग को लिखने में कितना समय लगा?
जस्टफुल

15
@ अन्याय: मैंने इसे <Leader>kइस तरह से बाध्य करके लिखा map <Leader>k i<kbd></kbd>^[F>aथा, इसलिए यह उतना बुरा नहीं था जितना कि यह दिखता है :-)।
थॉर

18
अब यह स्पष्ट है कि एजेंट थोर अपने उपकरण को अच्छी तरह से जानता है। आप संन्यास के लायक हैं, सर!
justhalf

67

रूबी, ५ Rub + १० ( *) = ६।

$*<<4*4*5<<214%135<<44%25*5<<1%1
$><<"%cASSW%cRD%c%d1"%$*

यह उत्तर उपयोग करता है *और %लापता पात्रों के ASCII मूल्यों (और फिक्सनम के रूप में 0) का निर्माण करता है और उन्हें $*( ARGV) में धकेलता है । इस सरणी को सही पासवर्ड उत्पन्न करने के लिए एक प्रारूप स्ट्रिंग के साथ संयोजन में उपयोग किया जाता है, जो कि $><<( $>स्टडआउट) के साथ मुद्रित होता है।

रूबी, 62 + 10 ( .) = 72, कोई लाइनब्रेक नहीं

$>.<< "%cASSW%cRD%c%d1".% %w%%<<311%231<<214%135<<321%113<<1%1

मोटे तौर पर उपरोक्त संस्करण के समान सिद्धांत, सिवाय इसके कि सरणी खाली सरणी से बनाया गया है शाब्दिक ( %w%%)। .वांछित ऑपरेटर पूर्वता प्राप्त करने के लिए कुछ परिश्रम की आवश्यकता होती है।


13
"यह एक उच्च तनख्वाह और पूरी दुनिया की कृतज्ञता के साथ सेवानिवृत्त होने से पहले आपका आखिरी मिशन है।" बधाई हो, हम सभी को धन्यवाद :)
टिमटेक

4
परम प्रमाण है कि पर्ल रूबी की सबसे बड़ी प्रेरणा है।
पियरे अरलाउंड

11
आपने लाइनब्रेक कैसे किया?
सेफेलोपॉड

4
@ एरियन उसी तरह nneonneo REPL में टाइप करने के बाद अपना पायथन कोड चलाता है ... मैं बिना लाइनब्रेक के एक संस्करण जोड़ूंगा।
वेंटरो

क्या दुष्ट प्रतिभा माणिक स्थापित है?
ममद

36

व्हॉट्सएप (148 + 10 = 158)

Enter यहां कुंजी का उपयोग करने की आवश्यकता है।

SS+1010000L // Push code of P
TLSS        // Output character
SS+1000001L // Push code of A
TLSS        // Output character
SS+1010011L // Push code of S
SLS         // Duplicate top stack
TLSS
TLSS
SS+1010111L // Push code of W
TLSS
SS+1001111L // Push code of O
TLSS
SS+1010010L // Push code of R
TLSS
SS+1000100L // Push code of D
TLSS
SS+1011111L // Push code of _
TLSS
SS+0L       // Push 0
TLST        // Output number
SS+1L       // Push 1
TLST        // Output number
LLL         // End program

मेरी धारणा की व्याख्या:

  • S, +, 0रिक्त स्थान हैं।
  • T, 1टैब हैं।
  • L नई लाइन है।
  • // टिप्पणी शुरू करता है।

प्रत्येक पंक्ति व्हॉट्सएप भाषा में एक कमांड है।

डेमो


1
आह यार ... मैं बस उस पर काम कर रहा था :(
तून Pronk

1
मुझे भी, लेकिन मैंने इस बात को छोड़ दिया कि कोई भी व्यक्ति तेज होगा
जर्मन_गुई

मैंने सोचा था कि 'एल' उपलब्ध नहीं था?
500 - आंतरिक सर्वर त्रुटि

@ 500-इंटरनलसेवरर्रर: वास्तव में Lनई लाइन कैरेक्टर के लिए है। वास्तविक कोड के लिए डेमो की जाँच करें। मैंने जो पोस्ट किया है वह एक पठनीय संस्करण है।
n --h'a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

आह, मैं अब समझ गया।
500 - आंतरिक सर्वर त्रुटि

25

पायथन ( 2200 395 + 10)

exec"""exec"exec"+"%ca"%34+"%c52+53"""+"%c55+55"%44+"%c34"%44+"%c45+35"%44+"%c"%44+"""34%%cexec"%"""+"%c"%54+"""1+"%c"%34+"%%5%c+"%5"""+"%c"%55+"""+"%c"%34+"%c"""+"%c"%112+"""r%%c%%ct%%c%%cASSW"+"%c%%34+"%34+"%c%%cRD"%34+"%c%%"""+"%c"%55+""""%34+"%c+"%5"""+"%c"%55+"""+"%c%%c"%34+"%c%%"%34+"%c5+"%5"""+"%c"%55+"""+"%c"%34+"%c1%%c"+"%c%%4"%34+"%c+"%5"""+"%c"%54+"""+"%c"%34+"%c%%a"+"%c%%34"%34"""

मुझे +चरित्र (+10 की लागत) की आवश्यकता थी, जो कि संख्यात्मक (या कुछ महत्वपूर्ण लेआउट पर) से प्राप्त की जा सकती है।

हां, जब मैं टाइप कर रहा था तो BOMB शायद बंद हो गया।

मूल दृष्टिकोण का उपयोग करके execऔर कभी बड़े चरित्र सेट का निर्माण करना है "%c"%(number)execएक दूसरे के अंदर चार s नेस्टेड हैं। धीरे-धीरे, मेरा अंक सेट आगे बढ़ता है

  1. 12345
  2. 1234567 (6 = एएससीआईआई 54, 7 = एएससीआईआई 55)
  3. 123456789 (8 = एएससीआईआई 56, 9 = एएससीआईआई 57)
  4. 0x0123456789abcdef

ताकि अंतिम पुनरावृत्ति में किसी भी चरित्र को व्यक्त करना संभव हो (ताकि अंतरतम संस्करण वास्तव में किसी भी कार्यक्रम को चला सके)।

कार्यक्रम का लगभग 50% केवल उद्धरण वर्ण है ( "%c"%34एक दोहरा उद्धरण है), क्योंकि execबयानों की नेस्टेड प्रकृति आक्रामक तरीके से "भागने" उद्धरण पात्रों की मांग करती है।


यदि आप संख्यात्मक कीपैड से "+" का उपयोग करते हैं, तो आप कीबोर्ड भाषा से स्वतंत्र हैं।
celtschk

@celtschk: अच्छी बात है! मैं उस में संपादित करूँगा।
nneonneo

1
नेस्टेड एग्जिक्यूटर्स के साथ डिजिट सेट बनाने के बजाय, आप अंकगणित का उपयोग करके नंबर प्राप्त नहीं कर सकते थे? पूर्व। exec '%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c'%(112,114,51+54,55+55,1+115,32,4+35,25+55,11+54,31+52,31+52,32+55,24+55,31+51,13+55,41+54,3+45,4+45,4+35)
केविन

2
क्योंकि तुम दोनों पराये नहीं पा सकते। (मैंने इस पर विचार किया!)
nnonneo

इसके अतिरिक्त, पायथन में बहुत सारे ऑपरेटर नहीं हैं जो% से अधिक मजबूती से बांधते हैं। ** एक है, लेकिन अधिकांश शर्तों के निर्माण के लिए यह काफी बेकार है।
nnonneo

25

अनिद्रा 39 35 31 29

यह भाषा तब सामने आती है जब मैं एक ऐसी भाषा की तलाश में था जो एकल ASCII चरित्र के साथ उसके निर्देशों को कूटबद्ध करती हो। भाषा वास्तव में चरित्र के दशमलव ASCII कोड पर काम करती है, इसलिए यह कीबोर्ड के आधे नष्ट होने के साथ अभी भी काफी लचीला है।

इसे नीचे 29 वर्णों तक छोड़ें, जो मेमोरी उपयोग को कम करने के बाद संभव है और खोज स्थान को बढ़ाता है:

FdFzt%dF<rGdt>tt Gtreeet t%4s

मैंने अनुमत पात्रों के पूर्ण सेट पर अपना ट्वीकडेड प्रोग्राम चलाने का निर्णय लिया, और समाधान को 31 वर्णों तक काट दिया:

FdFGt dtreeC>tt FFdx<Fdtr ztq4s

मैंने इस समाधान की खोज के लिए एक कार्यक्रम का उपयोग किया। यह एक ही आकार के साथ, मेरे कार्यक्रम द्वारा लौटाए गए कई समाधानों में से एक है।

Fddx>"eCeezdC>CefCdddzCzzfCqred>r4s

पुराने संस्करण हाथ से निर्मित। मुझे ऐसा करने के लिए सुबह तक रहना याद है।

Fddx>"eCeezdC>Cef>dx"dCezeeedeCrqeeC%4s

यहाँ परीक्षण के लिए अनिद्रा दुभाषिया है।


3
अपनी प्रोग्रामिंग भाषा की पसंद के साथ "सुबह तक रहने" के लिए +1।
जस्टफॉल

20

कुछ विंडो प्रबंधकों पर विम + पीएचपी

44 स्ट्रोक में 65 चाबियाँ, उपयोग करने के लिए 10-बिंदु दंड के साथ =

aEACE<Alt+Tab>z=5<Alt+Tab>$xxxxaASSWRD<Alt+Tab>z=1<Alt+Tab>
$a$aA<Alt+Tab>==wxx$r1<^X>a1

विकार:

  • Alt+TabEscविम के साथ काम करना प्रतीत होता है , या शायद इस टर्मिनल एमुलेटर के साथ। मुझे कुछ नया सिखाने के लिए धन्यवाद!
  • aEACE<Alt+Tab>: एपेंड मोड दर्ज करें और "EACE" डालें। बाहर जाएं।
  • z=5<Alt+Tab>: वर्तनी सुधार करें। 5, "PEACE" का चयन करें। बाहर जाएं। ( यहाँ के Escरूप में काम करने लगता Enterहै!)
  • $xxxxaASSWRD<Alt+Tab>: पंक्ति के अंत में जाएं। 4 वर्ण हटाएं और जोड़ें ASSWRD, जिसके परिणामस्वरूप PASSWRD। वापस सामान्य मोड में। (नहीं,4x काम नहीं करेगा।)
  • z=1<Alt+Tab>: PASSWORDहै शायद इस के लिए पहले सुधार होने जा रहा। इसका चयन करें।
  • $a$aA<Alt+Tab>: पंक्ति के अंत में जाएं, और एक जोड़ें $aA। वापस सामान्य मोड में।
  • ==: PHP की इस लाइन को अच्छी तरह से फॉर्मेट करें, कैमलकेस $aAको बदलकर $a_a। यह कर्सर को लाइन के प्रारंभ में वापस ले जाता है।
  • wxx: एक शब्द आगे बढ़ें; कर्सर अब पहले है $। - दो अक्षर हटाएँ $और aबनाने के लिए - PASSWORD_a
  • $r1: पंक्ति के अंत में जाएं और वर्तमान वर्ण (यानी a) को प्रतिस्थापित करें 1, जिसके परिणामस्वरूप PASSWORD_1
  • ^X: कर्सर के नीचे पूर्णांक घटाना, जिसके परिणामस्वरूप PASSWORD_0
  • a1: अंत में, संलग्न 1, के लिए PASSWORD_01!

मैं ==कमांड को दोहरा नहीं सकता , यह सिर्फ मेरे vi सेटअप में बड़े इंडेंटेशन मोड को जन्म देता है (डेबियन 7, v7.3.547)
Cengiz

11

पायथन 2, 75889 बाइट्स

कोई अतिरिक्त चरित्र नहीं!

दुर्भाग्य से, कोड सुपर लंबा है। तो इसके बजाय, यहाँ प्रोग्राम उत्पन्न करने के लिए कोड है:

x=[2**n for n in xrange(16)]
y=-5
print('exec"""exec'+x[7]*'%'+'c""'+x[6]*'%'+'cr'+x[-2]*'%'+'c'+x[-1]*'%'+'ct'+x[8]*'%'+'c'+x[-4]*'%'+'cASSW'+x[-5]*'%'+'cRD'+x[-3]*'%'+'c'+x[0]*'%'+'s1'+x[10]*'%'+'c '+x[9]*'%'+'c""'+x[y]*'%'+x[1]*'%'+'s'+x[y]*'%'+x[2]*'%'+'s'+x[y]*'%'+x[3]*'%'+'s'+x[y]*'%'+x[4]*'%'+'s'+x[y]*'%'+x[5]*'%'+'s"""'+'%`1>>1`%`2531>>5`%`321>>2`%`1521>>4`%`211>>1`%`221>>1`%112%34%34%34%34')

इसे ऑनलाइन आज़माएं

(कोड को चलाने के लिए, बाहरी को a printमें बदलेंexec । या प्रोग्राम को जनरेट करें, फिर पेस्ट करें और चलाएं। या नीचे दिए गए पास्टिन से कॉपी करें।)

स्पष्टीकरण:

लक्ष्य को क्रियान्वित करना है:

print"PASSWORD_01"

()+वर्णों के उपयोग से बचने के लिए , हमें एक साथ जंजीर के कई स्ट्रिंग प्रारूप संचालन का उपयोग करना होगा। इसका अर्थ है कि प्रत्येक चरण प्रभावी रूप से जोड़ा गया प्रत्येक पिछले चरण के लिए आवश्यक वर्णों की संख्या दोगुनी हो% जाती है:

print"%cASSW%%cRD%%%%c%%%%%%%%c1"%80%79%95%48

हालांकि यह पर्याप्त नहीं है, क्योंकि आवश्यक संख्याओं में से कुछ का निर्माण नहीं किया जा सकता है, और न ही हम बना सकते हैं print। इसलिए हम ing के execलिए अमूर्त के स्तर को जोड़ते printहैं, और ASCII कोड बिंदुओं के लिए एक स्तर जिसे हम प्रारूपित नहीं कर सकते हैं। निम्नलिखित अनिवार्य रूप से मेरा उत्तर है, लेकिन प्रत्येक एक के साथ %कम होने के प्रत्येक स्ट्रिंग के साथ (ध्यान दें कि %s%s%s%s%sएक सटीक प्रतिनिधित्व नहीं है, %प्रत्येक के लिए आवश्यक शाब्दिक के लिए खाते में विफल रहा है ):

exec"""exec%c""%cr%c%ct%c%cASSW%cRD%c%s1%c %c""%s%s%s%s%s""" % `1>>1`%`2531>>5`%`321>>2`%`1521>>4`%`211>>1`%`221>>1`%112%34%34%34%34

पहला कदम: बाह्यतम exec:

exec""" ... ASSW%cRD ... %s%s%s%s%s""" % `1>>1` % `2531>>5` % `321>>2` % `1521>>4` % `211>>1` % `221>>1`
  1. 1>>1: 0, के लिए उपयोग किया जाता 0हैPASSWORD_01
  2. 2531>>5: 79, बनाने के लिए आंतरिक निष्पादन के लिए उपयोग किया जाता हैO
  3. 321>>2: 80, बनाने के लिए आंतरिक निष्पादन के लिए उपयोग किया जाता हैP
  4. 1521>>4: 95, बनाने के लिए आंतरिक निष्पादन के लिए उपयोग किया जाता है_
  5. 211>>1: 105, बनाने के लिए आंतरिक निष्पादन के लिए उपयोग किया जाता हैi
  6. 221>>1: 110, बनाने के लिए आंतरिक निष्पादन के लिए उपयोग किया जाता हैn

दूसरा चरण: इनर तैयार करें exec

उपरोक्त के बाद, आंतरिक execकुछ इस तरह है:

exec%c""%cr%c%ct%c%cASSWORD%c01%c %c""%79%80%95%105%110

सिवाय इसके कि आप काफी नहीं मिलेगा। सरलीकरण फिर भी, आप इसे प्राप्त करेंगे:

exec%c""%cr%c%ct%c%cASSWORD%c01%c %c""798095105110

शाब्दिक %को शामिल करने की आवश्यकता है। इसलिए मूल रूप से मुझे सभी फॉर्मेटिंग के बाद बचे %sहुए शाब्दिक के साथ समाप्त होने से पहले उनमें से एक गुच्छा जोड़ना था %2**11उनमें से। पांच बार।

बाकी बाहरी execस्ट्रिंग प्रारूप संचालन हैं %112%34%34%34%34। के 112लिए है p, और अन्य उद्धरण चिह्न हैं। उन को लागू करने के बाद, परिणाम कुछ इस तरह है:

exec"""pr%c%ct"%cASSW%cRD%c01" """%79%80%95%105%110

लेकिन वास्तव में इसमें गुच्छा अधिक होता है %। यही तो:

exec"""pr%%%%%%%%c%%%%%%%%%%%%%%%%ct"%%cASSW%cRD%%%%c01" """%79%80%95%105%110

अंतिम चरण बस उसे चलाना है, जिसके बाद आपको आवश्यक आउटपुट मिलता है।


यहां पूरा कोड: http://pastebin.com/rSFs6DiH


7
प्रभावशाली! BOMB विस्फोट होने से पहले आपने वह सब टाइप किया? कोई गलती किए बिना (कोई बैकस्पेस कुंजी नहीं)? आप, सर या मैडम, आपकी पेंशन के लायक हैं। ; डी
DLosc

10

बैश + विम (56)

उधार Ctrl-XCtrl-Eथोर के समाधान से बैश चाल है, तो यहां मैं बैश + vim में ऐसा होता है:

C-XC-E डिफ़ॉल्ट संपादक शुरू होता है (आमतौर पर विम)

a इन्सर्ट मोड शुरू करता है

.space ASSW

C-Vx4f आवेषण O

RD

C-Vx5f आवेषण _

1

C-3के बराबर है escape(न सिर्फ विम में, बल्कि एक टर्मिनल में)

C-X1मैं अभी टाइप किया हुआ 1 से घटाता हूँ

a फिर से मोड डालें

1 C-3

बफर सामग्री अब है . ASSWORD_01

<< अनइंडेंट लाइन (नो-ऑप, चूंकि लाइन इंडेंट नहीं है) और कर्सर को 1 कॉलम में ले जाएं

a

C-X शब्द पूरा करना शुरू करें

C-V पूर्व कमान के साथ पूरा करें

C-V 9 अधिक बार प्रविष्टि का चयन करता है Print

C-3 वापस सामान्य मोड में

XXXxx हटाए गए rint 

< < कॉलम 1 पर वापस जाएं

sहटाएं ., इन्सर्ट मोड शुरू करें

e c C-X C-Vपूर्व कमान एक बार फिर से पूरी होने पर, केवल पहले से टाइप किए गए प्रविष्टि echoके कारण ecमुझे चयनित किया गया

space C-3 अब बफर सामग्री echo PASSWORD_01

Z Z बफ़र को बंद करें, vim, bash फ़ाइल सामग्री को निष्पादित करता है, अर्थात echo PASSWORD_01

वैसे: C-3कई उपयोगी भाई है: C-Jहै Enter, C-Iहै Tab, C-Hहै Backspace, C-2है C-@(यानी एक अशक्त-बाइट)। और emacs उपयोगकर्ताओं के लिए यह जानना अच्छा है कि Escapeइसके बाद एक और कुंजी Alt+ उस कुंजी के बराबर है । तो, बिना भी Escapeऔर Altआप अभी भी मेटा-एक्स को इस तरह टाइप कर सकते हैं:C-3x


9

पर्ल, (31 + 10/41 + 10/64 + 10)

( ^कुंजी का इस्तेमाल किया, 3 तरीके)

exec"easswsrdcqw"^"5    <  <AF"                   # exec "PASSWORD_01"

  • यदि सिस्टम कमांड के रूप में चल रहा है तो मान्य "आउटपुट" के रूप में है।

exec"QQZSqeasswsrdcqw"^"422<Q5    <  <AF"         # exec "echo PASSWORD_01"
  • मान्य अगर मुझे बाहरी / ओएस कमांड का उपयोग करने की अनुमति है। (यहां भागो)

exec"EQAXqwQqQZQxqeasswsrdcqwxqq"^q!5434QZ4S534$S5    <  <AF$SS! 
                  # exec "perl -e\"die\\\"PASSWORD_01\\\"\""
  • मान्य अगर मैं सिस्टम के माध्यम से पर्ल निष्पादित कर सकता हूं। (यहां भागो) <- यह एक के printबजाय का उपयोग करता हैdie

स्क्रिप्ट पर्ल के बिटवाइज़ स्ट्रिंग XOR ऑपरेटर का उपयोग करते हैं ^ , जो दो स्ट्रिंग्स के चरित्र बिट्स पर एक XOR करता है। यह मुझे PASSWORD_01 के लिए लापता वर्णों को फिर से बनाने और सिस्टम कमांड के लिए वर्ण बनाने की सुविधा देता है।

मैंने तीन वेरिएंट बनाए, यह इस बात पर निर्भर करता है कि नियम कितने प्रभावी हैं। मुझे लगता है कि चूंकि वेरिएंट 2 और 3 वास्तव में Ideone पर शब्दों का उत्पादन करते हैं, इसलिए समाधान मान्य हैं। मैंने छोटी कहानी को हटा दिया क्योंकि मुझे लगा कि कोई भी इसे नहीं पढ़ेगा, लेकिन अगर आप उत्सुक हैं तो आप इसे संपादन में पढ़ सकते हैं!


4

ऊ कोड (300)

QwerTaSdfGzxCqwertAsDfgZxCQwerTasDfgZxcQweRtaSDfgZxCqwertAsDFgZXcQWeRtaSdFGzxcQwERTasdfGzxc
QwErtAsdFgzxcqWeRtaSdFGzxcQweRtaSDfGZxCqWErTAsDFgZXCqWerTasDfgZxcQweRtaSdfGzxCQwErTAsDFgZXC
qWertAsDfgzxcQwERtASdFGzXcqWeRTasdFGzXcQWeRtAsDfgzxcQwERtASdFGzXCqWerTaSDfgzXcQWErTaSdFgZxc
QwertaSdFgzXcQWertASdFgZXCq

आसान। (लाइनफ़ीड वैकल्पिक हैं, और यहाँ कोड को "अधिक पठनीय" बनाने के लिए) कोड जनरेटर का उपयोग किया जाता है:

o=lambda b,c:"".join(i.upper()if j else i for i,j in zip(__import__('itertools').cycle(c),map(int,"".join((3-len(i))*'0'+i for i in(bin('><[]-+.,'.index(i))[2:]for i in b)))))

कम मूर्खतापूर्ण एन्कोडिंग में समान कोड:

EeeeEeEeeEeeEeeeeeEeEeeEeEEeeeEeeEeeEeeEeeEeeEEeeEeEeeeeeEeEEeEEeEEeEeeEeEEeeeEeEEEeeeeEeee
EeEeeEeeEeeeeeEeEeeEeEEeeeEeeEeeEEeEEeEeEEeEEeEEeEEEeEeeEeeEeeEeeEeeEeeEeeEeeEEeEeEEeEEeEEE
eEeeeEeEeeeeeEeEEeEEeEEeEeeEeEEeeeEEeEeEEeEeEeEeeeeeEeEEeEEeEEeEEeEeeEeEEeeeEeEEEeEeEeEeEee
EeeeeeEeEeeEeEEeeeEEeEeEEEe


3

फेरनंडो, 179 + 10 = 189 बाइट्स

2 1
1 2 1 2 1 1 1 1
1 2 1 1 1 1 1 2
1 2 1 2 1 1 2 2
1 2 1 2 1 1 2 2
1 2 1 2 1 2 2 2
1 2 1 1 2 2 2 2
1 2 1 2 1 1 2 1
1 2 1 1 1 2 1 1
1 2 1 2 2 2 2 2
1 1 2 2 1 1 1 1
1 1 2 2 1 1 1 2

इसे ऑनलाइन आज़माएं!

Enterउपयोग किया गया। मैं उपयोग करूंगा 0और 1कोड को अधिक पठनीय बना सकता हूं लेकिन मैं उपयोग नहीं कर सकता 0


मुझे लगता है कि प्रवेश की अनुमति है।
कॉनर ओ'ब्रायन

2
ओपी ने कहा कि प्रवेश की अनुमति नहीं थी।
एक्रोलिथ

3

जेएस-फोर्थ, 103 बाइट्स

स्ट्रिंग को ढेर पर वर्णों के एक सरणी के रूप में वापस किया जाएगा।

12544 1 3 << >> 24 1 << 1521 4 >> 34 1 << 41 1 << 2531 5 >> 351 2 >> 332 2 >> 32 2 >> 131 1 >> 321 2 >>

इसे ऑनलाइन आज़माएं - टिप्पणी संस्करण


स्पष्टीकरण:

मुझे पहली बार अनुमत शब्दों की सूची मिली । अनिवार्य रूप से, केवल वही चीजें जो मैं उपयोग कर सकता था वे उपयोगी हैं:

  • 12345 संख्यात्मक स्थिरांक
  • << शिफ्ट छोड़ दिया
  • >> दाएं शिफ्ट करें
  • s>f सिंगल को फ्लोट स्टैक करें
  • f>d फ्लोट स्टैक से पॉप डबल
  • fsqrt फ्लोट स्टैक पर वर्गमूल

इसलिए मैं सांख्यिक स्थिरांक, थोड़ा-शिफ्ट उपयोग करते हैं, और एक वर्गमूल गणना का उपयोग कर सकता है निम्नलिखित ( >>बदलता है drop, द्वारा स्थानांतरण 0दूर करने के लिए 0):

s>f fsqrt f>d >>

सौभाग्य से, मुझे हर निरंतर के लिए संभव बिट-शिफ्ट मिला, जो मुझे बनाने की जरूरत थी जो वर्गमूल का उपयोग करने से कम थे। अधिकांश भाग के लिए, मैंने प्रत्येक संख्या को चुकता करके, या यदि उनमें से किसी अंक को अंकित किया है, तो दो की एक बड़ी शक्ति को मुद्रित करके खोजा 6-0। फिर, मुझे एहसास हुआ कि मैं f>dअधिक संभावनाओं को खोजने के लिए सटीक नुकसान का उपयोग कर सकता हूं । (मैं संख्या में जोड़ सकता हूं, लेकिन अभी भी एक ही पूर्णांक वर्गमूल प्राप्त कर सकता हूं।) थोड़ी देर बाद, मैंने स्थिरांक के कुछ, और फिर सभी को खोजने के लिए बिट-शिफ्टिंग का उपयोग करना शुरू कर दिया। >>बिट-शिफ्ट जितना अधिक होगा , उतना ही मैं "मैजिक नंबर" को जोड़ सकता हूं और अभी भी एक ही परिणाम प्राप्त कर सकता हूं। इसलिए मुझे आवश्यक परिणाम प्राप्त करने के लिए सबसे छोटी बिट-शिफ्ट का उपयोग किया गया। यहां तक ​​कि नंबर भी कभी-कभी उपयोग कर सकते हैं <<, बाधाओं का उपयोग करना था >>

टिप्पणी कोड ( \एक टिप्पणी शुरू):

\ 49
12544 1 3 << >>

\ 48
24 1 <<

\ 95
1521 4 >>

\ 68
34 1 <<

\ 82
41 1 <<

\ 79
2531 5 >>

\ 87
351 2 >>

\ 83 (x2)
332 2 >> 332 2 >>

\ 65
131 1 >>

\ 80
321 2 >>

gForth में शब्द नहीं हैं <<या >>। इसके बजाय यह है lshiftऔर rshift, जो मैं उपयोग नहीं कर सकता


3

दशमलव , 190 180 + 10 = 190 बाइट्स

12055D12025D41D301212055D12010D41D301212055D12025D41D12003D41D30130112004D41D301212055D12024D41D30112003D41D301212055D12013D41D301212055D12040D41D301212045D12003D41D30112001D41D301

इसे ऑनलाइन आज़माएं! दशांश एक गूढ़ भाषा है जो दशमलव और अक्षर के अलावा कुछ भी नहीं का उपयोग करता है D। हालांकि, मुझे +10 दंड की आवश्यकता थी क्योंकि लगभग हर कमांड का उपयोग होता है 0

सौभाग्य से, प्रिंट करने के लिए आवश्यक सभी कमांडों को PASSWORD_01किसी भी संख्या की आवश्यकता नहीं है 6:

  • 12...D - एक चरित्र को धक्का
  • 2 - एक मूल्य पॉप
  • 41D - पॉप शीर्ष दो स्टैक मान, गुणा और धक्का परिणाम
  • 301 - प्रिंट डीएसआई (डिफ़ॉल्ट स्टैक इंडेक्स)

चरित्र मानों को बार-बार धकेलने से जो केवल 5 के माध्यम से अंक 1 का उपयोग करते हैं, फिर उन्हें जोड़कर, मैं प्रत्येक अक्षर के लिए वर्ण मान बना सकता हूं PASSWORD_01

असंबद्ध और टिप्पणी:

12055D     ; push char 55 to stack
12025D     ; push char 25 to stack
41D        ; pop [DSI] and [DSI-1], add and push result
3012       ; print from stack to output, pop
12055D     ; push char 55 to stack
12010D     ; push char 10 to stack
41D        ; pop top two stack values, add and push result
3012       ; print from stack to output, pop
12055D     ; push char 55 to stack
12025D     ; push char 25 to stack
41D        ; pop x2, add, push
12003D     ; push char 3 to stack
41D        ; pop x2, add, push
301301     ; print, print
12004D     ; push char 4 to stack
41D        ; pop x2, add, push
3012       ; print, pop
12055D     ; push char 55 to stack
12024D     ; push char 24 to stack
41D        ; pop x2, add, push
301        ; print
12003D     ; push char 4 to stack
41D        ; pop x2, add, push
3012       ; print, pop
12055D     ; push char 55 to stack
12013D     ; push char 13 to stack
41D        ; pop x2, add, push
3012       ; print, pop
12055D     ; push char 55 to stack
12040D     ; push char 40 to stack
41D        ; pop x2, add, push
3012       ; print, pop
12045D     ; push char 45 to stack
12003D     ; push char 3 to stack
41D        ; pop x2, add, push
301        ; print
12001D     ; push char 1 to stack
41D        ; pop x2, add, push
301        ; print

3

व्हॉट्सएप , स्कोर: 111 (101 बाइट + 10 Enter)

[S S T  T   T   T   T   T   N
_Push_-31_1][S S T  T   S S S S S N
_Push_-32_0][S S S T    T   T   T   N
_Push_15__][S S T   T   T   S S N
_Push_-12_D][S S S T    S N
_Push_2_R][S S T    T   N
_Push_-1_O][S S S T T   T   N
_Push_7_W][S S S T  T   N
_Push_3_S][S N
S _Duplicate_3_S][S S T T   T   T   T   N
_Push_-15_A][S S S N
_Push_0_P][N
S S N
_Create_Label_LOOP][S S S T S T S S S S N
_Push_80][T S S S _Add][T   N
S S _Output_as_character][N
S N
N
_Jump_to_Label_LOOP]

पत्र S(स्थान), T(टैब), और N(नई-पंक्ति) केवल हाइलाइटिंग के रूप में जोड़े गए।
[..._some_action]केवल स्पष्टीकरण के रूप में जोड़ा गया।

इसे ऑनलाइन आज़माएं (केवल कच्चे स्थानों, टैब और नई-लाइनों के साथ)।

छद्म कोड में स्पष्टीकरण:

यह समाधान मौजूदा व्हाट्सएप उत्तर ( @ ñ̷͉h̷̭̿a̸̡̅ẗ̵̨́h̷̰̀ĥ̷̳d̷̰̀ĥ̷̳) की तुलना में छोटा है , जब मैंने इस व्हॉट्सएप टिप का उपयोग करके इसे एक अलग उत्तर के रूप में पोस्ट करने के लिए कहा था जब मैंने इसे गोल्फ के रूप में सुझाया था ।

Push the code-points for the characters of "10_DROWSSAP" minus constant 80 to the stack
Start LOOP:
  Add 80 to the current code-point
  Pop and output it as character
  Go to the next iteration of LOOP

निरंतर 80के साथ तैयार की गई है यह जावा प्रोग्राम है, जो मैं बना लिया है और मेरा कुछ पिछले व्हाइटस्पेस जवाब के लिए उपयोग किया है।


2

स्टैक्स , 91 + 10 बाइट्स

"W"EEEd$"$"1 !$Re]"$""ASSW"R"$""a"EEE$"$"a$Re]R"$""RD"R"$""a"EEEd$"$""5"Re]R"$"1 !$R"$""1"R

इसे ऑनलाइन आज़माएं!

उपयोग ] बनाने के लिए है।

व्याख्या

आइए देखें कि सामान्य उपयोग किए बिना "P"कैसे उत्पन्न होता है और कैसे "ASSW"जोड़ा जाता है +

"W"                             Push "W", or [87]
   E                            Convert to a scalar, 87
    E                           Convert to an array of digits, [8,7]
     E                          Push 8 on the stack, then push 7.
      d                         Pop the 7 and discard it.

                                Start making components of regex substitution
       $                        Pop 8, push "8"
        "$"                     Push "$"
           1 !                  Push 0. The space is necessary because normally one doesn't do 1! to obtain 0
              $                 Pop 0, push "0"
               R                Do regex substitution 's/$/0/g' on the string "8"

                                Basically doing "8"+"0" without using +
                e               Pop "80", push 80
                 ]              Singleton. Pop 80, push [80], or "P"
                  "$""ASSW"R    Use the same trick again to append "ASSW" to "P"

बाकी बस एक ही चाल को दोहरा रहे हैं।

"a"EEE$"$"a$Re]R के अंकों को स्वैप करता है "a" या [97]बनाने के लिए [79]या "O"और स्ट्रिंग के लिए यह जोड़ता है।

"$""RD"R appends "RD"

"$""a"EEEd$"$""5"Re]Rका उपयोग करता है और "a"प्राप्त करने के लिए फिर से , तो एक शाब्दिक के साथ जोड़ती है"9""7""9""5" है [95]या "_", और इसे स्ट्रिंग में जोड़ता है।

"$"1 !$R 1 के तार्किक नहीं द्वारा एक शून्य प्राप्त करता है और इसे स्ट्रिंग में जोड़ता है।

"$""1"Rफाइनल करता है "1"और हम कर रहे हैं।

निहित उत्पादन।


1
O_O ... यह चतुर है।
पुनरावर्ती

अपकी प्रशंसा के लिए धन्यवाद। मेरा मानना ​​है कि इसे कम किया जा सकता है (शायद एक अलग कुंजी चुनकर?)।
वीजुन झोउ

2

ब्रेनफक , 400 + 10 ( +) = 410 बाइट्स

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.<.>>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..++++.<<++++++++++++++.+++.>>>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.<++++++++.>>>>++++++++++++++++++++++++++++++++++++++++++++++++.+.<

इसे ऑनलाइन आज़माएं!


2

MS-DOS .COM 8086 मशीन कोड (72 बाइट्स)

समय कीमती है, इसलिए कंपाइलर्स या दुभाषियों के साथ बिलकुल भी समय नहीं है! बस अपनी पसंद का टेक्स्ट एडिटर खोलें और निम्नलिखित में टाइप करें ( \tTAB से बदलें ):

451D<1DAQX1D11D3AQX4c1DDQX4<SZ!Gq\tGq3WqEEEEESX5\t\t2!<<<<<<<<<eASSWzRD<11$

हेक्सडम्प के रूप में:

00000000 : 34 35 31 44 3C 31 44 41 51 58 31 44 31 31 44 33 : 451D<1DAQX1D11D3
00000010 : 41 51 58 34 63 31 44 44 51 58 34 3C 53 5A 21 47 : AQX4c1DDQX4<SZ!G
00000020 : 71 09 47 71 33 57 71 45 45 45 45 45 53 58 35 09 : q.Gq3WqEEEEESX5.
00000030 : 09 32 21 3C 3C 3C 3C 3C 3C 3C 3C 3C 65 41 53 53 : .2!<<<<<<<<<eASS
00000040 : 57 7A 52 44 3C 31 31 24                         : WzRD<11$

एक .COM फ़ाइल के रूप में सहेजें और दिन को बचाने के लिए इसे चलाएं।

कोड रजिस्टरों के लिए कुछ शुरुआती मूल्यों को मानता है , इसलिए सभी डॉस फ्लेवर के लिए काम नहीं कर सकता है। बस उम्मीद है कि किसी ने नहीं द्वारा निकाल दिया जा जोखिम में डाला आईबीएम खरीदकर ।

थोड़ा अधिक समझने योग्य प्रतिनिधित्व:

org 0x100
bits 16
cpu 8086

; Assumes the following start values for registers (as per http://www.fysnet.net/yourhelp.htm):
;
;   AX = 0
;   BX = 0
;   CX = 0x00ff
;   SI = 0x100

; Change e => P and z => O
    xor al, 0x35
    xor [si+0x3c], ax
    xor [si+0x41], ax

; Fix int 0x21 and ret
    push cx
    pop ax              ; AX = 0xFF
    xor [si+0x31], ax
    xor [si+0x33], ax

; Change <1 => _0
    inc cx              ; CX = 0x100
    push cx
    pop ax              ; AX = 0x100
    xor al, 0x63        ; AX = 0x163
    xor [si+0x44], ax

; We're using DOS interrupt 0x21, function 0x09 to output the final string.

; AH must equal 0x09 to select the function.
; DS:DX must point to the $-terminated string we want to output.

; Get DX to the correct value (0x13c)
    push cx
    pop ax              ; AX = 0x100
    xor al, 0x3c        ; AX = 0x13c
    push bx
    pop dx              ; DX = 0

; We use part of the Program Segment Prefix to temporarily store the value,
; since MOVing or PUSHing AX is impossible.
; The part in question is the second File Control Block, which we will not use anyway.
    and [bx+0x71], ax
    or [bx+0x71], ax
    xor dx, [bx+0x71]   ; DX = 0x13c

; NOPs to get int 0x21 and ret on high enough addresses
    inc bp
    inc bp
    inc bp
    inc bp
    inc bp

; Set AH to the correct value. AL is set too, but is ignored by the DOS interrupt.
    push bx
    pop ax              ; AX = 0
    xor ax, 0x0909      ; AX = 0x0909

; What will become instructions int 0x21 and ret
    db 0x32, 0x21
    db 0x3c

; Padding to have the password at an address we can refer to.
    times 60-($-$$) db '<'

; Password
    pw  db  "eASSWzRD<11$"

1

Befunge-98, 43 +10 = 53 बाइट्स

"1qA·DR·WSSA·g"%,$,,,,$"s"%,,,$"c"%,%,,q

इसे ऑनलाइन आज़माएं!

10 बाइट पेनल्टी ,कुंजी के उपयोग के लिए है (यह सुनिश्चित नहीं है कि इसे Shift+ के साथ पूरा क्यों नहीं किया जा सकता है <, लेकिन यह नियम लगता है)। और यद्यपि स्रोत तकनीकी रूप से 40 वर्ण का है, तीनों ·वर्ण अपने UTF-8 एन्कोडिंग के कारण अतिरिक्त तीन बाइट्स का योगदान करते हैं।


1

05AB1E , 87 86 बाइट्स

"."A1.$R24.$AT<.$R15>.$A21<.$R5.$.V.VD21s.V.V15>X.V"ASSW"15X.V"RD"122D<s2X.V.VTRTX.V.V

इसे ऑनलाइन आज़माएं!

शायद अब तक का सबसे लंबा 05AB1E कोड?

दुर्भाग्य से भाषा जैसी चीजों का समर्थन नहीं करती है "Q"< "डी प्राप्त करने के लिए वेतन वृद्धि क्यू"

मेरी अतिरिक्त कुंजी वी है।

-1 बाइट के लिए @ केविन क्रूज़सेन को धन्यवाद।

कोड:

Build the string ".b". This is the code to turn integers to upper case letters:
"."             push "."
A               push the lower case alphabet
1.$             drop the first letter of that
R               reverse the remaining string 
24.$            drop the first 24 letters of that, so only "b" remains
AT<.$R15>.$     do the same trick for "j"
A21<.$R5.$      and for "u" 
.V              run "u" as code to turn "j" to "J"
.V              run "J" as code, to join ".", "b" to ".b"

Save that string for later use:
D               duplicate
21              push 21
s               switch the top two elements [".b", 21, ".b"]
.V              run ".b" as code, to get "U"
.V              run "U" as code, to save ".b" in X

Build password string:
15>X.V          push the 16th letter of the alphabet ("P")
"ASSW"          push "ASSW"
15X.V           push "O"
"RD"            push "RD"
122D<s2X.V      push 121, 122, "B"
.V              run that as code to push "_"
TR              push 01
TX.V            push "J"
.V              run that as code, to join everything to the desired string 

तुलना के लिए: "PASSWORD_01" प्रिंट करने का सबसे छोटा तरीका 6 बाइट्स लंबा है

इसे ऑनलाइन आज़माएं!


" शायद अब तक का सबसे लंबा 05AB1E कोड? " नहीं, यह मेरा एक बड़ा लगभग 6 गुना है । ; पी अच्छा जवाब की परवाह किए बिना। अनुमत ASCII वर्ण की केवल एक निश्चित राशि का उपयोग करना कठिन है। इतने सुविधाजनक बिल्डरों को इस चुनौती के लिए अनुमति नहीं है। :(
केविन क्रूज़सेन

1
आउटपुट के भाग के TRबजाय का उपयोग करके -1 बाइट । 1<101
केविन क्रूज़सेन

1

एमएसीएस, 26 बाइट्स (संभवतः + 10 = 36, या - 2 = 24)

इस उत्तर में आवश्यक अतिरिक्त कुंजी है Esc। यह कीबोर्ड के आधे हिस्से पर है जो अभी भी बरकरार है, लेकिन किसी कारण से प्रश्न में उल्लेख नहीं किया गया है, इसलिए स्कोर को जुर्माना दे भी सकता है और नहीं भी। ( Escऔर AltEmacs में समतुल्य है; Altयह कीबोर्ड के अक्षुण्ण आधे हिस्से पर भी है , लेकिन प्रश्न में इसका उल्लेख नहीं किया गया है, लेकिन इसे टैप करने के बजाय आयोजित किया जाना है, इसलिए मैं इसे अपनी अतिरिक्त कुंजी के रूप में उपयोग नहीं कर सकता। यह दो बाइट्स बचाएगा। , हालांकि, क्योंकि इसकी तुलना में कम एन्कोडिंग Escहै।)

कार्यक्रम ही (कॉमास ऑन-द-वायर प्रारूप में बाइट्स के बीच की सीमाओं का परिसीमन करता है, जिसे Emacs अपने इनपुट को स्वीकार करने के लिए उपयोग करता है):

W, S, Esc, $, D, A, Ctrl- T, S, R, W, D, Esc, $, 5, Ctrl- Q, 5, f, Ctrl- X, r, Ctrl- Space, 1, Ctrl- X, r, g, 1, Ctrl-T

बाइट गिनती साबित करने के लिए इसे कच्चे बाइट्स के रूप में एनकोडिंग:

00000000: 5753 1b24 4441 1453 5257 441b 2435 1135  WS.$DA.SRWD.$5.5
00000010: 6618 7200 3118 7267 3114                 f.r.1.rg1.

(नोट: कुछ विवरण एमएसीएस कैसे कॉन्फ़िगर किए गए हैं, इसके आधार पर भिन्न हो सकते हैं; इस उत्तर के लिए उद्धृत-चार-मूलांक की आवश्यकता होती है 16 को सेट करने की , और Emacs के लिए मेरे ब्रिटिश अंग्रेजी प्रणाली पर डिफ़ॉल्ट वर्तनी शब्दकोश का उपयोग करने के लिए। ये दोनों लगते हैं। उचित कॉन्फ़िगरेशन सेटिंग्स की तरह, लेकिन यह संभव है कि आपकी Emacs की प्रति को अलग तरीके से कॉन्फ़िगर किया जा सकता है। एक अलग शब्दकोश की संभावना अभी भी एक 26-बाइट प्रोग्राम दे सकती है, लेकिन थोड़ा अलग मिसाइलों का उपयोग करने की आवश्यकता हो सकती है ताकि हम जो सुधार चाहते थे उसे स्वीकार नहीं किया जा सके। गैर-बुलेट-राइडेड कीज़।)

व्याख्या

मुझे यकीन नहीं है कि संपादक के युद्धों पर इसका कोई प्रभाव होना चाहिए, लेकिन Emacs इस प्रश्न के मामले में कम से कम विम को हराते हैं। Emacs बाइट्स में मापा जाने वाले एडिटर गोल्फ के लिए बहुत अनुकूल है, क्योंकि यह जीवा पर बहुत निर्भर करता है, जो कई कीप्स लेता है लेकिन केवल एक बाइट (इस प्रकार Emacs प्रोग्राम अक्सर बराबर Vim प्रोग्राम की तुलना में टाइप करने के लिए धीमा होता है, लेकिन डिस्क से छोटा होता है)। इसके अतिरिक्त, सबसे महत्वपूर्ण Emacs कमांड कीबोर्ड के निचले-बाएँ कोने में होते हैं Ctrl, जो इस तरह के एक प्रश्न के साथ, बहुत करीब होने के लिए सहायक होते हैं।

"आप मान सकते हैं कि गोलियों के आने से पहले आप दुभाषिया खोल / स्रोत संपादक खोल सकते हैं। दुख की बात यह है कि कीबोर्ड के हिट होने से पहले आपने इसमें कुछ भी नहीं लिखा है।", इसलिए मैं मान रहा हूं कि हमारे पास Emacs में एक खाली फ़ाइल खुली है। इसमें पासवर्ड टाइप करना होगा। (हमें बाद में फ़ाइल को सहेजना होगा, और संभवतया Emacs से बाहर निकलना होगा, लेकिन इसके लिए बाइट्स को अन्य लोगों के उत्तरों में नहीं गिना जा सकता है, इसलिए मैं उन्हें यहां भी नहीं गिन रहा हूं। यह बाएं हाथ की ओर का उपयोग करके पूरी तरह से उचित है। कीबोर्ड, हालांकि, Ctrl- X, Ctrl- S, Ctrl- X, Ctrl- C)

इसे एक बार में एक कमांड (या समान कमांड के ब्लॉक) लेना:

  • W, S: दर्ज WSदस्तावेज़ में।
  • Esc, $: वर्तनी-जांचकर्ता आह्वान। WSएक वास्तविक शब्द नहीं है, लेकिन यह दो समान अक्षरों के बहुत सारे शब्द पाता है।
  • D: वर्तनी जाँचक का उपयोग करना, सही WSकरना PS। (जब वर्तनी जाँचक का उपयोग किया जाता है Alt- $जैसा कि यहाँ हुआ ( Escऔर AltEmacs के समतुल्य है), यह केवल एक शब्द की जाँच करता है, इसलिए यह ऐसा करने के बाद निष्क्रिय हो जाता है।)
  • A: डालना A, देना PSA
  • Ctrl- - Tपिछले दो अक्षर स्वैप करें, दे रहे हैं PAS
  • S, R , W, D: प्रकार SRWD, दे PASSRWD
  • Esc, $,5 : हम वर्तनी-जांचकर्ता फिर से आह्वान, क्योंकि हम अपने गलत वर्तनी सही करने के लिए चाहते हैं PASSRWDमें PASSWORD। ध्यान दें कि हम यह अनुमान नहीं लगा सकते हैं कि हम अपनी पहली कोशिश पर जैसा चाहते हैं, वैसा ही होगा PASSWRD, क्योंकि निकटतम वास्तविक शब्द को स्वीकार करने की कुंजी वह है 0जिसे हम दबा नहीं सकते। नतीजतन, PASSRWDहम जिस स्थिति में चाहते हैं, उस शब्द को धकेलने के लिए थोड़ा और चरम अतिवाद का उपयोग किया जाता है, जहाँ हम इसे स्वीकार कर सकते हैं।
  • Ctrl-Q , 5, f: चरित्र कोड U + 5F, यानी साथ वर्ण सम्मिलित _। दस्तावेज़ अब पढ़ता है PASSWORD_(या जब हम अगली कमांड टाइप करना शुरू करेंगे, तब से पहले, अंडरस्कोर दिखाई नहीं देता मामले में हम एक और हेक्स अंक टाइप करते हैं)।
  • Ctrl- X,r , Ctrl- Space, 1: रजिस्टर 1 में वर्तमान कर्सर स्थिति (फ़ाइल की शुरुआत के सापेक्ष) स्टोर कुछ विचित्र कारण से, इस, 1 अनुक्रमित तो (9 पात्रों अब तक लिखा था) कर्सर की स्थिति में है 10
  • Ctrl- X,r , g, 1: दस्तावेज़ में रजिस्टर 1 की सामग्री को कॉपी करें। यह अब पढ़ता है PASSWORD_10
  • Ctrl- - Tकर्सर से पहले दो अक्षर स्वैप करें। हमारे पास अब है PASSWORD_01, जैसे सवाल पूछता है।

यदि हमें उपयोग करने की अनुमति दी जाती है Alt, तो हम संभवतः "इनवॉइस स्पेलचैकर" कमांड को सिंगल बाइट के रूप में एनकोड कर सकते हैं , a4बजाए बाहर वर्तनी के 1b 24; यह दो बार दिखाई देता है, जिससे बचत के दो बाइट्स होते हैं। (अधिकांश आधुनिक टर्मिनलों का उपयोग1b 24 के लिए एन्कोडिंग के रूप में Alt- $UTF-8 के साथ हुई मुठभेड़ से बचने के लिए, लेकिन a4एन्कोडिंग भी समय-समय पर, कभी कभी एक विन्यास विकल्प के रूप में उपलब्ध से सामना करना पड़ा है।)

संभव बाइट बचत संभवतया सही करने के लिए गोल्फर मिसपेलिंग शामिल है। PSASWRDटाइप करने के लिए एक बाइट होगी, लेकिन दुर्भाग्य से, स्पेलसेचर PASSWORDउस से बाहर निकलने में सक्षम नहीं लगता है, इसलिए PASSRWDमैंने अब तक पाया सबसे अच्छा तरीका है। पाने के लिए रजिस्टर-आधारित दृष्टिकोण 10भी हास्यास्पद है, लेकिन Emacs में कहीं से संख्या बनाने के कई तरीके नहीं हैं, और )।0 अन्यथा पकड़ पाने के लिए एक दर्दनाक चरित्र है। (कम से कम आश्चर्यजनक रूप से उपयोगी संयोगों के एक जोड़े थे: कर्सर सिर्फ स्थिति को समाप्त करने के लिए हो रहा है 10, जिसमें 0आवश्यक होने पर एक सही शामिल है , और तथ्य यह है कि Emacs gदस्तावेज़ में एक रजिस्टर की सामग्री को सम्मिलित करने के लिए अनावश्यक रजिस्टर ऑपरेशन को स्वीकार करता है। , अधिक सहज के अलावाi

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.