छिपे हुए आक्रमण (पुलिस 'थ्रेड)


35

यह एक पहेली है जो लुटेरों के धागे को यहां पाया जा सकता है

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

फिर आप लुटेरों को खोजने के लिए छिपे हुए विलोम के साथ उत्तर के रूप में पहला कार्यक्रम प्रस्तुत करेंगे।

दिखाए गए कार्यक्रम को एक इंजेक्शन फ़ंक्शन को लागू करना चाहिए (अन्यथा यह मौजूद होने के लिए छिपे हुए उत्तर के लिए असंभव होगा)।

यदि आपका उत्तर एक सप्ताह में क्रैक नहीं हुआ है तो आप छिपे हुए उत्तर को प्रकट कर सकते हैं और इसे सुरक्षित मान सकते हैं । सुरक्षित उत्तर लुटेरों द्वारा फटा नहीं जा सकता है और अनिश्चित काल तक फटा रहेगा।

लक्ष्य बाइट्स में सबसे छोटा अन-क्रैक उत्तर बनाना होगा।

उदाहरण

आप निम्न अजगर कार्यक्रम दिखा सकते हैं जो इनपुट में एक जोड़ता है

lambda x:~-x

एक समाधान हो सकता है:

lambda x:-~x

यह एक इनपुट से घटाता है


क्या हमारे पास काल्पनिक / जटिल पूर्णांक हो सकते हैं?
स्टीवी ग्रिफिन

@stewie अगर आप ऐसा संकेत देते हैं तो आप
गेहूं जादूगर

1
क्या वर्णों को अनुमति देने या बाइट्स (उन भाषाओं में अनुमति के रूप में परिभाषित किया गया है, जो एकल-बाइट वर्ण सेट का उपयोग नहीं करते हैं)?

1. " आप तब एक कार्यक्रम प्रस्तुत करेंगे " ऐसा लगता है कि हम यह चुन सकते हैं कि कौन सा पेश करना है, लेकिन वाक्य " बाएं उलटे छिपे हुए " के साथ जारी है , जिसका अर्थ है कि हमें एक विशिष्ट पेश करना है। यह किसका है? 2. यह प्रश्न विशेष रूप से " प्रोग्राम " बताता है और फ़ंक्शन को अनुमति देने के लिए प्रकट नहीं होता है, लेकिन उदाहरण एक प्रोग्राम के बजाय एक फ़ंक्शन है। यह किसका है?
पीटर टेलर

क्या पूंजीकरण मायने रखता है?
कृति लिथोस

जवाबों:


12

अजगर 3, 80 बाइट्स ( फटा )

bhmq = int(input())
print(bhmq ** 2)
(1 or [(sqrt),(specification+of*integerr)])

डोमेन: सकारात्मक पूर्णांक। फ़ंक्शन केवल एक संख्या का वर्ग है। स्टड के लिए इनपुट, स्टडआउट के लिए आउटपुट, साथ ही उलटा फ़ंक्शन में। ध्यान दें कि पायथन यहां तीसरी पंक्ति को अनदेखा करता है, क्योंकि यह वाक्यात्मक रूप से मान्य है और 1 पहले से ही एक सत्य मूल्य है, इसलिए पायथन यह भी नहीं देखता है कि 'या' का सही भाग अच्छी तरह से परिभाषित है या नहीं।

लुटेरों को एक sqrt फ़ंक्शन लिखना चाहिए जो सभी गैर-शून्य वर्गों पर सही काम करेगा, जैसा कि फ्लोटिंग पॉइंट के बिना पूर्णांक मान को प्रिंट करना है (इसलिए इनपुट पर '4' आउटपुट '2' या '2 \ n' होना चाहिए, न कि '2.0' या '2.0 \ n')।


1
मैं यह पसंद है। यह दरार करने के लिए भ्रामक रूप से मुश्किल है
गेहूं जादूगर

3
Ppcg में आपका स्वागत है! अच्छी पहली पोस्ट!
R

1
उस दरार पर कोई बात नहीं, मैंने गड़बड़ कर दी। हालांकि सवाल अभी भी खड़ा है।
orlp

1
मैं 'नहीं' कहूँगा, अगर मुझे वास्तव में चुनौती के नियमों द्वारा यह प्रतिबंध लगाने की अनुमति है।
वुल्फराम


11

अजगर 3, 46 बाइट्स, फटा

lambda x:x*(1999888577766665//844333333222200)

इनपुट दोगुना करता है।


3
पुलिसवालों के लुटेरों में 'पायथन' कैसे काम करता है? क्या हम आपके उत्तर पर हमला करने के लिए एक मनमाना संस्करण चुन सकते हैं?
orlp

ओह, यह अजगर 3 विशेष रूप से, क्षमा करें। तो /फ्लोट डिवीजन है।
लिन

3
ठीक है, आपने अभी-अभी यह साबित किया है कि यह चुनौती मेरे समय के लायक नहीं है। आगे बढ़ते रहना।
mbomb007


11

7 , 9 बाइट्स, क्रैक

यह कार्यक्रम गैर-वर्णों से भरा है, इसलिए यहां एक हेक्सडंप है:

00000000: 2573 dc01 7e13 dcb6 1f                   %s..~....

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

चुनौतियों के साथ एक समस्या यह है कि आप कोड के स्पष्टीकरण नहीं लिखते हैं (दरार करने के लिए इसे कठिन बनाने के लिए)। दूसरी ओर, इसका मतलब यह है कि मुझे यहाँ परेशानी में नहीं जाना है।

मैंने 7 को भाषा के रूप में चुना, क्योंकि विशेष रूप से इसकी संकुचित संकेतन में, यह पढ़ना बहुत कठिन है, और मैं यह नहीं देखता कि यह केवल मुझे ही क्यों होना चाहिए , जिसमें लिखे गए 8-बिट कार्यक्रमों को घूमने की परेशानी में जाना पड़ता है 3-बिट एन्कोडिंग। सौभाग्य!

व्याख्या

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

हम अधिक प्राकृतिक एन्कोडिंग में प्रोग्राम का प्रतिनिधित्व करके शुरू करेंगे। ; हमेशा की तरह, बोल्ड संख्या आदेशों को तुरंत चलाने के (जिनमें से नहीं सब एक कार्यक्रम में प्रदर्शनीय हैं संकेत मिलता है 6और 7कर रहे हैं, लेकिन 2करने के लिए 5, unbolded संख्या उनके भाग निकले समकक्ष (का प्रतिनिधित्व नहीं कर रहे हैं) 0के लिए 5, जो सभी के मूल कार्यक्रम में प्रदर्शनीय हैं, टिप्पणी वह 0बच गया है 6और 1बच गया है 7):

112 7 1 7 34002 77 023 67 13303

7 प्रोग्राम स्रोत में उपलब्ध आदेशों के सेट का मतलब है कि यह मूल रूप से सिर्फ एक शाब्दिक है जो मूल स्टैक का प्रतिनिधित्व करता है (ऐसा कुछ नहीं है जो आप केवल बच गए आदेशों के साथ कर सकते हैं, 6और 7)। तो पहली बात यह है कि एक कार्यक्रम है स्टैक पर सामान का एक गुच्छा धक्का होगा। यहां बताया गया है कि कार्यक्रम के चलने के बाद स्टैक कैसा दिखता है ( |स्टैक तत्वों को अलग करता है, हमेशा की तरह 7 में):

772 | 7 | 34662 | 023 | 73,363

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

73,363 
7       पुश ढेर पर एक खाली तत्व
  3      आउटपुट शीर्ष ढेर तत्व, नीचे तत्व त्यागने
 73      इन के संयुक्त प्रभाव: त्यागने शीर्ष ढेर तत्व
   3     आउटपुट शीर्ष ढेर तत्व, त्यागने नीचे तत्व
    6    शीर्ष ढेर तत्व एस्केप, तो 3 से नीचे के तत्व में जोड़ें
       । शीर्ष स्टैक तत्व का उत्पादन करें, नीचे के तत्व को छोड़ दें

दूसरे शब्दों में, यह ज्यादातर I / O निर्देशों का एक गुच्छा है। आइए इसका विस्तार से विश्लेषण करें:

  • 73को छोड़ देता है 73363ढेर के शीर्ष पर अभी भी बहुत कुछ है।
  • 3आउटपुट 023और डिस्क्राइब करता है 34662। इस प्रकार यह देखा जा सकता है कि 34662एक टिप्पणी है, जिसका उपयोग कार्यक्रम के दूसरे संस्करण में आवश्यक बाइट्स को संग्रहीत करने के लिए किया गया था। 023जब आउटपुट क्या करता है, तो यह I / O प्रारूप 0 (पूर्णांक) का चयन करता है, तो 23एक निर्देश है जो किसी पूर्णांक को इनपुट करने के लिए कार्यान्वयन का अनुरोध करता है (7 में, आप इनपुट को आउटपुट करने वाले विशिष्ट कोड के माध्यम से इनपुट करते हैं)। इनपुट नीचे स्टैक तत्व की प्रतियां बनाकर किया जाता है, उदाहरण के लिए यदि इनपुट पूर्णांक 10 है, तो अगला स्टैक तत्व (वर्तमान में 7) बन जाएगा 7777777777। इस प्रकार, हम दशमलव में उपयोगकर्ता से इनपुट स्वीकार कर रहे हैं, लेकिन इसे यूरीरी के रूप में संग्रहीत किया जा रहा है।
  • 6शीर्ष ढेर तत्व निकल जाता है (के प्रत्येक उदाहरण के बदलते 7करने के लिए 1, यह है कि कैसे की पूरी तरह से मिलकर तार 7रों भाग निकले कर रहे हैं), तो इससे पहले कि ढेर तत्व करने के लिए इसे संलग्न कर देता है ( 772)। तो हमारा डेटा अब कुछ ऐसा है 7721111111111
  • अंत में, 3प्रश्न में स्टैक तत्व को आउटपुट करता है (और एक खाली स्टैक तत्व को पॉप करता है जो डिफ़ॉल्ट प्रारंभिक स्टैक का हिस्सा है)। अपने मूल्य की संख्या निकालकर किया जाता है 1और 7है, और की संख्या को घटाकर 0और 6रों। ( 2बीच में ज्यादातर मामलों में नजरअंदाज कर दिया जाता है; अगर यह स्ट्रिंग के अंत में है, तो इसे नजरअंदाज किए जाने के बजाय एक नई रूपरेखा बन जाएगी, लेकिन PPCG के नियमों की परवाह नहीं है।) इस प्रकार, आउटपुट मूल है। इनपुट प्लस २

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

हम इसे कैसे उल्टा करते हैं? यह 11करने के लिए बदलने का एक सरल मामला है 00, ताकि हम पात्रों को इनपुट करने के लिए तैयार कर रहे हैं जो इसे 2 से कम करते हैं, बजाय 2 से अधिक। 00कार्यक्रम में आगे एक सुविधाजनक रूप से छिपे हुए आठ अष्टक अंक हैं (ताकि अष्टक अंक और बाइट्स एक दूसरे के साथ पंक्तिबद्ध हों), इसलिए हम इसे 11शुरू में ही स्वैप कर सकते हैं ।



साइड नोट: आपको अपने कोड की व्याख्या करने की आवश्यकता नहीं है, लेकिन यह जानना कि आपका कार्यक्रम क्या अच्छा है।
जीबी

@ जीबी: मैंने कार्यक्रम की पूरी व्याख्या दी (जिसमें दरार कैसे काम करती है, इसका स्पष्टीकरण भी शामिल है)।


6

अजगर 2, 83 बाइट्स, फटा

#((()))****+,,---/2289;==oppppppqqqqqw~~
lambda n:pow(n,65537,10998167423251438693)

यह मेरे अन्य उत्तर के समान है। हालांकि, यह 64-बिट RSA का उपयोग करता है, और क्रिप्टोग्राफिक रूप से काफी कमजोर है। यदि आप इस उत्तर को लूट सकते हैं, तो आप सैद्धांतिक रूप से पर्याप्त समय को देखते हुए मेरे दूसरे को भी लूट सकते हैं।



5

पायथन 2, 47 बाइट्स, क्रैक

lambda x:x**2or (iron() and saxifrage.extend())

इस फ़ंक्शन का डोमेन {x is for है x> 0}। यह इसके इनपुट को बढ़ाता है।


nmjcman101 को इच्छित समाधान मिला:

lambda x:sorted(a**2for a in range(x)).index(x)


1
Haha, मेड फंक्शन कॉल से प्यार करें
FlipTack

1
फटा हुआ वह मज़ा था, मैं उस छोड़े गए विपर्यय पर अटक गया जिसे मैंने छोड़ दिया था!
nmjcman101

5

जावास्क्रिप्ट (ईएस 6), 46 बाइट्स, क्रैक

x=>Math.log(x+(+String(t=985921996597669)[5]))

यह फ़ंक्शन वापस आता है ln(x+1)जहां xएक गैर-नकारात्मक संख्या है।

प्रयोग

(x=>Math.log(x+(+String(t=985921996597669)[5])))(5)

नोट: फ़्लोटिंग पॉइंट की प्रकृति के कारण संख्याएँ f(g(x))बिल्कुल बराबर नहीं हो सकती हैं x। उदाहरण:f(g(4))=3.9999999999999996


फटा। यह वास्तव में मजेदार था :-)
ETHproductions


4

प्रसंस्करण .js, 59 बाइट्स, फटा!

float igetuwebaoli(int p){return p*(((17*-4*-3)))+0+0;}//,,

यह फ़ंक्शन इनपुट को 204( 17*-4*-3=204) से गुणा करता है । यह इनपुट के रूप में एक int में लेता है और एक फ्लोट आउटपुट करता है। जैसा कि अपेक्षित था, व्युत्क्रम इनपुट को विभाजित करता है 204

प्रोसेसिंग-जेएस के लिए एक ऑनलाइन दुभाषिया यहां पाया जा सकता है




4

जावास्क्रिप्ट ( ईएस 6), 15 बाइट्स, एमिग्ना द्वारा फटा

t=>(!!0+~~t+~0)

यह फ़ंक्शन देता है n-1


आप इसका परीक्षण कर सकते हैं जैसे:

(t=>(!!0+~~t+~0))(6)

फटा

मेरा इरादा समाधान Emigna की दरार से थोड़ा अलग है:

t=>t+(+!!~~~00)



4

जे , 29 बाइट्स ( मील द्वारा फटा )

5#.[:,(3 5&#:(-$]-)7)#.inv"0]

यह एक क्रिया है जो इनपुट के रूप में एक सकारात्मक पूर्णांक लेता है , और निम्नलिखित कार्य करता है:

  1. 2 और 4 ठिकानों में परिवर्तित करें।
  2. बेस -4 प्रतिनिधित्व को 0 एस के साथ रखें आधार -2 प्रतिनिधित्व के समान लंबाई है।
  3. दो अभ्यावेदन (आधार -2 पहले) को समेटें।
  4. आधार -5 प्रतिनिधित्व के रूप में समाकलन की व्याख्या करें और पूर्णांक में परिवर्तित करें।

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

मेरा समाधान

दरार में तर्क बहुत अधिक है। रैंक संयोजन "कई अलग-अलग स्थानों में फंस सकता है (और मैं इसे अनावश्यक से छुटकारा पाने के लिए उपयोग करता हूं ) 0और 3, क्योंकि यह वास्तव में समाधान में कुछ भी नहीं करता है।

(7-5)#.[:(]-:&#$,)5#.inv"0 3]

मुझे जे समझ में नहीं आता है, लेकिन मेरे प्रयोगों से पता चलता है कि यह वास्तव में आधार 2 और 4 में पूर्णांक लेता है, उनकी लंबाई को समान बनाने के लिए बेस 4 के अंत में शून्य जोड़ता है, और उसके बाद ही संघनित होता है। क्या इन शून्य का इरादा है?
वुल्फराम

@Wolfram शून्य का इरादा है, यही मैंने "एक साथ" कहने की कोशिश की। अन्यथा मुझे नहीं लगता कि यह प्रतिवर्ती होगा।
जर्गब

@Wolfram I ने अधिक स्पष्ट विवरण जोड़ा।
जर्बर्ब


4

प्रसंस्करण (जावा), 59 बाइट्स, सेफ

float igetuwebaoli(int p){return p*(((17*-4*-3)))+0+0;}//,,

यह फ़ंक्शन इनपुट को 204( 17*-4*-3=204) से गुणा करता है । यह इनपुट के रूप में एक int में लेता है और एक फ्लोट आउटपुट करता है। जैसा कि अपेक्षित था, व्युत्क्रम इनपुट को विभाजित करता है 204। नोट: दोनों प्रोग्राम इनपुट के रूप में एक int लेते हैं और एक फ्लोट आउटपुट करते हैं।

यह उत्तर बिल्कुल मेरे अन्य उत्तर के समान है, सिवाय इसके कि मेरा अन्य उत्तर प्रसंस्करण में लिखा था। js। प्रसंस्करण जावा, जावा की कम क्रिया चचेरी बहन से मिलो। आप यहां प्रोसेसिंग.ओआरजी डाउनलोड कर सकते हैं ।

दरार

float ap(int i){return i*pow(blue(get(0,0)),-1);}//++7*4*-3

यह कार्यक्रम तर्क को विभाजित करता है 204। पर कैसे? चलिए फंक्शन के अंदर चलते हैं।

i *                              //multiply i by
         blue( get(0, 0) )       //this (evaluates to 204)
    pow(                  , -1)  //raises to the -1 power (ie its reciprocal)

सरल पर्याप्त है, लेकिन कैसे blue( get(0, 0) )बनता है 204? यह इस सबमिशन का केंद्रबिंदु है। सबसे पहले, get(0,0)पिक्सेल का रंग स्थित होता है (0,0)(विंडो के ऊपरी बाएं कोने में, जो हमेशा प्रसंस्करण स्केच में खुलता है)। अगला, blue()उस पिक्सेल का नीला मान प्राप्त करता है, जो है 204!

इस सबमिशन के साथ आने के लिए, मैंने प्राप्त रंग के विभिन्न गुणों को प्रिंट करके प्रयोग किया get(0,0)। मुझे पता चला है कि लाल, हरे, नीले, अल्फा मान हैं 204, 204, 204और 255क्रमशः। इससे, मैंने इस संख्या के साथ एक सरल ऑपरेशन करने का फैसला किया और इस पद के साथ समाप्त हुआ।


मुझे लगा कि कोटलिन जावा की कम वाचाल चचेरी बहन थी! मैं
मानता हूं

मेरा मानना ​​है कि आपने इसे बनाया है, किसी ने भी आपके पोस्ट को क्रैक नहीं किया है और यह एक सप्ताह हो गया है।
मील

3

जावास्क्रिप्ट (ईएस 6), 63 बाइट्स इल्मरी कारोनेन द्वारा क्रैक किए गए

x=>eval(atob`eCp4KzEvLyAgfXBModLS4TvEn4wp1iys9YRRKC85KLIhNMC=`)

कुछ atobबकवास के लिए समय । यह फ़ंक्शन वापस आता है x*x+1जहां xएक गैर-नकारात्मक संख्या है।

प्रयोग

(x=>eval(atob`eCp4KzEvLyAgfXBModLS4TvEn4wp1iys9YRRKC85KLIhNMC=`))(5)

इरादा

x=>eval(atob`Lyp5fMRwICAgKi9NYXRoLnBvdyh4LTEsMC41KS8veCp4KzE=`)

बड़ी संख्या में संभावित समाधान हैं, लेकिन मैं उम्मीद कर रहा था कि प्रमुख पात्र इस मुश्किल को आसान बनाने के लिए बाइट क्रम से फेंक देंगे। C'est laatob



क्या आपने अभी-अभी अपने चुनौती कोड को इच्छित समाधान के रूप में गलती से रद्द कर दिया है? :)
इल्मरी करोनें

