एक कीबोर्ड के पार चलो


21

इनपुट के रूप में एक शब्द (या अक्षरों के किसी भी क्रम) को देखते हुए, आपको प्रत्येक अक्षर के बीच में अंतर करना चाहिए, जैसे कि परिणाम में प्रत्येक आसन्न जोड़ी QWERTY कीबोर्ड पर भी आसन्न है, जैसे कि आपने किसी विशालकाय कीबोर्ड पर चलते हुए इनपुट टाइप किया हो। उदाहरण के लिए, ' हां ' ' y tr es ' बन सकता है , ' cat ' हो सकता है ' c xz a wer t '।

नियम:

  • यह वह कीबोर्ड प्रारूप है जिसका आपको उपयोग करना चाहिए:

    qwertyuiop
    asdfghjkl
      zxcvbnm

    इस लेआउट में स्पर्श करने वाली किसी भी जोड़ी को निकटवर्ती माना जाता है। उदाहरण के लिए, 's' और 'e' आसन्न हैं, लेकिन 's' और 'r' नहीं हैं।

  • इनपुट "शब्द" अक्षरों के किसी भी अनुक्रम से मिलकर होगा। इसमें केवल अक्षर होंगे, इसलिए आपके पास विशेष वर्णों के साथ सौदा नहीं है।
  • इनपुट किसी भी सुविधाजनक रूप में हो सकता है: स्टडिन, एक स्ट्रिंग, एक सूची, आदि पत्र मामला कोई फर्क नहीं पड़ता; जो भी अधिक सुविधाजनक हो, आप ले सकते हैं।
  • आउटपुट किसी भी सुविधाजनक रूप में हो सकता है: स्टडआउट, एक स्ट्रिंग, एक सूची, आदि पत्र का मामला मायने नहीं रखता है, और इसे लगातार होने की आवश्यकता नहीं है।
  • कीबोर्ड पर कोई भी पथ मान्य है, सिवाय इसके कि आप अगले पत्र को प्राप्त करने से पहले पिछले पत्र को फिर से पार नहीं कर सकते। उदाहरण के लिए, ' हाय ' 'बन सकता है एच जे मैं ' या ' jnbgyu मैं ' नहीं, बल्कि ' यू मैं '।
  • एक पत्र के साथ ही ajacent नहीं है तो ' चुनाव ' नहीं बन सकता ' चुनाव '। इसके बजाय इसे ' पोल k l ' जैसा कुछ बनने की जरूरत होगी ।
  • शब्द से पहले या बाद में कोई आउटपुट पत्र की अनुमति नहीं है। उदाहरण के लिए, ' था ' नहीं बन सकता 'tre था ' या ' था dfg'।

यह कोड गोल्फ है, बाइट्स जीत में सबसे छोटा जवाब।


तो हम इनपुट के अनुसार किसी भी वैध 'वॉक' का उत्पादन कर रहे हैं? ऐसा लगता है कि यह दो इनपुट के रूप में बेहतर होगा, यह निर्धारित करें कि क्या यह एक वैध चलना है।
विस्कह

ऐसा लगता है जैसे के dewqwertyलिए एक वैध मार्ग है dy। क्या आप इसकी पुष्टि कर सकते हैं?
अरनौलड

@ अर्नुलद हाँ, यह है।
वालुस

@Veskah यह सही है; एक इनपुट के लिए किसी भी वैध चलने का उत्पादन करें। यह उन अनुकूलन के लिए अनुमति देने के लिए है जो संभव नहीं हो सकता है, उदाहरण के लिए, यह सबसे कम चलना था।
वालुस

जवाबों:


6

जाप -g , 23 बाइट्स

;D·ÎÔ+D·Årí)pUl)fUq".*?

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

बड़े अक्षरों की एक सरणी के रूप में इनपुट लेता है। अन्य उत्तरों के समान ही अन्यथा।

स्पष्टीकरण:

