একটি কীবোর্ড অতিক্রম করুন


21

ইনপুট হিসাবে একটি শব্দ (বা অক্ষরের কোনও অনুক্রম) দেওয়া, আপনাকে অবশ্যই প্রতিটি বর্ণের মধ্যে এমনভাবে বিভক্ত করতে হবে যে ফলস্বরূপ প্রতিটি অক্ষরের জোড় একটি কিউওয়ার্টি কীবোর্ডের সংলগ্ন হয়, যেন আপনি কোনও দৈত্য কীবোর্ডের উপর দিয়ে হাঁটা দিয়ে ইনপুট টাইপ করেন। উদাহরণ হিসেবে বলা যায়, ' হ্যাঁ ' 'হতে পারে Y TR স্প্যানিশ ভাষায় ', ' বিড়াল ' হয়ে উঠতে পার ' ভাবে XZ লস একটি Wer টি '।

নিয়মাবলী:

  • এটি আপনার ব্যবহার করা কীবোর্ড ফর্ম্যাট:

    qwertyuiop
    asdfghjkl
      zxcvbnm

    এই লেআউটে স্পর্শ করছে এমন কীগুলির যে কোনও জোড়া সংলগ্ন হিসাবে বিবেচিত হবে। উদাহরণস্বরূপ, 's' এবং 'e' আজেকেন্ট তবে 's' এবং 'r' নয়।

  • ইনপুট "শব্দ" অক্ষরের যে কোনও ক্রম নিয়ে গঠিত। এটিতে কেবলমাত্র অক্ষর থাকবে, সুতরাং আপনার বিশেষ অক্ষরগুলির সাথে ডিল নেই।
  • ইনপুটটি যে কোনও সুবিধাজনক আকারে থাকতে পারে: স্টিডিন, একটি স্ট্রিং, একটি তালিকা ইত্যাদি Let চিঠির ক্ষেত্রে কোনও ব্যাপার হয় না; আপনি আরও সুবিধাজনক যা নিতে পারেন।
  • আউটপুটটি যে কোনও সুবিধাজনক আকারে হতে পারে: স্টডআউট, একটি স্ট্রিং, একটি তালিকা ইত্যাদি ter অক্ষরের ক্ষেত্রে কোনও বিষয় আসে না এবং এটির সাথে সামঞ্জস্য হওয়ার প্রয়োজন হয় না।
  • কীবোর্ড জুড়ে যে কোনও পথই বৈধ, যদি না আপনি পরের চিঠিটি পাওয়ার আগে আবার আগের অক্ষরটি অতিক্রম করতে পারেন। উদাহরণস্বরূপ, ' হাই ' " h j i " বা ' h jnbgyu i ' হয়ে উঠতে পারে , তবে ' h b h u i ' হতে পারে না।
  • একটা চিঠি, নিজেই সঙ্গে ajacent নয় তাই ' পোল ' হতে পারে না ' ভোট '। এর পরিবর্তে এটি পছন্দ 'হয়ে ওঠে করতে হবে Pol '।
  • শব্দের আগে বা পরে কোনও আউটপুট অক্ষর অনুমোদিত নয়। উদাহরণ হিসেবে বলা যায়, ' ছিল ' হতে পারে না 'Tre ছিল ' বা ' ছিল dfg'।

এটি কোড গল্ফ, বাইট জেতে সংক্ষিপ্ত উত্তর।


সুতরাং আমরা ইনপুট অনুযায়ী কোনও বৈধ 'ওয়াক' আউটপুট দিচ্ছি? মনে হচ্ছে এটি দুটি ইনপুট হিসাবে দেওয়া ভাল হবে, এটি বৈধ পদচারণা কিনা তা নির্ধারণ করুন।
ভেস্কাহ

দেখে মনে হচ্ছে dewqwertyএটি একটি বৈধ পথ dy। আপনি কি তা নিশ্চিত করতে পারবেন?
আর্নৌল্ড

