आसन्न पत्र परीक्षण


12

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

आसन्न पत्रों के एक भाग के रूप में क्या मायने रखता है?

पासवर्ड स्ट्रेंथ टेस्टर के इस सरलीकृत संस्करण के लिए, आसन्न वर्णों का एक भाग 3 या अधिक अक्षर हैं जो एक QWERTY कीबोर्ड पर एक ही दिशा (बाएं, दाएं, ऊपर या नीचे) में एक दूसरे के बगल में हैं। इस चुनौती के लिए कीबोर्ड का लेआउट इस तरह दिखता है:

1234567890
QWERTYUIOP
ASDFGHJKL
ZXCVBNM

ऊपर Qदिए गए आरेख में नीचे है, 1लेकिन नीचे नहीं है 2, इसलिए एक स्ट्रिंग जिसमें 1qaया aq1इसके अंदर कहीं भी है, कार्यक्रम को वापस कर देगा true, लेकिन 2qaनहीं।

इनपुट

जाँच करने के लिए पासवर्ड स्ट्रिंग। इसमें केवल वर्ण [0-9a-z]या [0-9A-Z](आपकी पसंद) होगी।

उत्पादन

यदि पासवर्ड में एक या अधिक रन सम्‍मिलित कुंजियों के होते हैं, या यदि उसमें कोई नहीं है, तो प्रोग्राम को एक सच्‍चे मान को वापस करना होगा।

उदाहरण

निम्नलिखित जानकारी सही होनी चाहिए:

  • asd
  • ytrewq
  • ju7
  • abc6yhdef

और इन निविष्टियों को गलत आउटपुट देना चाहिए:

  • abc
  • aaa
  • qewretry
  • zse
  • qwdfbn
  • pas

नियम

  • उत्तर पूर्ण कार्यक्रम या कार्य हो सकते हैं।
  • मानक खामियों को अस्वीकार कर दिया जाता है।
  • यह , सबसे कम स्कोर (बाइट्स में) जीतता है!

जवाबों:


3

पायथ - 66 62 60 बाइट्स

बहुत सीधा-सादा तरीका। जाँचता है कि क्या कोई लेपन 3 कीबोर्ड के किसी घुमाव में है। कीबोर्ड के लिए बेस एन्कोडिंग का उपयोग किया जाएगा।

.E}Rjb+J+Kc+jkS9"0
qwertyuiop
asdfghjkl
zxcvbnm"b.tKN_MJ.:z3

टेस्ट सूट


@ user81655 तय किया, और दो बाइट्स को बचाया।
माल्टीसेन

2

जाप , 78 बाइट्स

Japt , Ja vaScri pt का छोटा संस्करण है । दुभाषिया

V=1oA ¬+`0\nqØÆyuiop\n?dfghjkl \nzxcvbnm`;1+¡Y©(((VbX -VbUgY-1)-5 a -5 %A a)bB

0झूठा मामलों के लिए आउटपुट ; अन्यथा, एक सकारात्मक पूर्णांक। ?गंदा यूनिकोड वर्ण U + 0086 से बदल जाना चाहिए, या आप सब कि मुसीबत में जाने के लिए, बस नहीं करना चाहते हैं as

यह काम किस प्रकार करता है

V=1oA q +"0\nqwertyuiop\nasdfghjkl \nzxcvbnm";1+Um@Y&&(((VbX -VbUgY-1)-5 a -5 %A a)bB
           // Implicit: U = input string
V=1oA q    // Set variable V to the digits 1-9, plus
+"...";    // this string.
Um@        // Take U and map each character X and its index Y with this function:
Y&&        //  If Y is 0, return Y; otherwise,
VbX -      //  take the index of X in V, subtract
VbUgY-1    //  the index of (char at position Y - 1 in U) in V,
-5 a -5    //  subtract 5, take the absolute value, subtract 5 again,
%A a       //  take modulo by 10, then take the absolute value.
           //  This returns 1 for any pair of characters that is adjacent
           //  within V, horizontally or vertically.
bB +1      // Take the index of 11 in the result and add one.
           // Implicit: output last expression

2

सी #, 227

int h(string k){var q="1234567890,QWERTYUIOP,ASDFGHJKL,ZXCVBNM,1QAZ,2WSX,3EDC,4RFV,5TGB,6YHN,7UJM,8IK,9OL,";int i=0,j=0;for(;i<k.Length-2;i++)if((q+String.Concat(Enumerable.Reverse(q))).Contains(k.Substring(i,3)))j=1;return j;}

० मिथ्या है, १ सत्य है। सभी कुंजी क्षैतिज और ऊर्ध्वाधर, और उलट, और जांच करता है कि इनपुट के 3 वर्णों में से कोई भी भीतर निहित है या नहीं।

C # वास्तव में क्रिया है, अन्य भाषाओं में गोता लगाना होगा :(


0

PHP, 173 + 1 बाइट्स

while(~$argn[$i+2])($p=preg_match)($r=_.join(".{10}",str_split(($t=substr($argn,$i++,3))))."|$t"._,$d=_1234567890_qwertyuiop_asdfghjkl__zxcvbnm)||$p($r,strrev($d))?die(1):0;

-nRलोअरकेस इनपुट के साथ पाइप के रूप में चलाएं या इसे ऑनलाइन आज़माएं


0

क्लोजर, 156 बाइट्स

#(some(set(for[R[["1234567890""QWERTYUIOP""ASDFGHJKL.""ZXCVBNM..."]]R[R(apply map list R)]r R p(partition 3 1 r)p((juxt seq reverse)p)]p))(partition 3 1 %))

यह लागू करने के लिए काफी दिलचस्प काम था।

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