;                          :Set D to the keyboard layout
 D·Î                       :Get the first row of keys
    Ô                      :Reversed
     +                     :Concat
      D·Å                  :The other two rows
         rí)               :Interleaved
            p              :Repeat that string
             Ul)           : A number of times equal to the length of the input
                f          :Get the substrings that match
                 U         : The input
                  q".*?    : joined with ".*?"
                           :Implicitly output just once of the matches

14

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

lambda s:re.findall('.*?'.join(s),'qwertyuioplkmnjhbvgfcxdsza'*len(s))[0]
import re

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

शब्द लिखे जाने तक पूरे कीबोर्ड पर चलता है।


2
import reकोड के बाद कैसे आता है, इससे पहले नहीं?
BruceWayne

@ ब्रूसवेने का re.findallमूल्यांकन तब किया जाता है जब लैम्ब्डा चलता है, इसलिए लैम्ब्डा की परिभाषा ठीक होने के बाद आयात करना। यह कहा जा रहा है, यह पहले आयात करने के लिए स्पष्ट है, वहाँ बस की जरूरत नहीं है
pushkin

@pushkin आह, मुझे नहीं पता था कि स्पष्ट करने के लिए धन्यवाद! क्या आपने व्यक्तिगत पसंद / पसंद के रूप में आयात किया था या क्या यह बाइट की गिनती में मदद करता है?
BruceWayne

2
@BruceWayne यह इस मंच के लिए एक सम्मेलन का एक सा है। यह सिर्फ इतना है कि यह उस तरह से काम करता है जिस तरह से TiO साइट कोड को व्यवस्थित करती है। "ऑनलाइन प्रयास करें!" पर क्लिक करके देखें। मैं क्या मतलब है देखने के लिए लिंक।
मायप्लेयन

8

अजगर 2 , 274 बाइट्स (इष्टतम समाधान)

296 300 302 308 315 319 324 327 328 430 432 बाइट्स

-4 बाइट्स mypetlion के लिए धन्यवाद

from networkx import*
i=input()
M,z='qwertyuiop  asdfghjkl   zxcvbnm'.center(55),i[:1]
G=from_edgelist([(M[e],M[e+h])for h in[-1,1,11,12,-11,-12]for e in range(44)if' '!=M[e]and' '!=M[e+h]])
for y,x in zip(i,i[1:]):z+=[shortest_path(G,y,x)[1:],list(G[y])[0]+y][x==y]
print z

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

यह समाधान सबसे कम संभव आउटपुट देता है। कीबोर्ड को एक ग्राफ में बदल दिया जाता है जिसका उपयोग आउटपुट स्ट्रिंग की गणना करने के लिए सबसे छोटा रास्ता खोजने के लिए किया जाता है:

puzzles     --> poiuhbvcxzazxcvbhjklkiuytres
programming --> poiuytrtyuioijhgtresasdcvbnmkmkijnbg
code        --> cvbhjioijhgfde
golf        --> ghjiolkjhgf
yes         --> ytres
hi          --> hji
poll        --> polpl


1
@mypetlion u ने एक महत्वपूर्ण कमी की, u उत्तर को अपडेट कर सकते हैं :)
mdahmoune


3

05AB1E , 43 बाइट्स

ü)Jε©žVćRs`.ιJ«D«Œʒg≠yн®нQyθ®θQ**}yªн¨}JIθ«

इस चुनौती के लिए सही भाषा नहीं है, क्योंकि यह अन्य उत्तरों की तरह regex का उपयोग नहीं कर सकती है।

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

ü)               # Split the input into overlapping pairs
                 #  i.e. "poll" → ["p","o"],["o","l"],["l","l"]]
  J              # Join each inner list together
                 #  i.e. ["p","o"],["o","l"],["l","l"]] → ["po","ol","ll"]
   ε             # Map each to:
    ©            #  Store the current value in the register
    žV           #  Push ["qwertyuiop","asdfghjkl","zxcvbnm"]
    ćR           #  Extract the head, and reverse it
                 #   i.e. ["qwertyuiop","asdfghjkl","zxcvbnm"] → "poiuytrewq"
    s`           #  Swap to take the remainder, and push them to the stack
               #  And then interweave them with each other
                 #   i.e. ["asdfghjkl","zxcvbnm"]
                 #    → ["a","z","s","x","d","c","f","v","g","b","h","n","j","m","k","l"]
        J        #  Join the list to a single string
                 #   i.e. → "azsxdcfvgbhnjmkl"
         «       #  Merge them together
                 #   i.e. "qwertyuiop" and "azsxdcfvgbhnjmkl"
                 #    → "poiuytrewqazsxdcfvgbhnjmkl"
          D«     #  Duplicate it, and append it to itself
                 #   i.e. "poiuytrewqazsxdcfvgbhnjmkl"
                 #    → "poiuytrewqazsxdcfvgbhnjmklpoiuytrewqazsxdcfvgbhnjmkl"
            Œ    #  Get all substrings of this strings
                 #   i.e. → ["p","po","poi",...,"k","kl","l"]
