लेवेनशीन दूरी और OEIS (लुटेरे)


11

यह रॉबर पोस्ट है। कॉप पोस्ट यहाँ है


आपका कार्य पूर्णांक इनपुट N को लेना है और Nth अंक को अनुक्रम OEIS A002942 में आउटपुट करना है

अनुक्रम में पीछे की ओर लिखे गए वर्ग संख्याएँ होती हैं:

1, 4, 9, 61, 52, 63, 94, 46, 18, 1, 121, 441, ...

ध्यान दें कि अग्रणी शून्य को छंटनी की जाती है ( 100 1 हो जाता है , 001 नहीं )। इसे एक स्ट्रिंग में समाप्‍त करना (या एक लंबी संख्‍या देता है):

1496152639446181121441

आप इस स्ट्रिंग / संख्या में Nth अंक का उत्पादन करेंगे । आप N को 0-अनुक्रमित या 1-अनुक्रमित के रूप में लेना पसंद कर सकते हैं (कृपया बताएं कि आप किसे चुनते हैं)।

परीक्षण के मामले (1-अनुक्रमित):

N = 5,      ==> 1
N = 17,     ==> 1   <- Important test case! It's not zero.
N = 20,     ==> 4
N = 78,     ==> 0
N = 100,    ==> 4
N = 274164, ==> 1

आपका कोड N = 2 ^ 15 तक की संख्याओं के लिए काम करना चाहिए (जब तक कि आपकी भाषा डिफ़ॉल्ट रूप से 32 बिट पूर्णांक को नहीं संभाल सकती है, जिस स्थिति में N कम हो सकता है)।


लुटेरों:

आपको पुलिस के पदों को क्रैक करने का प्रयास करना चाहिए।

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

आप यहां लेवेंसहिन दूरी की जांच कर सकते हैं!

विजेता सबसे अधिक पदों को तोड़ने वाला डाकू होगा।


रुको ... तो अगर डाकू का परिणाम मूल इच्छित कार्यक्रम के समान नहीं होना चाहिए ... क्या पुलिस सिर्फ एक कार्यक्रम नहीं लिख सकती है और दूरी बना सकती है ...?
मैजिक ऑक्टोपस Urn

ठीक है, पुलिस को प्रस्तुत कोड को सुरक्षित रूप में चिह्नित करने के लिए वैकल्पिक कोड प्रदान करना चाहिए और जीत के लिए पात्र होना चाहिए। मैंने पुलिस पोस्ट में स्पष्ट किया है। :)
स्टेवि ग्रिफिन

मैंने कभी पुलिस और लुटेरा चुनौती की कोशिश नहीं की। यह सब मेरे लिए बहुत भ्रमित करने वाला था!
मैजिक ऑक्टोपस Urn

जवाबों:






2

6502 मशीन कोड (C64), फेलिक्स पालमेन

मैंने सभी प्रश्नों के परीक्षण के मामलों और काफी कुछ एक्स्ट्रा (जैसे 2 ^ 15 ... जो थोड़ी देर लगे) के साथ यह परीक्षण किया, और यह एलडी = 1 के साथ मूल के समान काम करता प्रतीत होता है।

00 C0 20 FD AE A0 00 99 5B 00 C8 20 73 00 90 F7 99 5B 00 A2 0B CA 88 30 09 B9
5B 00 29 0F 95 5B 10 F3 A9 00 95 5B CA 10 F9 A9 01 A0 03 99 69 00 88 10 FA A0
20 A2 76 18 B5 E6 90 02 09 10 4A 95 E6 E8 10 F4 A2 03 76 69 CA 10 FB 88 F0 11
A2 09 B5 5C C9 08 30 04 E9 03 95 5C CA 10 F3 30 D6 A2 03 B5 69 95 57 CA 10 F9
A9 01 85 FB A2 03 A9 00 95 FB CA D0 FB A2 03 B5 FB 95 22 95 26 CA 10 F7 A9 00
A2 03 95 69 CA 10 FB A0 20 A2 02 46 25 76 22 CA 10 FB 90 0C A2 7C 18 B5 AA 75
ED 95 ED E8 10 F7 A2 7D 06 26 36 AA E8 10 FB 88 10 DD A0 0B A9 00 99 5A 00 88
D0 FA A0 20 A2 09 B5 5C C9 05 30 04 69 02 95 5C CA 10 F3 06 69 A2 FD 36 6D E8
D0 FB A2 09 B5 5C 2A C9 10 29 0F 95 5C CA 10 F4 88 D0 D7 E0 0A F0 05 E8 B5 5B
F0 F7 09 30 99 5B 00 C8 E8 E0 0B F0 04 B5 5B 90 F1 88 B9 5B 00 C9 30 F0 F8 A2
7C 18 B5 DB E9 00 95 DB E8 10 F7 90 14 88 30 05 B9 5B 00 D0 EA A2 7C F6 7F D0
03 E8 10 F9 4C 73 C0 B9 5B 00 4C D2 FF