@ আরনাউল্ড হ্যাঁ, এটি।
ভেলাস

@ ওয়েসকাঃ এটা ঠিক; একটি ইনপুট জন্য বৈধ পদচারণা আউটপুট। এটি অপ্টিমাইজেশনের জন্য অনুমতি দেয় যা সম্ভব নাও হতে পারে যদি উদাহরণস্বরূপ, এটি যদি একটি সংক্ষিপ্ততম হাঁটা পথ হতে হয়।
ভেলাস

উত্তর:


6

জাপট -g , 23 বাইট

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

এটি অনলাইন চেষ্টা করুন!

বড় হাতের অক্ষরের অ্যারে হিসাবে ইনপুট নেয়। অন্য উত্তরগুলির সাথে খুব মিল similar

ব্যাখ্যা:

;                          :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কোডের পরে কীভাবে আসে, আগে না?
ব্রুসওয়েেন

ব্রুস ওয়াইন re.findallল্যাম্বডা চলার সময় মূল্যায়ন করা হবে, সুতরাং ল্যাম্বদার সংজ্ঞা ঠিক থাকার পরে আমদানি করা ঠিক হবে। বলা হচ্ছে, পূর্বে আমদানি করা আরও পরিষ্কার, এর দরকার নেই
পুশকিন

@ পুশকিন আহ, আমি জানতাম না যে স্পষ্ট করার জন্য ধন্যবাদ! আপনি কি কেবল ব্যক্তিগত পছন্দ / পছন্দ হিসাবে আমদানি করেছেন বা এটি মোটেও বাইট গণনাতে সহায়তা করে?
ব্রুসওয়েেন

2
@ ব্রুসওয়েইন এই ফোরামে এটি একটি সম্মেলনের কিছুটা হলেও। এটি ঠিক তাই যাতে এটি টিআইও সাইট কোডটি সংগঠিত করে with "এটি অনলাইনে চেষ্টা করুন!" ক্লিক করার চেষ্টা করুন আমি বলতে চাইছি কি লিঙ্ক।
mypetlion

8

পাইথন 2 , 274 বাইট (অনুকূল সমাধান)

296 300 302 308 315 319 324 327 328 430 432 বাইট

-4 বাইট মাইপেলিয়নকে ধন্যবাদ

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
@ মাইপেটলিয়ন আপনি একটি গুরুত্বপূর্ণ হ্রাস করেছেন, আপনি উত্তরটি আপডেট করতে পারেন :)
এমডাহ্মোনে


3

05 এ বি 1 ই , 43 বাইট

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

এই চ্যালেঞ্জের জন্য সঠিক ভাষা নয়, যেহেতু এটি অন্যান্য উত্তরগুলির মতো রেগেক্স ব্যবহার করতে পারে না ..

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

ü)               # 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⊕﹪⁻⌕ηιζ²⁶«

শব্দের পরবর্তী অক্ষর এবং বহুবার যে লুপটি অন্তর্ভুক্ত করতে কত অক্ষর মুদ্রণ করতে হবে তা গণনা করুন।

§ηζ≦⊕ζ

পরবর্তী অক্ষরটি চক্রাকারে সূচকযুক্ত এবং সূচককে বাড়িয়ে দিন।


আপনি কি "কিওয়ারটিউইওপলক্মিজহিনবিজিভিএফসিডিএক্সজা" স্ট্রিংটি ঘোরানোর চেষ্টা করেছেন এবং দেখছেন যে কোনও আবর্তন আরও সংকোচযোগ্য হয়? আমি কাঠকয়ালের সংকোচনের সাথে পরিচিত নই; সম্ভবত এটি সম্ভব নয়
ভেলাস

@ ভেলাস আমি জানি না তাই আমি সমস্ত 26 টি ঘূর্ণন চেষ্টা করেছিলাম তবে তারা সমস্ত 20 বাইটে সংকুচিত হয়। অবশ্যই, এগুলি সমস্ত সম্ভাব্য পদক্ষেপ নয় ...
নীল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.