पुलिस और लुटेरों की हार्डकोडिंग (पुलिस)


28

यह एक चुनौती है। लुटेरों का धागा यहीं है

निम्नलिखित के बारे में सोचने के लिए एक दिलचस्प सवाल है:

यदि मेरे पास संख्याओं का एक क्रम है, तो उनमें से कितने को मुझे प्रदान करना है इससे पहले कि यह स्पष्ट हो कि मैं किस क्रम की बात कर रहा हूँ?

उदाहरण के लिए अगर मैं से शुरू होने वाले सकारात्मक पूर्णांक के बारे में बात करना चाहता हूं 1, तो मैं कह सकता हूं 1,2,3,, लेकिन क्या यह वास्तव में पर्याप्त है?

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

चुनौती

यह चुनौती एक चुनौती है। जिसमें पुलिस परीक्षण-मामलों को पेश करेगी और लुटेरों को इच्छित अनुक्रम के अलावा परीक्षण-मामलों को बिगाड़ने के लिए एक छोटा रास्ता खोजना होगा। पुलिस निम्नलिखित बातें प्रस्तुत करेगी:

  • कोड का एक टुकड़ा जो इनपुट के रूप में एक गैर-नकारात्मक पूर्णांक लेता है और आउटपुट के रूप में पूर्णांक बनाता है। यह कोड आपके अनुक्रम को परिभाषित करेगा। आपके कोड को इनपुट के रूप में 0 का समर्थन करने की आवश्यकता नहीं है, इसके बजाय 1 को सबसे छोटे इनपुट के रूप में लेना है। यह स्पष्ट होना चाहिए कि क्या आपके उत्तर में ऐसा है।

  • किसी भी प्रासंगिक प्लेटफ़ॉर्म या भाषा की आवश्यकताएं जो आउटपुट को प्रभावित कर सकती हैं, उदाहरण के लिए लॉन्गिंट का आकार।

  • कोड द्वारा गणना के अनुसार अनुक्रम की पहली n शर्तों के साथ एक संख्या । ये "परीक्षण-मामलों" के रूप में कार्य करेंगे।nn

आपको यह समझाने के लिए प्रोत्साहित किया जाता है कि आपका अनुक्रम क्या करता है और मौजूद होने पर OEIS लिंक करता है, हालांकि यह आपका कोड है जो अनुक्रम को परिभाषित करता है विवरण नहीं।

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

पुलिस को सबमिट करने से पहले अपने स्वयं के उत्तरों को क्रैक करने में सक्षम होना चाहिए।

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

स्कोरिंग

कम बाइट्स बेहतर होने के साथ बाइट्स की संख्या के अनुसार पुलिस उत्तर दिए जाएंगे। फटा जवाब एक अनंत स्कोर स्कोर।