ऑनलाइन डेमो , उपयोग: sys49152, n जहां n 0-अनुक्रमित इनपुट है।


यह सही है क्योंकि आपने कुछ बेकार बेकार कोड पाया है जिसके बारे में मुझे जानकारी नहीं थी और इस कोड में बदलाव है : o
फेलिक्स पालमेन

1

लुआ , काटेंको

i=1s=""while(#s<...+0)do s=s..((i*i)..""):reverse():gsub("(0+)(%d+)$","%2")i=i+1 end
print(s:sub(...,...))

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

मैं लूआ को नहीं जानता, लेकिन यह एक सरल था, बस एक स्थान को नई रेखा के साथ बदल दिया।


हम उस के बारे में नहीं सोचते थे, मूल के (0+)(%d+)$साथ बदलने के बारे में था (0+)(%d+), इसलिए यह रेगेक्स ^ ^ के बारे में था
कैटेनको

1

पायथन 3 , हाइपरनेट्रिनो

lambda o:"".join(str(p*p+2*p+1)[::~0].lstrip("0")for p in range(o+1))[o]

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


9 सेकंड में Ninja'd: पी
ऊरीएल

हुह दिलचस्प, वह नहीं था जो मेरे पास था लेकिन अच्छा :)
हाइपरन्यूट्रीनो

आप ''इसके बजाय भी कर सकते हैं""
Uriel

@ एरियल हाँ, मुझे एक टन विकल्प पता है।
बजे मिस्टर एक्सकोडर

एक वैकल्पिक दरार होगी lambda i:"".join(str( (-~k)**2)[::-1]for k in range(i+1))[i]
निकोलग्राफ

1

पायथन 2 , डायलेन

d=lambda y:y if y%10>0 else d(y/10)
lambda n:''.join([str(d(x*x))[::-1]for x in range(1,n+1)])[n-1]#fix

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

नोट: इस पुलिस सबमिशन को खराब कर दिया गया था और 5 से कम इनपुट के लिए काम नहीं किया था। जबकि मैं इस पर था मैंने इस समाधान का निर्माण किया जिसमें लेवेंसहाइट की दूरी सही है और बग को ठीक करता है।


1

पर्ल 5, (-पी) एक्सकाली

टिप्पणी के बाद अपडेट किया गया, लेवेंसहाइट के बीच की दूरी

a$j.=int reverse$_**2for 1..$_;$_--;say$j=~s/.{$_}(.).*/$1/r

तथा

p$_=substr w.(join"",map{whyddwzz;0|reverse$_**2}1..$_),$_,1

55 है

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


यह देखते हुए कि M5.010 "मुक्त" है, मुझे नहीं लगता कि इसे यहां गिनना चाहिए। मुझे वास्तव में यकीन नहीं है कि कैसे -aबनाम -pझंडे की गिनती की जाए । मैं जिन दो समाधानों को लेकर आया था, दोनों ने एक ही झंडे का इस्तेमाल किया। मुझे लगता है कि झंडा सिर्फ एक जगह के बिना मोर्चे पर लगाया जाएगा, लेकिन मैं उस पर दूसरों द्वारा बहाने के लिए तैयार हूं।
13

मेरे उत्तर को अपडेट किया
नाहुएल फौइलुल

1

जावा 8, केविन क्रूज़सेन

/*!FooBarFooBarFoo!*/N->{String R="",T=R;for(int I=1,J;N+2>R.length();I++){for(T="",J=(I*I+"").length();0<J;T+=(I*I+"").charAt(--J));R+=new Long(T)+"";}return R.charAt(N);}

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

लॉग बदलें

  • के .replaceAll()साथ बदला गया new Long()
  • सही वर्गों के लिए परीक्षण हटा दिया। अब सीधे सही वर्गों का उपयोग करना।
  • ऊपरी-मामले में सभी चर नाम अपडेट किए गए।
  • असमानताओं को फिर से लिखा।
  • और अंत में सही एलडी तक पहुंचने के लिए एक 21-बाइट अग्रणी टिप्पणी को जोड़ा।

