टाइपिंग, लेकिन बाईं ओर [बंद]


14

पृष्ठभूमि

आपको मीटिंग के लिए नोट्स लेने का काम दिया गया है। आप अपने Google डॉक्टर पर लिखना शुरू करते हैं, लेकिन आपके पास अपने कीबोर्ड को देखने के लिए मीटिंग के दौरान पर्याप्त समय नहीं होता है।

सौभाग्य से, आप अपने कीबोर्ड को देखे बिना टाइप कर सकते हैं। बैठक के बाद, आपको पता चलता है कि आपने जो कुछ भी लिखा था वह बाईं ओर एक कुंजी थी।

चुनौती

इस चुनौती के लिए, आप QWERTY कीबोर्ड लेआउट के अक्षरों, संख्याओं और स्पेस बार का उपयोग कर रहे होंगे।

  • पाठ के इनपुट (किसी भी मानक इनपुट विधि से) को देखते हुए, परिणामी पाठ को आउटपुट करें, जहां प्रत्येक वर्ण को कीबोर्ड पर बाईं ओर एक ले जाया जाता है।

    • पत्र के बहुमत के लिए, बस पत्र को देखो और बाईं ओर पत्र में अनुवाद ( cहो जाता है x, tहो जाता है r, आदि)।

    • पत्र के लिए q, शाब्दिक टैब वर्ण ( \t) में अनुवाद करें ।

    • पत्र के लिए a, कैप लॉक को सक्षम करें, इसलिए बाकी स्ट्रिंग का कैपिटलाइज़ेशन उलट है।

    • पत्र के लिए z, स्ट्रिंग में अगले अक्षर को कैपिटल करें।

    • स्पेस बार के लिए किसी अनुवाद की आवश्यकता नहीं है।

  • अनुवाद करते समय कैपिटलाइज़ेशन को संरक्षित करें, और कैप्स लॉक से सावधान रहें (यदि कैप्स लॉक सक्षम है, तो सुनिश्चित करें कि मामला विपरीत है)।

  • इनपुट स्ट्रिंग के सभी अक्षर अक्षर, संख्या या एक स्थान होंगे। कोई विराम चिह्न या अन्य वर्ण शामिल नहीं किए जा सकते।

परीक्षण के मामलों

\t एक शाब्दिक टैब वर्ण है

Hello world    -> Gwkki qieks
Code Golf      -> Xisw Fikd
Queried apples -> \tyweuws OOKWA

स्कोरिंग

बाइट्स में सबसे कम स्कोर जीतता है। मज़े करो!


11
QWERTY कीबोर्ड की प्रासंगिक पंक्तियों का एक त्वरित संदर्भ उपयोगी होगा, और चुनौती को स्वयं बनाए रखेगा
Jo King

4
क्या संख्याएं विराम चिह्न तक स्थानांतरित हो जाती हैं यदि उनके पहले "Z" था?
1

10
लेकिन Z बदलाव के अनुरूप है ...?
असंबंधित स्ट्रिंग

4
सुझाया गया टेस्ट केस: Azerty->wERT
Jitse

5
पत्र के लिए z, अगले अक्षर को स्ट्रिंग में कैपिटल करें -> इसका मतलब यह है कि हमें केवल अक्षर कैपिटलाइज़ेशन के बारे में ध्यान रखना है और अंकों और प्रतीकों के बीच टॉगल नहीं करना है? क्या अपेक्षित आउटपुट है 0123456789, a0123456789और z0z1z2z3z4z5z6z7z8z9? (इसके अलावा, कई गैर-QWERTY कीबोर्ड पर, 'कैप्स लॉक' वास्तव में 'शिफ्ट लॉक' के रूप में कार्य करता है। मेरा मानना ​​है कि QWERTY इस पैटर्न का पालन नहीं करता है, लेकिन यह हम में से उन लोगों के लिए निर्दिष्ट किया जाना चाहिए जो इससे परिचित नहीं हैं। )
अरनुलद

जवाबों:


11

जावास्क्रिप्ट (V8) , 271 बाइट्स