यह स्पष्ट है कि किसी समस्या को अनधिकृत रूप से क्रैक करने के तरीके हैं, जैसे कि सभी परीक्षण मामलों को मुद्रित करना, लेकिन यह मुद्दा पुलिस के प्रदान किए गए मामलों पर सशर्त है। क्या उस बारे में कोई नियम होना चाहिए? क्या रामसे थ्योरी से अनुक्रमों की गणना या कुछ भी करने के खिलाफ प्रतिबंध है? (यानी क्या आपको अपनी मशीन पर दरार
डालने में

2
@TheReallyumdub प्रश्न को निर्धारित करता है कि आपको अपनी स्वयं की सबमिशन क्रैक करने में सक्षम होना चाहिए।
गेहूं जादूगर

@CatWizard धन्यवाद, मैं आगे बढ़ गया और यह पहले से ही एक स्पष्ट मेटा पोस्ट पर है, यह इन लोगों में से कुछ को स्पष्ट रूप से बाधित करता है। तो यह टैग की भावना में नहीं है कि एक दरार को गणना या कुछ और करने के लिए एक घंटे से अधिक का समय दिया जाए
theREALyumdub


क्या कोई "हालांकि सैद्धांतिक रूप से आपके समाधान को सभी नंबरों के लिए काम करना चाहिए, क्योंकि इसे केवल ..." स्थिति के लिए काम करने की आवश्यकता है?
user202729

जवाबों:


6

CQuents , 4 बाइट्स ( फटा )

"::$

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

यहां आठ ( n=8) मामले हैं:

1 1
2 12
3 123
4 1234
5 12345
6 123456
7 1234567
8 12345678

कोड स्पष्टीकरण:

"      Stringify sequence (join on "", remove it and see what happens)
 ::    Given input n, output all items in the sequence up to and including n
   $   Each item in the sequence equals the index

तो अनुक्रम है 1,2,3,4,5 ..., यह शामिल ""हो जाता है इसलिए यह हो जाता है 12345 ..., और ::इसका मतलब है कि यह इनपुट तक प्रिंट करता है।



5

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

द्वारा फटा XNOR
भी द्वारा फटा बिल्ली जादूगर एक संपादन से पहले

def f(n):x=n/10-2;return int(x*60-x**3*10+x**5/2-x**7/84)

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

हैलो! यहाँ लिए क्रैक करने का क्रम है । यह 0-इंडेक्सिंग के साथ इन पहले 40 तत्वों को देता है, यह एक OEIS अनुक्रम नहीं हैn=40

[-54, -56, -58, -59, -59, -59, -59, -57, -55, -53, -50, -46, -43, -38, -33, -28, -23, -17, -11, -5, 0, 5, 11, 17, 23, 28, 33, 38, 43, 46, 50, 53, 55, 57, 59, 59, 59, 59, 58, 56]

मैं व्हॉट्सएप को हटाना भूल गया, मैं अभी तक एक विशेषज्ञ गोल्फर नहीं हूं: पी क्या आपको लगता है कि अगर मैं इसे ठीक करने के लिए संपादित करता हूं?
क्रैशोज

जरूर आगे बढ़ो। मैं अपनी दरार हटा दूंगा।
गेहूं जादूगर


5

अजगर 2 , 44 बाइट्स ( फटा )

f=lambda n,i=1,p=1:n and-~f(n-p%i,i+1,p*i*i)

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

अभाज्य संख्या। क्या अनुक्रम शुद्ध हो सकता है? या अधिक ओवरडोन ? अपने लक्ष्य के लिए पहले 50 primes उत्पादन करने के लिए n=1है n=50

कोड एक विल्सन प्रमेय जनरेटर है जो इस टिप से बिल्कुल कॉपी किया गया है ।

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


Arnauld, @PoonLevi, और मिस्टर एक्सकोडर द्वारा क्रैक किया गया।


बहुत यकीन है कि आप इस से टूट पाने का मतलब नहीं था ; शायद "पायथन (कोई तीसरी पार्टी लाइब्रेरी के साथ)" या "पायथन (कोई आयात नहीं)" या कुछ और निर्दिष्ट करें?
जोनाथन एलन

@JonathanAllan धन्यवाद, मैंने संपादित किया कि कोई 3 पार्टी लाइब्रेरी नहीं है।
xnor

मैं अभी तक इसे क्रैक नहीं कर पाया हूं (फिलहाल मेरा सबसे अच्छा प्रयास 47 बाइट्स या तो है), लेकिन मुझे लगता है कि उन विशेष अपराधों के बारे में ध्यान देने योग्य कुछ दिलचस्प है। प्रत्येक के लिए , साथ मैं [ 1 , 50 ] एन , इस रखती है: 2 पी मैं2 ( आधुनिक  पी मैं ) । इसी समय, यह किसी भी संख्या के लिए सही नहीं है जो कि प्रमुख नहीं है (ऊपर दी गई सीमा में), लेकिन यह करता हैpii[1,50]N2pi2(mod pi)उच्च मूल्यों के लिए। मैं इस विचार को यहां छोड़ रहा हूं ताकि अन्य लोग उल्लेखित तकनीक का उपयोग करके दरार पर अपना हाथ आजमा सकें, और शायद एक बेहतर स्कोर प्राप्त करें :)
श्री एक्सकोडर