1
ओह अच्छा। यह मेरे दिमाग में पूरी तरह से अलग है, लेकिन अच्छा है कि आपको वैसे भी 92 एलडी मिला। मेरे मन में जो समाधान था, वह था: n->{String r="";for(int i=1;r.length()<=n+1;r+=new Long(new StringBuffer(i*i+++"").reverse()+""));return r.charAt(n);}( 118 बाइट्स, मेरे अन्य उत्तर की तुलना में 92 एलडी ।)
केविन क्रूज़सेन

1

ऑक्टेव , स्टेवी ग्रिफिन

@(n)regexprep(fliplr(num2str((1:n)'.^2))'(:)',' +0*','')(n)%abcdefghijk

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

मैं वास्तव में अपने स्वयं के ऑक्टेव उत्तर का प्रयास कर रहा था और मौजूदा को देखा। मेरा पहले से ही काफी छोटा था इसलिए अंत में एक टिप्पणी जोड़ना 63 की आवश्यक दूरी के लिए पर्याप्त था।


अच्छी तरह से किया :-) मैं एक पाश था input()और सब कुछ है कि इसके साथ चला जाता है ...
Stewie ग्रिफिन


0

6502 मशीन कोड (C64), फेलिक्स पालमेन

यह भी एक "सरल" दरार हो सकता है, लेकिन यह प्रतीत होता है मूल रूप में काम करने के लिए।
LD = 1 होने से इसे क्रैक करने का प्रयास करने के लिए सिर्फ इतना लुभावना है (क्षमा करें, फेलिक्स)। :)

00 C0 20 FD AE A0 00 99 5B 00 C8 20 73 00 90 F7 99 5B 00 A2 0B CA 98 88 30 09
B9 5B 00 29 0F 95 5B 10 F2 95 5B CA 10 FB A0 20 A2 76 18 B5 E6 90 02 09 10 4A
95 E6 E8 10 F4 A2 03 76 69 CA 10 FB 88 F0 11 A2 09 B5 5C C9 08 30 04 EB 03 95
5C CA 10 F3 30 D6 A2 03 B5 69 95 57 CA 10 F9 A9 01 85 FB A2 03 A9 00 95 FB CA
D0 FB A2 03 B5 FB 95 22 95 26 CA 10 F7 A9 00 A2 03 95 69 CA 10 FB A0 20 A2 02
46 25 76 22 CA 10 FB 90 0C A2 7C 18 B5 AA 75 ED 95 ED E8 10 F7 A2 7D 06 26 36
AA E8 10 FB 88 10 DD A2 0B A9 00 95 5A CA D0 FB A0 20 A2 09 B5 5C C9 05 30 04
69 02 95 5C CA 10 F3 06 69 A2 FD 36 6D E8 D0 FB A2 09 B5 5C 2A C9 10 29 0F 95
5C CA 10 F4 88 D0 D7 E8 B5 5B F0 FB 09 30 99 5B 00 C8 E8 E0 0B F0 04 B5 5B 90
F1 88 B9 5B 00 C9 30 F0 F8 A2 7C 18 B5 DB E9 00 95 DB E8 10 F7 90 14 88 30 05
B9 5B 00 D0 EA A2 7C F6 7F D0 03 E8 10 F9 4C 68 C0 B9 5B 00 4C D2 FF

ऑनलाइन डेमो , उपयोग: sys49152, n जहां n 0-अनुक्रमित इनपुट है।


मुझे यकीन नहीं है कि मुझे यह स्वीकार करना होगा। यह 6502 मशीन कोड में अपरिभाषित है , जिसके स्थान पर E9(घटाव कमांड) प्रतिस्थापित EBकरता है , लेकिन NMOS 6502 और 6510 चिप्स पर भी ऐसा ही होता है। यह कार्यक्रम उदाहरण के लिए C64 DTV1 पर क्रैश होगा। लेकिन यह एक वास्तविक C64 को खोजने की संभावना नहीं है जो इसे सही तरीके से निष्पादित नहीं करता है, इसलिए इसे एक वैध दरार माना जा सकता है? मैं मेटा पर राय माँग सकता हूँ ....
फेलिक्स पालमेन

मैं में दिलचस्पी होगी मेटा पर यहाँ इनपुट
फेलिक्स पालमेन

@FelixPalmen मैं जल्द ही इसका जवाब दूंगा।
जो।

इसे बनाए रखें, मेटा पर मेरी टिप्पणी भी देखें। समुदाय ने स्पष्ट रूप से राय व्यक्त की कि यह मान्य है। यह मेरी गलती है कि केवल 6502 कोड वाले दस्तावेज की आवश्यकता नहीं है, और मैं भविष्य के लिए इसे ध्यान में रखूंगा।
फेलिक्स पालमेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.