f=(s,k='~!@#$%^&*()_+`1234567890-=\tQWERTYUIOP{}|\tqwertyuiop[]\\ASDFGHJKL:"\n\\asdfghjkl;\'ZXCVBNM<>?zxcvbnm,./')=>s.replace(/[^ ]/g,c=>k[k.indexOf(c)-1]).replace(/\\([^\\]*)\\?/g,(m,c)=>c.replace(/[a-zA-z]/g,l=>l>'Z'?l.toUpperCase():l.toLowerCase())).replace(/[?']/,"")

इसे ऑनलाइन आज़माएं! मेरा पहला जावास्क्रिप्ट कोड गोल्फ। यह निश्चित रूप से छोटा हो सकता है, लेकिन मुझे लगता है कि यह एक अच्छी शुरुआत है।
यह मूल रूप से प्रत्येक चरित्र को kस्ट्रिंग में पाता है और इसे पिछले एक के साथ बदल देता है, फिर Aया उसके बीच की हर चीज के मामले को स्वैप करता है a, Zया z( या शिफ्ट कुंजी अपने आप कुछ भी नहीं करता है) की सभी घटनाओं को हटा देता है ।
यह एक सामान्य QWERTY कीबोर्ड लेआउट होना चाहिए, लेकिन मुझे बताएं कि नहीं।


अपने स्वयं के TIO लिंक में, zebras=>wveAपरीक्षण का मामला गलत प्रतीत होता है। पहले एक अपरकेस प्रिंट करने का zकारण होना चाहिए । ओपी से: "पत्र के लिए , स्ट्रिंग में अगले अक्षर को कैपिटल करें।" ewz
Night2

@ नाइट 2 चीयर्स, मैंने ओपी को स्पष्ट करने से पहले पोस्ट किया। मैंने मान लिया कि शिफ्ट की को एक बार दबाने से कुछ नहीं होगा।
मैथ्यू जेन्सेन

5

पायथन 3 , 211 बाइट्स

d=' ~!@#$%^&*()`~1!2@3#4$5%6^7&8*9(0)		qQwWeErRtTyYuUiIoOpPaAsSdDfFgGhHjJkKlLzZxXcCvVbBnNmM  '
c=s=0
for i in input():k=d.find(i);print(end=d[k-2+(c*i.isalpha()^s)*(1-k%2*2)][i in'aAzZ':]);c^=i in'aA';s=i in'zZ'

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

एक लुकअप स्ट्रिंग का उपयोग करता है जिसमें सामान्य चरित्र और इसके शिफ्ट-संशोधित संस्करण को एक साथ समूहीकृत किया जाता है। इनपुट में प्रत्येक वर्ण के लिए, यह वर्ण को बाईं ओर दो स्थानों पर ले जाएगा। शिफ्ट XOR कैप्स लॉक के सक्रिय होने पर लुकअप वैल्यू में जोड़कर 1(या -1यदि वर्तमान वर्ण अपरकेस है) कैपिटलाइज़ेशन को बदल देता है। नंबर कैप्स लॉक संशोधक से प्रभावित नहीं होते हैं।


2

PHP , 227 बाइट्स

for(;''<$s=$argn[$i++];)$s!=a&&$s!=A?$s!=z&&$s!=Z?($t=$m[stripos($m='~1!2@3#4$5%6^7&8*9(0	qwertyuiopasdfghjklzxcvbnm',$s)-1])+(print$s>' '?$s<A?!$h?$s-1?$s?$s-1:9:'`':$t:($t>=A&&(($s<a)+$h+$c)%2?$t^' ':$t):$s)+$h=0:$h=1:$c=!$c;

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

मैंने एक मैपिंग स्ट्रिंग ( ~1!2@3#4$5%6^7&8*9(0 qwertyuiopasdfghjklzxcvbnm) बनाया है, जिसके प्रत्येक अंक के लिए बाईं ओर उनका SHIFT मोड है और प्रत्येक अक्षर के लिए उनके बाईं ओर अक्षर / कुंजी है।

मैं इनपुट वर्णों पर और प्रत्येक वर्ण के लिए लूप करता हूं:

  • यदि चरित्र है aया A, कैप्स लॉक ध्वज उल्टा हो जाता है (तार्किक नहीं)।
  • यदि चरित्र है zया Z, शिफ्ट ध्वज को सेट किया गया है 1
  • जब चरित्र में नहीं है aAzZ:
    • मैपिंग स्ट्रिंग में करंट कैरेक्टर के बाईं ओर कैरेक्टर को स्टोर किया जाता है $t
    • यदि वर्तमान वर्ण एक स्थान है, तो वह मुद्रित होता है।
    • यदि वर्तमान वर्ण एक अंक है, और यदि शिफ्ट ध्वज है 1, $tतो मुद्रित किया जाता है, अन्यथा, यदि अंक है 1, `मुद्रित किया जाता है, यदि अंक है 0, 9तो मुद्रित किया जाता है और अन्यथा, digit-1मुद्रित किया जाता है।
    • यदि वर्तमान चरित्र एक पत्र है, जो शिफ्ट फ्लैग की स्थिति, कैप्स लॉक फ्लैग और वर्तमान चरित्र के आवरण (कम / ऊपरी) पर आधारित है, $t निचले या ऊपरी मामले में मुद्रित किया जाता है। यहां एकमात्र विशेष मामला टैब कैरेक्टर है, जो इस प्रकार मुद्रित होता है।
    • शिफ्ट फ्लैग को हमेशा 0अंत में सेट किया जाता है ।

2

लाल , 218 बाइट्स

func[t][c: z: 0 rejoin collect[foreach s t[case[find"Aa"s[c: c xor 32]find"Zz"s[z: 32]on
[keep(select/case"  poiuytrewq^-lkjhgfdsamnbvcxzPOIUYTREWQ^-LKJHGFDSAMNBVCXZ0987654321~"s)xor either s <#"Z"[0][c xor z]z: 0]]]]]

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

वर्तमान में AaZzअंकों को प्रभावित नहीं करते हैं।


यह काम करने के लिए प्रतीत नहीं होता है'A pear' -> ' OWe'
Jitse


@ जीत लेकिन वास्तव में अंकों के साथ अच्छी तरह से काम नहीं करता है, यह पूरी तरह से ओपी से स्पष्ट नहीं है
गैलेन इवानोव

2
मैं मानता हूं, चुनौती बहुत अस्पष्ट है।
जित्स

2

सी (जीसीसी) , 276 बाइट्स

i;j;k;h;l;m;n;o;f(char*b){char*c=calloc(m=strlen(b),1),*a=" \tqwertyuiop\aasdfghjkl\nzxcvbnm\tQWERTYUIOP\aASDFGHJKL\nZXCVBNM`1234567890";for(i=k=j=n=0;j<=m;l=a[i=index(a,b[j++])-a-1])k=l^7?k:!k,o=l>64&l<91?a[i-30*k]:l<97?h=i?l^7?l?l^10?l:0:32:0:0:a[i+29*k],o?c[n++]=o:n;b=c;}

-33 बाइट्स के लिए सीलिंगकैट के लिए धन्यवाद।

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


k^=!(l^7)इसके बजाय सुझावk=l^7?k:!k
छत
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.