@ Mr.Xcoder यहां आपकी प्रस्तावित विधि के आधार पर मेरा सर्वश्रेष्ठ प्रयास है। यह सफलतापूर्वक एन = 69 पर विचलन करता है, 341 (आधार 2 के लिए पहला फ़र्मेट स्यूडोप्राइम, या पहला पॉलेट नंबर) लौटाता है, लेकिन यह एन = 1 के लिए भी विफल रहता है। मुझे संदेह है कि मैं इसे अपने दम पर ठीक कर सकता हूं, इसलिए मैंने सोचा कि मेरे पास जो भी है उसे बेहतर साझा करूंगा। (मेरा सबसे अच्छा फिक्स 46 बाइट्स है ...)
अर्नुलड

1
@Arnauld मुझे इस पद्धति का उपयोग करके 44-बाइट समाधान मिला । मैं किसी भी आगे जाने के लिए प्रतीत नहीं कर सकते। शायद किसी और को यह पता लगाने में सक्षम हो जाएगा।
पून लेवी

4

वोल्फ्राम भाषा (गणितज्ञ) , ३ ९ ३४ बाइट्स (सुरक्षित)

Check[{1,9,7}[[#]],18+Boole[#>9]]&

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

सरल लगता है, समाधान कठिन होना चाहिए।

1-अनुक्रमित और । यह अनुक्रम OEIS पर उपलब्ध नहीं है।n=99

{1, 9, 7, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19}

यह उपरोक्त सूची के बराबर है:

Join[{1, 9, 7}, Table[18, 6], Table[19, 90]]

यहाँ अपने समाधान की जाँच के लिए एक टेम्पलेट है: इसे ऑनलाइन आज़माएं!

इरादा दरार

यहां पकड़ यह है कि जब पहले तीन शब्दों के अपवाद के साथ अंक की संख्या 1 से बढ़ जाती है, तो आउटपुट 1 से बढ़ जाता है; इरादा समाधान स्ट्रिंग रूपांतरण के साथ कुछ करना है।

इसलिए, एक्सप्रेशंस और स्ट्रिंग के बीच कन्वर्सेशन पर डॉक्यूमेंट को पढ़ने से व्यक्ति फंक्शन पा सकता है SpokenString

समाधान केवल x^nविभिन्न आदानों के लिए अभिव्यक्ति के बोले गए स्ट्रिंग संस्करण की लंबाई है :StringLength@SpokenString[x^#]&


3

हास्केल , 29 बाइट्स (फटा: 1 , 2 )

a n=n*ceiling(realToFrac n/2)

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

यह A093005 : a(n)=nn2

के लिए टेस्ट मामलों , है कि :0n20map a [0..20]

[0,1,2,6,8,15,18,28,32,45,50,66,72,91,98,120,128,153,162,190,200]

इरादा समाधान (20 बाइट्स)

b n=sum$n<$show(3^n)

इसे ऑनलाइन आज़माएं! पर अलग , के साथ एक ( 23 ) = 276 और बी ( 23 ) = 253n=23a(23)=276b(23)=253

यह फ़ंक्शन । छत के लिए धन्यवाद, दोनों फ़ंक्शन 0 से 22 तक सीमा में पूर्णांक तर्कों के लिए ओवरलैप करते हैं :b(n)=n len(3n)=nlog10(1+3n)022

स्रोत



@ लैकोनी, यदि इरादा दरार छोटा है, तो कोई और बीएमओ से डाकू का दावा कर सकता है।
f --n 0tɪk

@ f @n awaretɪk धन्यवाद, मुझे इस नियम की जानकारी नहीं थी।
लकोनी


2
@ बीएमओ वहाँ आप :)
लाईकोनी

2

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

यह एक नहीं बल्कि आसान है।

n=>n*(8*n+1)

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

यह A139275 है :

a(n)=n(8n+1)

0n<9

0,9,34,75,132,205,294,399,520

और चुनौती के नियमों के अनुसार, इसे अलग करना होगा।


n=>8*n*n+nके लिए अलग है n=94906273, यह एक वैध दरार है?
ngn

@ng यह मुझे चुनौती के नियमों के अनुसार मान्य लगता है, लेकिन शायद आपको ओपी से पूछना चाहिए कि क्या सटीकता का नुकसान एक वैध उत्थान के रूप में गिना जाता है? इरादा दरार के लिए अलग है n=9, यद्यपि।
अरनुलद

@CatWizard ^
ngn

मैं कहूंगा कि यह एक वैध दरार है।
गेहूं जादूगर

2
फटा ( |बजाय +)
ngn

2

Malbolge, 10 बाइट्स

ub&;$9]J6

ध्यान दें कि कोड 0x14 (डिवाइस नियंत्रण 4) बाइट के साथ समाप्त होता है।

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

क्रैक करने के लिए 0-अनुक्रमित अनुक्रम है [9, 19, 29]


2

> <> , 276 बाइट्स ( फटा )

1$1-:?!v$:      1[0$          >:?!va2[$:{:@%:{$-{,]v
       >$n; v              <  ^   >~{]02.1+1+ffr+1r<
 :}[r]{  [01>:{*@@+$a*l2=?!^~]+ff+9+1g"3"=?v"3"ff+9+1pf0.
 :}[l01-$>    $:0(?v$@$:@@:@)?v@@1-$}v     >"2"ff+9+1p00.
>.       ^-1l v!?} <  .4a}$@@$<   .4a<
^26{]r0[}:{]~{<

इसे ऑनलाइन आज़माएं! -v nएन-वें तत्व (1-अनुक्रमित) प्राप्त करने के लिए इसे कॉल करें

1$1-:?!;$::n84*o1[0$          >:?!va2[$:{:@%:{$-{,]v
            v              <  ^   >~{]02.1+1+ffr+1r<
 :}[r]{  [01>:{*@@+$a*l2=?!^~]+ff+9+1g"3"=?v"3"ff+9+1pf0.
 :}[l01-$>    $:0(?v$@$:@@:@)?v@@1-$}v     >"2"ff+9+1p00.
>.       ^-1l v!?} <  .4a}$@@$<   .4a<
^26{]r0[}:{]~{<

इसे ऑनलाइन आज़माएं! -v n1 से शुरू होने वाले n-1 तत्वों की सूची प्राप्त करने के लिए कॉल करें

ऑनलाइन फिश इंटरप्रेटर

एक लंबा और जटिल, यह OEIS A004000 है

आज्ञा देना (n) = k, k का अंकों को उल्टा करके m, k में m जोड़ें, फिर a (n + 1) प्राप्त करने के लिए योग के अंकों को बढ़ते क्रम में क्रमबद्ध करें।

उदाहरण: 668 -> 668 + 866 = 1534 -> 1345।

क्योंकि> <> में कोड काफी लंबा है, इसलिए चुनौती यह है कि इसे क्रैक करें n=34। ये 34 तत्व कुल 290 बाइट्स बनाते हैं, परिणाम को हार्डकोड करने के लिए बस थोड़ा बहुत;)
यहां 34 पहले तत्व-अनुक्रमित हैं;

1 2 4 8 16 77 145 668 1345 6677 13444 55778 133345 666677 1333444 5567777 12333445 66666677 133333444 556667777 1233334444 5566667777 12333334444 55666667777 123333334444 556666667777 1233333334444 5566666667777 12333333334444 55666666667777 123333333334444 556666666667777 1233333333334444 5566666666667777

किसी दिए गए n(प्रश्न के लिए आवश्यक) के लिए एकल आउटपुट देने के लिए प्रोग्राम कैसे चलाया जाता है ?
जोनाथन एलन

जैसा कि मछली में वास्तव में "फ़ंक्शन" नहीं हैं, मैंने एक संस्करण जोड़ा है जिसे आप एन-वें प्राप्त करने के लिए कॉल कर सकते हैं (जो अनिवार्य रूप से एक ही है, क्योंकि इसमें एन -1 पिछले तत्वों की गणना करना है)
क्रैश

इससे भी महत्वपूर्ण बात, क्या आपके पास एक दरार है जो एक ही इनपुट अनुक्रमण को फिट करता है जो एकल आउटपुट देता है?
जोनाथन एलन

1
मुझे लगता है कि, मैं एक ऐसा कार्य कर सकता हूं जो उसी क्रम के लिए करता है 1<=n<=34 लेकिन अलग है n>34~ 30 बाइट्स कम होने पर
क्रैशोज


2

जेली , 6 बाइट्स , सुरक्षित!

<4+ạ2ȯ

यह एक शून्य-अनुक्रमित अनुक्रम को परिभाषित करता है जहां:

(n)={1n<32n=3n-2n>3

जैसे कि पहले सोलह मान (0)(15) कर रहे हैं 1,1,1,2,2,3,4,5,6,7,8,9,10,11,12,13

इसे ऑनलाइन आज़माएं! ( यहाँ एक एकल मूल्य संस्करण है)

यह वर्तमान में OEIS में नहीं है (हालांकि A34138 अगर बहुत कम है तो दरार के रूप में काम करेगा)

इरादा दरार

उपरोक्त अनुक्रम पहले के दशमलव अंकों की गिनती से सहमत है 16A062569 की शर्तें , इस तथ्य के भाजक का योगn (also zero-indexed).
The 17th term of A062569, however, is 107004539285280 which has 15 digits, not 14=a(16).

The required code is five bytes in Jelly, !ÆsDL.


1

JavaScript, 26 bytes (Cracked)

let f=x=>x>1?f(x-1)*f(x-2)+1:1

for (x of [0,1,2,3,4,5,6,7]) {
  console.log(x + ' -> ' + f(x))
}

OEIS A007660

Output is the first 6 elements with 0 indexing (1,1,2,3,7,22)

(somewhat shifted from what OEIS has it listed as)

Just creating a simple to solve answer to kick things off

Try it online!



Your example snippet's output starts at 1, not at 0?
Paŭlo Ebermann

@PaŭloEbermann Fixed that
fəˈnɛtɪk






0

><>, 42 bytes, cracked

i3%0v
642 .
840
789
159
a 1
v<<
n
l
?
\/
;

Try it online!

Sequence to crack (0-indexed): 101786, 5844, 19902 (not on OEIS).

Intended solution, for reference.



Usually the robbers should be hard coding the output
Jo King

@JoKing Your crack doesn't seem to produce any values different from mine (or maybe I haven't tested it thoroughly enough to find which values differ), but that's probably easily rectifiable. While there doesn't seem to be anything in the rules forbidding hardcoding, I agree that it may not fit the spirit of the challenge -- in any case you've demonstrated that hardcoding (for a cop) comes with its own risks.
Aidan F. Pierce

1
I've updated my answer to produce a different value for 4
Jo King

0

Perl 6, 53 bytes

{(1,2,2,{$!=++$;prepend(@,2-$!%2 xx$_).pop}...*)[$_]}

Try it online!

Anonymous code-block that returns the 0-indexed Kolakoski sequence (OEIS A000002). Solutions are required to match the first 130 elements, so that for some n > 129 it differs from the Kolakoski sequence.


0

Pascal (FPC), 86 bytes (cracked)

var n:word;begin read(n);write(n div 2+n div 4+n div 8+n div 16+n div 32+n div 64)end.

Try it online!

The sequence must be equal up to n=120. The sequence from input 0 to input 120 is

0   0   1   1   3   3   4   4   7   7   8   8  10  10  11  11  15  15  16  16  18  18  19  19  22  22  23  23  25  25  26  26  31  31  32  32  34  34  35  35  38  38  39  39  41  41  42  42  46  46  47  47  49  49  50  50  53  53  54  54  56  56  57  57  63  63  64  64  66  66  67  67  70  70  71  71  73  73  74  74  78  78  79  79  81  81  82  82  85  85  86  86  88  88  89  89  94  94  95  95  97  97  98  98 101 101 102 102 104 104 105 105 109 109 110 110 112 112 113 113 116


My original solution was

var n,i,s:word;begin read(n);i:=2;repeat s:=s+n div i;i:=i*2until i>n;write(s)end.

but r_64 made it even better!


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