@ इल्मारियारोन धन्यवाद, जो मुझे कॉपी / पेस्ट करना सिखाएगा ... योग्य हाँ सही: P
SLuck49


2

पायथन 2, 225 बाइट्स, Sp3000 द्वारा फटा

#((()))****+,,---/000555666888;==oppppppqqqqqw~~
lambda n:pow(n,65537,9273089718324971160906816222280219512637222672577602579509954532420895497077475973192045191331307498433055746131266769952623190481881511473086869829441397)

इस फ़ंक्शन का डोमेन [0, n) है, जहाँ n ऊपर की बड़ी संख्या है। हां, यह फ़ंक्शन इस डोमेन पर उलटा है। और जब तक मैंने गड़बड़ नहीं की, इस उत्तर को तोड़ना 512 बिट आरएसए को तोड़ना जितना कठिन है।


1
ब्रूट-फोर्सिंग यह ब्रूट-फोर्सिंग आरएसए की तुलना में काफी आसान है, क्योंकि आपके पास पहले से ही निरंतर जरूरत की जरूरत है। दूसरी ओर, व्यवहार में प्रबंधन करने के लिए अभी भी बहुत मुश्किल है।

4
ध्यान रखें कि CnR चुनौतियों में यादृच्छिकता के बारे में एक मेटा पोस्ट है: meta.codegolf.stackexchange.com/questions/10793/…
Kritii Lithos

5
@KritiiLithos मेरे उत्तर में यादृच्छिककरण, हैश या बिल्ट क्रिप्टो कोड नहीं है। यह सचमुच एक मॉड्यूलर घातांक है।
orlp

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


0

जे, 15 बाइट्स

(".&,'10.')#.#:

एक गैर-नकारात्मक पूर्णांक n लेता है , इसे बाइनरी अंकों की सूची में परिवर्तित करता है, और उन अंकों को आधार 10 संख्या के रूप में जोड़ता है।

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

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