मेरी मोटी उंगलियों को ठीक करो


21

कोड गोल्फ चैलेंज

मेरे पास एक isdue है, मेरी उंगलियां मोटी हैं और मैंने ty का एक isdue जमाया है [मेरे kryboard पर दाईं ओर एक कीस्ट्रेप आईएनजी।

मुझे डर है कि समय बीतने के साथ ही आइड्यूग खराब हो रहा है।

Sopn हर कीस्ट्रेप मैं wil बनाते हैं; दाईं ओर शिफ्ट हो जाना!

Befpre तो मैं एक कार्यक्रम (या एक प्रकार का) को ऑटिफ़ेक करने के लिए हर कीस्ट्रेप को बाईं ओर वापस स्थानांतरित करना चाहूंगा।

मैं अपने टॉमी टाँग के बाकी हिस्सों को सुनिश्चित करने के लिए सुनिश्चित करूँगा, ताकि एग कन्फ्यूज़न पैदा न हो!


उद्देश्य:

एक प्रोग्राम या फ़ंक्शन लिखें जो एक मानक QWERTY कीबोर्ड पर निम्न हरे रंग की कुंजियों में से एक का इनपुट लेता है और कुंजी के चरित्र को इसके बाईं ओर देता है।यहाँ छवि विवरण दर्ज करें


शर्तेँ:

• आप मान सकते हैं कि इस कार्यक्रम को चलाने वाला व्यक्ति QWERTY कीबोर्ड का उपयोग कर रहा है जैसे ऊपर चित्रित किया गया है।

• इनपुट और आउटपुट दोनों केस-असंवेदनशील हैं, आप इस चुनौती के लिए किसी भी मामले (या केस कॉम्बिनेशन का मिश्रण) का उपयोग कर सकते हैं और आप यह भी मान सकते हैं कि यदि वांछित हो तो सभी इनपुट एक मामले में होंगे।

• यदि आपकी भाषा में किसी कारण के लिए उपयोगकर्ता को रिटर्न कुंजी इनपुट करने की अनुमति देने का कोई तरीका नहीं है, तो आप इसे अनदेखा कर सकते हैं कि इसके लिए एक कीस्ट्रोक

• यह चुनौती सिर्फ कुंजी के डिफ़ॉल्ट मूल्यों के लिए है, उदाहरण के लिए यदि 4कुंजी दबाया गया है तो आप मान सकते हैं कि यह हमेशा रहेगा 4और कभी नहीं$

• आप मान सकते हैं कि केवल हरे रंग की कुंजी को कभी भी दबाया जाएगा।


उदाहरण Input-> Output:

S-> a
4-> 3
=-> -
[->p


यह , इसलिए सबसे कम बायटेकाउंट जीत के साथ कार्यक्रम!


क्या आप वृषण प्रदान कर सकते हैं?
क्रिकेई लिथोस

1
@KritiiLithos Certaimly! अब में tjat को संपादित करूँगा @
अल्बर्ट रेनशॉ

क्या आपका मतलब है ]-> [?
शुकी


3
आप परवाह नहीं कर सकते हैं, लेकिन यहां सामान्य ज्ञान का एक दिलचस्प टुकड़ा है: यह एक एएनएसआई कीबोर्ड लेआउट है। Enter कुंजी के ऊपर बैकस्लैश नोट करें; एक आईएसओ कीबोर्ड के विपरीत, जिसमें बैकस्लैश बटन Z के बाईं ओर है। (यह अमेरिकी भी है, लेकिन इसे पहचानना आसान है!)
Doddy

जवाबों:


7

रूबी, 76 71 69 बाइट्स

->a{"`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./"[/.#{a}/][0]}

5

पर्ल 6 , 87 83 69 बाइट्स

{[Q"`1234567890-=qwertyuiop[]\asdfghjkl;'
zxcvbnm,./".comb].&{%(.[1..*]Z=>$_)}{$_}}

{~Q"`1234567890-=qwertyuiop[]\asdfghjkl;'
zxcvbnm,./".match(/.)>$_/)}

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

आश्चर्य है कि अगर वहाँ कुछ है कि हार्ड कोडित स्ट्रिंग सांकेतिक शब्दों में बदलना करने के लिए एक छोटा सा है ...

( -14 बाइट्स के लिए जीबी के रेगेक्स विचार चुरा लिया ।)


1
हो सकता है कि अगर हमारे पास $"पर्वतमाला कुछ वर्ण बचा सकता है
वेन

5

जेली , 34 33 बाइट्स

ØD”`1¦ṭØqż“[]\“;'¶“,./“0-=”Fṡ2UZy

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

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

ØD”`1¦ṭØqż“[]\“;'¶“,./“0-=”Fṡ2UZy  Main link. Argument: s (string)

ØD                                 Digits; yield "0123456789".
  ”`1|                             Replace '0' with a backtick.
       Øq                          Qwerty; yield
                                   ["qwertyuiop", "asdfghjkl", "zxcvbnm"].
      ṭ                            Tack; add "`123456789" as the last element of
                                   the qwerty array.
          “[]\“;'¶“,./“0-=”        Yield ["[]\\", ";'\n", "0-="].
         ż                         Zip; combine the strings of the array to the
                                   left with the corresponding strings of the array
                                   to the right, yielding an array of string pairs.
                           F       Flatten, yielding a string.
                            ṡ2     Obtain all overlapping pairs of characters.
                              U    Upend; reverse each pair.
                               Z   Zip, yielding a pair of strings.
                                y  Translate the input s according to the generated
                                   replacement table.

3
मैं जेली नहीं जानता, क्या आप अपने कोड का स्पष्टीकरण जोड़ सकते हैं? मैं उत्सुक हूं कि आप पूरे कीबोर्ड के एक स्ट्रिंग शाब्दिक टाइप किए बिना कैसे दूर हो गए
अल्बर्ट रेनशॉ

1
मेरे पास अभी समय नहीं था, लेकिन मैं एक स्पष्टीकरण जोड़ दूंगा।
डेनिस

1
किया हुआ। मैंने इसे थोड़ा गोल्फ भी दिया।
डेनिस

1
Øqनिफ्टी! मुझे यह पसंद है, धन्यवाद!
अल्बर्ट रेनशॉ

4

पायथन 3, 85 78 बाइट्स:

lambda x,k="`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm<>?":k[k.‌​find(x)-1]

1
आप स्ट्रिंग को वैकल्पिक पैरामीटर के रूप में पास कर सकते हैं, 1 लैम्ब्डा का उपयोग करके: lambda x,k="1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm<>?":k[k.find(x)-1]कुछ बाइट्स को कम करने के लिए
रॉड

अच्छी बात है, मैं इसे जोड़ूंगा।
L3viathan

मुझे लगता है कि आपको 1 के बाईं ओर होने के लिए एक बैकटिक की आवश्यकता है
xnor

@xnor राइट, फिक्स्ड कि।
L3viathan

4

पायथन , 76 बाइट्स

s="1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm<>?"
dict(zip(s,'`'+s)).get

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

एक ऐसा शब्दकोष बनाता है, जो अपने शिफ्ट किए गए संस्करण के साथ वर्ण स्ट्रिंग को जिप करके प्रत्येक को अपनी बाईं ओर ले जाता है। निचला रेखा फ़ंक्शन है, शीर्ष एक परिभाषा है।

translateमानचित्रण बनाने के लिए उपयोग करने से एक लंबा समाधान मिला। इसे ऑनलाइन आज़माएं!

lambda s:s.translate("';"*22+"_0__9`12345678_LM-<>_\\VXSWDFGUHJKNBIO=EARYCQZT\nP][___"*4)

4

रेटिना , ५३ 51 बाइट्स

T`1-90\-=QW\ERTYUI\OP[]\\ASDF-HJ-L;'¶ZXCVBNM,./`\`o

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

एक सरल लिप्यंतरण हर चरित्र 1 स्थिति को पीछे की ओर ले जाता है। से सब कुछ 1करने के लिए /, मूल वर्ण सेट है, जबकि निम्न भाग नया सेट है, का उपयोग करते हुएo अन्य सेट से संकेत मिलता है।

Hऔर Lरेटिना में लिप्यंतरण के लिए विशेष वर्ण वर्ग हैं (क्रमशः हेक्स अंक और अपरकेस लेटर्स की मैपिंग), लेकिन सौभाग्य से वे अल्फ़बेटिकली ऑर्डर किए गए अनुक्रमों ( FGHऔर JKL) के अंदर कीबोर्ड पर होते हैं , इसलिए हम उन्हें सीमा में रखने से बच सकते हैं और इस तरह हासिल कर सकते हैं। 2 बाइट्स।



3

टीआई-बेसिक, 70 बाइट्स

मुझे संदेह है कि यह इससे छोटा हो सकता है ...

Input Str1
"`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./
sub(Ans,inString(Ans,Str1)-1,1

पुनश्च दो-बाइट टोकन हैं Str1, `, \, sub(, और inString(


3

वी , 57 54 51 बाइट्स

3 बाइट्स ने मल्टीलाइन कीबोर्ड के लिए मेरे द्वारा उपयोग किए जाने के hxVpबजाय @ nmjcman101 के लिए धन्यवाद बचाया

i`¬190-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./<esc>/<C-r>a
hxVp

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

<esc>है 0x1bऔर<c-r> है0x12

नोट: यह एंटर कुंजी का समर्थन नहीं करता है

इसमें unprintables शामिल हैं, इसलिए यहाँ हेक्सडंप है

00000000: 6960 ac31 3930 2d3d 7177 6572 7479 7569  i`.190-=qwertyui
00000010: 6f70 5b5d 5c61 7364 6667 686a 6b6c 3b27  op[]\asdfghjkl;'
00000020: 7a78 6376 626e 6d2c 2e2f 1b2f 1261 0a68  zxcvbnm,././.a.h
00000030: 7856 70                                  xVp

व्याख्या

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

कार्यक्रम सम्मिलित मोड से बाहर निकलता है <esc>। और फिर यहाँ /<c-r>aयह बफर में तर्क के लिए खोज करता है। यह कर्सर को उसके चरित्र के शीर्ष पर लाता है।

h                  " move the cursor to the left
 x                 " delete this character
  Vp               " select this line and replace it with the deleted character

मैं 100% नहीं हूं, लेकिन मुझे लगता है कि hylHVGpआप के बजाय मोटरसाइकिल प्रश्न में @DJMcMayhem क्या कर सकता है hxVp। मुझे यकीन नहीं है कि आप Gवहाँ क्यों डाल रहे हैं, क्या यह सब एक पंक्ति नहीं है? dhVpकाम भी करेगा।
nmjcman101 20

@ nmjcman101 आह हाँ, मैंने Gतब से रखा होगा जब कीबोर्ड का इस्तेमाल बहुस्तरीय हुआ करता था । धन्यवाद!
कृति लिथोस

2

पॉवरशेल, 82 बाइट्स

$k="1234567890-=qwertyuiop[]\asdfghjkl;'
zxcvbnm,./";$k[$k.IndexOf((read-host))-1]

Enter कुंजी समर्थित है, लेकिन इसके साथ परीक्षण नहीं किया जा सकता Read-Hostक्योंकि PowerShell में कुछ भी मूल्य नहीं होने के साथ एंट्री मारने का कार्य शामिल है।


2

जाप , 56 42 बाइट्स

;D=Dv ·q i"[]\\",A i";'",22 +",./")Dg1nDbU

व्याख्या

;D=Dv ·q i"[]\\",A i";'",22 +",./")Dg1nDbU

;D=D                                        // Shortcut for QWERTY (with newlines and spaces), assigning to variable D
    v                                       // Setting D to lowercase
      ·q                                    // Joining D into an array with no spaces or newlines
        i"[]\\",A                          // Inserting "[]\" into index 10 (A)
                   i";'",22                 // Inserting ";'" into index 22
                           +",./"           // Appending ",./"
                                  Dg        // Returns the character at index:
                                    1n      //    -1+
                                       DbU  //     Index of U (the input)

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


यह एक अच्छा है, क्या आप एक स्पष्टीकरण जोड़ सकते हैं?
अल्बर्ट रेनशॉ

1
@AlbertRenshaw ने एक स्पष्टीकरण जोड़ा।
ओलिवर

2

जावा 8, 99 बाइट्स

c->{String r="`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./";return r.charAt(r.indexOf(c)-1);}

स्पष्टीकरण:

इसे यहाँ आज़माएँ।

c->{                // Method with character as both parameter and return-type
  String r="`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./";
                    //  Literal String of the qwerty keyboard layout of the challenge
  return r.charAt(  //  Return the character at the following index:
    r.indexOf(c)    //   The index of the input character
    -1);            //   -1 to shift it to the left
}                   // End of method

1
मैं हार मानता हूं। मैं regex के साथ यह करने के लिए कोशिश कर रहा था, लेकिन मैं बुरी तरह कुछ विशेष वर्ण के साथ विफल ... c->"`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./".replaceAll("(?s).*(.)"+c+".*","$1")
ओलिवियर ग्रेगोइरे

2

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

c=>(s=".,mnbvcxz\n';lkjhgfdsa\\][poiuytrewq=-0987654321`")[s.indexOf(c)+1]

चूंकि /मेरे तार में नहीं है, indexOfरिटर्न -1, जब वेतन वृद्धि का कारण बनता .है। एक स्ट्रिंग को संसाधित करने के लिए 93 बाइट्स:

s=>s.replace(/./g,c=>s[s.indexOf(c)+1],s="><mnbvcxz\n';lkjhgfdsa\\][poiuytrewq=-0987654321`")

@ केविनक्रूजसेन स्पॉटिंग के लिए धन्यवाद कि मैंने गलती से उन तीन चाबियों को स्थानांतरित कर दिया था। मैंने अब उन्हें अनफ़िट कर दिया है।
नील

1

GNU sed , 72 + 1 (r फ्लैग) = 73 बाइट्स

s:$:`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./:
s:(.).*(.)\1.*:\2:

वापसी कुंजी का परीक्षण नहीं किया जा सकता है, क्योंकि डिजाइन द्वारा sed \nसीमांकक के रूप में इनपुट का विभाजन करता है और फिर स्क्रिप्ट को कई बार चलाता है जैसे कि लाइनें हैं।

टेस्ट रन: निरंतर इनपुट-आउटपुट जोड़ी (जब प्रेस किया Ctrl + D या Ctrl + C)

me@LCARS:/PPCG$ sed -rf shift_key.sed
s
a
4
3
=
-
a
\
1
`
\
]

1

05AB1E , 50 बाइट्स

'`žhÀ"-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./"JDÀ‡

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

स्पष्टीकरण:

'`                                                  # 1 char string: `
  žh                                                # Push numbers 0123456789
    À                                               # Rotated 1 left (123456890)
     "-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./"      # Push string literal
                                              J     # Join all elements pushed to the stack to one string
                                               D    # Duplicate
                                                À   # Rotate 1 left
                                                 ‡  # Transliterate: a.get(b.indexOf(input))

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