ʒ              } #  Filter this list by:
 g              #   Where the length is NOT 1 (otherwise pair "ll" would result in "l")
              *  #   and
   yн®нQ         #   Where the first character of the substring and pair are the same
             *   #   and
        yθ®θQ    #   Where the last character of the substring and pair are the same
                 #    i.e. "po" → []
                 #    i.e. "ll" → ["lazsxdcfvgbhnjmkl"]
yª               #  After filtering, append the current pair to the filtered list
                 #   i.e. [] → ["po"]
                 #   i.e. ["lazsxdcfvgbhnjmkl"] → ["lazsxdcfvgbhnjmkl","ll"]
  н              #  Get the first item
                 #   ["po"] → "po"
                 #   ["lazsxdcfvgbhnjmkl","ll"] → "lazsxdcfvgbhnjmkl"
   ¨             #  Remove the last character
                 #   i.e. "po" → "p"
                 #   i.e. "lazsxdcfvgbhnjmkl" → "lazsxdcfvgbhnjmk"
}                # Close the map
 J               # Join everything together
                 #  i.e. ["p","o","lazsxdcfvgbhnjmk"] → "polazsxdcfvgbhnjmk"
  Iθ«            # And append the last character of the input
                 # (and output the result implicitly)
                 #  i.e. "polazsxdcfvgbhnjmk" and "poll" → "polazsxdcfvgbhnjmkl"

3

चारकोल , 48 बाइट्स

≔”&⌈″⌊5EWXVNa…-εW¶ζR”η≔⌕η§θ⁰ζFθF⊕﹪⁻⌕ηιζ²⁶«§ηζ≦⊕ζ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

≔”&⌈″⌊5EWXVNa…-εW¶ζR”η

स्ट्रिंग प्राप्त करें qwertyuioplkmjnhbgvfcdxsza

≔⌕η§θ⁰ζ

शब्द के पहले वर्ण की स्थिति ज्ञात कीजिए। यह सूचकांक आम तौर पर एक चरित्र के पिछले हिस्से तक पहुंच गया है, लेकिन यह मान शब्द के पहले चरित्र को मुद्रित करने के लिए लूप के पहले पुनरावृत्ति को निकालता है।

Fθ

प्रत्येक पात्र पर लूप।

F⊕﹪⁻⌕ηιζ²⁶«

गणना करें कि शब्द के अगले वर्ण और लूप को कई बार शामिल करने के लिए कितने वर्ण प्रिंट करें।

§ηζ≦⊕ζ

अगले वर्ण को सांकेतिक रूप से अनुक्रमित प्रिंट करें और सूचकांक में वृद्धि करें।


क्या आपने स्ट्रिंग को घुमाने की कोशिश की है "qwertyuioplkmjnhbgvfcdxsza" और यह देखने के लिए कि क्या कोई घुमाव अधिक संकुचित होने के लिए होता है? मैं चारकोल के संपीड़न से परिचित नहीं हूं; शायद यह संभव नहीं है।
वालुस

@Vaelus मुझे या तो नहीं पता है इसलिए मैंने सभी 26 घुमावों की कोशिश की, लेकिन वे सभी 20 बाइट्स को संकुचित करते हैं। बेशक, उन सभी संभव चलता नहीं कर रहे हैं ...
नील
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.