कीबोर्ड लेआउट चुनौती


14

आमतौर पर उपयोग किए जाने वाले कीबोर्ड लेआउट QWERTY लेआउट है जैसा कि नीचे दिखाया गया है।

क्वर्टी कुंजीपटल

लेकिन अन्य कीबोर्ड लेआउट भी हैं:

ड्वोरक

DVORAK कीबोर्ड

कोलमैक

COLEMAK कीबोर्ड

WORKMAN कार्य कीबोर्ड

आपका कार्य

आपका कोड दो इनपुट लेगा: कीबोर्ड लेआउट का नाम और एक स्ट्रिंग ट्रांसज करने के लिए। आपका लक्ष्य अपने QWERTY इनपुट को रूपांतरित करना है जैसे कि आप पहले पैरामीटर के रूप में दिए गए कीबोर्ड लेआउट के साथ टाइप कर रहे थे।

नियम

इनपुट प्रारूप मुफ़्त है, आप स्ट्रिंग, सरणियों आदि का उपयोग कर सकते हैं। इसके अलावा, आप अपनी बाइट की संख्या को कम करने के लिए लेआउट का प्रतिनिधित्व करने के लिए किसी भी तीन अलग-अलग मानों का उपयोग कर सकते हैं, लेकिन उन्हें प्रत्येक को 10 बाइट्स या उससे कम में प्रस्तुत करना होगा।

आपको केवल एक सफेद पृष्ठभूमि के साथ कुंजी को संभालने की आवश्यकता है। विशेष रूप से, आपको मुद्रण योग्य ASCII वर्णों को QWERTY वर्णमाला से दूसरे वर्णमाला में बदलना चाहिए:

 QWERTY: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
 DVORAK: !_#$%&-()*}w[vz0123456789SsW]VZ@AXJE>UIDCHTNMBRL"POYGK<QF:/\=^{`axje.uidchtnmbrl'poygk,qf;?|+~
COLEMAK: !"#$%&'()*+,-./0123456789Oo<=>?@ABCSFTDHUNEIMKY:QPRGLVWXJZ[\]^_`abcsftdhuneimky;qprglvwxjz{|}~
WORKMAN: !"#$%&'()*+,-./0123456789Ii<=>?@AVMHRTGYUNEOLKP:QWSBFCDXJZ[\]^_`avmhrtgyuneolkp;qwsbfcdxjz{|}~

(ध्यान दें: यह @ETHproductions द्वारा हाथ से प्रेषित किया गया था, इसलिए यदि आपको कोई त्रुटि दिखाई देती है, तो कृपया उन्हें इंगित करें!)

उदाहरण

DVORAK zZxX जैसा कि इनपुट आउटपुट के रूप में देगा ;:qQ

यह इसलिए बाइट्स जीत में सबसे छोटा जवाब है!


1
इसके अलावा, कुछ और परीक्षण मामले उपयोगी होंगे।
15

1
@ टटलमैन हां, आप उदाहरण के लिए 0 1 2 ले सकते हैं

1
रुको, क्या हम उदाहरण !_#$%&-()*}w[vz0123456789SsW]VZ@AXJE>UIDCHTNMBRL"POYGK<QF:/\=^{`axje.uidchtnmbrl'poygk,qf;?|+~के लिए Dvorak कीबोर्ड के इनपुट के रूप में ले सकते हैं ? यह चुनौती को स्पष्ट करेगा ... लंबाई प्रतिबंध या कुछ इसी तरह की शुरुआत करने के बारे में कैसे?
ETHproductions

1
@ EriktheOutgolfer लेकिन फिर आप !_#$%&-()*}w[vz0123456789SsW]VZ@AXJE>UIDCHTNMBRL"POYGK<QF:/\‌​=^{`axje.uidchtnmbrl‌​'poygk,qf;?|+~इनपुट के रूप में ले सकते हैं
ETHproductions

1
@ETHproductions हां, आप उन वर्णों को इनपुट के रूप में उपयोग कर सकते हैं, हालांकि निर्माण के लिए उन पर निर्भर नहीं होना चाहिए। उनके लिए एकमात्र उपयोग यह चुनना होगा कि किस लेआउट का उपयोग करना है। 10 बाइट्स एक निश्चित सीमा (IMO बहुत कम) है, यही कारण है कि मुझे यह पसंद नहीं है। और हाँ आप कहते हैं कि बाइट्स चार्ज़ नहीं। मुझे लगता है कि यह अधिक समय के लिए सैंडबॉक्स किया जाना चाहिए था।
एरिक आउटोलॉफ़र

जवाबों:


3

रूबी , 258 247 238 बाइट्स

->c,t{c.tr"#{$f='\'"+,-./<=>?[]{'}}:;B-Z_b-z",%W(-_}w[vzW]VZ/=?+SsXJE>UIDCHTNMBRL"POYGK<QF:{xje.uidchtnmbrl'poygk,qf;
#$f}OoBCSFTDHUNEIMKY:QPRGLVWXJZ_bcsftdhuneimky;qprglvwxjz
#$f}IiVMHRTGYUNEOLKP:QWSBFCDXJZ_vmhrtgyuneolkp;qwsbfcdxjz)[t]}

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

यह दो तर्कों को ग्रहण करने वाला एक कार्य है: संदेश को स्वैप किया जाना है, और 0-2 को लेआउट को स्वैप करने के लिए मान का प्रतिनिधित्व करता है, जहां 0 को Dvorak, 1 से कोलेमक और 2 से कर्मकार से मेल खाती है।

मौलिक रूप से, मुझे नहीं लगता कि यह अन्य उत्तरों की तुलना में बहुत अलग है। अधिक आसानी से, यह इस तरह दिखता है:

def swap_layout(message, layout)
    keyboards = [DVORAK, COLEMAK, WORKMAN] # Omitted here for brevity
    return message.tr(QWERTY, keyboards[layout])
end

रूबी के string#trकार्य में दो तर्क होते हैं: एक स्ट्रिंग जिसमें अक्षरों को प्रतिस्थापित किया जाना है, और एक स्ट्रिंग जिसमें उनके प्रतिस्थापन हैं। सहायक रूप से, यह आपको a-zसिंटैक्स का उपयोग करके वर्णों की श्रेणियों को निर्दिष्ट करने की अनुमति देता है । अन्य प्रमुख अंतरिक्ष-बचत प्राप्ति यह है कि उन सभी चार लेआउट में समान वर्णों को शामिल करना आवश्यक नहीं है, जो मुझे सभी अंकों से छुटकारा पाने की अनुमति देते हैं, ऊपरी और निचले दोनों में अक्षर "ए" और एक मुट्ठी भर विशेष वर्ण।

सिंटैक्स का एक और अजीब सा उपयोग है %W()। यह कोष्ठक द्वारा अलग किए गए कोष्ठक के अंदर सब कुछ युक्त तारों की एक सरणी बनाता है। सब लाइनब्रेक वास्तव में तत्व विभाजकों के रूप में कार्य करते हैं। %W()स्ट्रिंग इंटरपोलेशन की भी अनुमति देता है (जो #{}ऑपरेटर के साथ किया जाता है ) - %w()एक ही बात होती, लेकिन बिना स्ट्रिंग इंटरपोलेशन के।

मैं ड्वोरक को दोष देने के लिए अपनी योजनाओं के साथ अनुकूलन के लिए अपनी इच्छा के साथ खिलवाड़ करने के लिए एक पल लेना चाहूंगा, हर किसी से पूरी तरह से अलग होने के लिए; एक Qwerty / Colemak / कर्मकार समाधान इतनी खूबसूरती से छोटा हो सकता था ...


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

@Saggy पोस्ट पर पूछने वाले की टिप्पणियों में से एक को उद्धृत करने के लिए, "आप उदाहरण के लिए 0 1 2 ले सकते हैं", जो कि मैंने ठीक किया है।
टटलमैन

5

जावास्क्रिप्ट (ईएस 7), 282 273 251 250 बाइट्स

सिंटैक्स में एक कीबोर्ड लेआउट आईडी kऔर वर्णों की एक सरणी aलेता है (k)(a)। अनुवादित वर्णों की एक सरणी देता है।

लेआउट आईडी हैं:

  • 32
  • 64
  • 160
k=>a=>a.map(c=>1/(t=`1_3-2}w[vz8SsW]VZ1XJE>UIDCHTN0BRL"POYGK<QF:/0=0{1xje.uidchtn0brl'poygk,qf;?0+995Oo6SFTD0UNEI0KY:0PRGL2J8sftd0unei0ky;0prgl2j998Ii5VMHRT0YUNEOLKP:0W0BFCD0J6vmhrt0yuneolkp;0w0bfcd0j5`.replace(/\d/g,n=>15**n)[c.charCodeAt()+k])?c:t)

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

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

दबाव

सभी तीन लक्ष्य लेआउट एक ही संपीड़ित स्ट्रिंग में संग्रहीत हैं, जहां प्रत्येक वर्ण या तो है:

  • QWERTY से एक अनुवाद चरित्र
  • लगातार अंकों की संख्या का प्रतिनिधित्व करने वाला एक अंक जिसका अनुवाद करने की आवश्यकता नहीं है

n15n10

n | 15**n       | length
--+-------------+-------------
0 | 1           | 1
1 | 15          | 2
2 | 225         | 3
3 | 3375        | 4
4 | 50625       | 5 (not used)
5 | 759375      | 6
6 | 11390625    | 8
7 | 170859375   | 9 (not used)
8 | 2562890625  | 10
9 | 38443359375 | 11

उदाहरण के लिए, #$%&-()*ड्वोरक में के रूप में संग्रहीत किया जाता है 3-2, क्योंकि #$%&और ()*QWERTY में समान मैपिंग है और केवल -एक वास्तविक अनुवाद है।

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

विसंपीड़न

n15n3-23375-225

अनुवाद

प्रत्येक वर्ण cके लिए a, हम असम्पीडित लेआउट स्ट्रिंग में एक ऑफसेट के रूप में tउपयोग करते हुए, अनुवाद चरित्र को निकालते हैं k, और परीक्षण करते हैं कि क्या यह एक अंक है 1/t। यदि हां, तो हम cइसके बजाय मूल चरित्र का उत्पादन करते हैं ।


मुझे एक टोपी लगाने के लिए नीचे की ओर दौड़ना था ताकि मैं इसे आपके सामने रख सकूं! मुझे पता था कि कोई मुझे मारेगा लेकिन मुझे खुशी है कि मैं स्टाइल में पिट गया। जैसे ही मैंने इस उत्कृष्ट कृति को खींच लिया, आप जैसे ही मैंने पचा लिया, वैसे ही आपने मेरा उत्थान किया।
झबरा

4

रेटिना , 273 270 बाइट्स

T`p` !_#-&\-()*}\w[vzdSsW]VZ@AXJ\E>UIDC\HTNMBR\L"P\OYGK<QF:/\\=^{\`axje.ui\dc\htnmbr\l'\p\oygk,qf;?|+~`^D.*
T`p` -9\O\o<-CSFTD\HUN\EIMKY:QPRG\LVWXJZ-csft\d\huneimky;q\prg\lv-xjz-~`^C.*
T`p` -9Ii<-AVM\HRTGYUN\E\O\LKP:QWSBFCDXJZ-avm\hrtgyune\o\lk\p;q\wsbfc\dxjz-~`^W.*
^.

इसे ऑनलाइन आज़माएं! संदेश को एक अक्षर से D, Cया Wइच्छित कीबोर्ड लेआउट के लिए उपसर्ग करें । दुर्भाग्य से रेटिना जादू पत्र का एक समूह का समर्थन करता है ( pस्पष्ट एक होने, लेकिन मैं एक में पर्ची करने के लिए प्रबंधन कैसे किया d) को छोड़कर मैं का उपयोग करने में सक्षम था, जो उद्धृत किया जाना करने के लिए सभी की जरूरत v-xके बजाय v\wx। संपादित करें: 3 बाइट्स @ETHproductions की बदौलत सहेजे गए।


यदि -चरित्र पर्वतमाला का प्रतिनिधित्व करते हैं, मुझे लगता है कि आप को बदलने के द्वारा कुछ बचा सकता है <-@ABCके लिए <-C
ETHproductions

@ETHproductions हुह, मुझे आश्चर्य है कि मैंने इसे ऊपरी मामले के संस्करण में क्यों अनदेखा किया ...
नील

3

PHP, 364 बाइट्स

echo strtr($argv[2],($t=[[":;BCDEFHIJKLMNOPRTUVWYbcdefhijklmnoprtuvwy","IiVMHRTYUNEOLKP:WBFCDJvmhrtyuneolkp;wbfcdj"],[":;DEFGIJKLNOPRSTUYdefgijklnoprstuy","OoSFTDUNEIKY:PRGLJsftduneiky;prglj"],["\"'+,-./:;<=>?BCDEFGHIJKLNOPQRSTUVWXYZ[]_bcdefghijklnopqrstuvwxyz{}","_-}w[vzSsW]VZXJE>UIDCHTNBRL\"POYGK<QF:/={xje.uidchtnbrl'poygk,qf;?+"]][ord($argv[1])%3])[0],$t[1]);

सरणी में 3 सरणियाँ होती हैं जहाँ कुंजी 0 = W, 1 = C, 2 = D के लिए होती है

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


2

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

कुछ चतुर तरीके से लेआउट को संयोजित करने की कोशिश की, लेकिन इससे बहुत मदद नहीं मिली।
इसे ऑनलाइन आज़माएं

from string import*
Q=' '+printable
D=' '+digits
p,P=punctuation.split(':;')
w='avmhrtgyuneolkp;qwsbfcdxjz'
c='abcsftdhuneimky;qprglvwxjz'
d="uidchtnmbrl'poygk"
K={'C':D+c+c.upper().replace('Y;','Y:')+p+'Oo'+P,'W':D+w+w.upper().replace('P;','P:')+p+'Ii'+P,'D':D+'axje.'+d+',qf;AXJE>'+d.upper().replace("L'",'L"')+'<QF:!_#$%&-()*}w[vzSsW]VZ@/\=^{`?|+~'}
k,s=input().split()
print''.join(map(lambda x:K[k[0]][Q.index(x)],s))

अच्छी तरह से खेला :) मैं अजगर पर उतना अच्छा नहीं हूं, इसलिए मैं वास्तव में आपको इस गोल्फ में मदद नहीं कर सकता हूं ^ ^

2

जावास्क्रिप्ट (ईएस 6), 461 409 404 395 385 बाइट्स

मैंने बस में बैठते समय अपने फोन पर नीचे का मूल संस्करण लिखा था और फिर समय के साथ ठीक से गोल्फ के लिए भाग गया था ताकि पालन करने के लिए अधिक crunching हो। अब तक की मदद के लिए @ETHproductions को धन्यवाद।

कीबोर्ड स्ट्रिंग्स को सीधे प्रश्न से कॉपी किया गया था ताकि किसी भी त्रुटि के लिए एंटोनी ETH को दोषी ठहराया जा सके !

यह कीबोर्ड लेआउट का प्रतिनिधित्व करने वाला पूर्णांक लेता है (DVORAK के लिए 0, COLEMAK के लिए 94 और WORKMAN के लिए 188) और स्ट्रिंग के एक सरणी को तर्क द्वारा क्यूरिंग के रूप में - जैसे, f(0)(["z","Z","x","X"])आउटपुट ;:qQ

k=>s=>s.map(c=>`!_#$%&-()*}w[vz${a="0123456789"}SsW]VZ@AXJE>UIDCHTNMBRL"POYGK<QF:/\\=^{\`axje.uidchtnmbrl'poygk,qf;?|+~${b="!\"#$%&'()*+,-./"+a}Oo<=>?@ABCSFTDHUNEIMKY:QPRGLVWXJ${d="Z[\\]^_\`a"}bcsftdhuneimky;qprglvwxjz{|}~${b}Ii<=>?@AVMHRTGYUNEOLKP:QWSBFCDXJ${d}vmhrtgyuneolkp;qwsbfcdxjz{|}~`[`${b}:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY${d}bcdefghijklmnopqrstuvwxyz{|}~`.search(c)+k]).join``

कोशिश करो

f=
k=>s=>s.map(c=>`!_#$%&-()*}w[vz${a="0123456789"}SsW]VZ@AXJE>UIDCHTNMBRL"POYGK<QF:/\\=^{\`axje.uidchtnmbrl'poygk,qf;?|+~${b="!\"#$%&'()*+,-./"+a}Oo<=>?@ABCSFTDHUNEIMKY:QPRGLVWXJ${d="Z[\\]^_\`a"}bcsftdhuneimky;qprglvwxjz{|}~${b}Ii<=>?@AVMHRTGYUNEOLKP:QWSBFCDXJ${d}vmhrtgyuneolkp;qwsbfcdxjz{|}~`[`${b}:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY${d}bcdefghijklmnopqrstuvwxyz{|}~`.search(c)+k]).join``
o.innerText=f(j.value=0)([...i.value="zZxX"])
i.oninput=j.oninput=_=>o.innerText=f(+j.value)([...i.value].filter(c=>`!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~`.includes(c)))
<select id=j><option value=0>DVORAK<option value=94>COLEMAK<option value=188>WORKMAN</select><input id=i><pre id=o>


वास्तव में मैंने स्ट्रिंग्स को संकलित किया: P
ETHproductions

आइए देखें ... आपको QWERTYइनपुट के रूप में कभी नहीं मिलेगा , इसलिए मुझे लगता है कि आप ऑब्जेक्ट को एक चर में संग्रहीत नहीं करके कुछ बाइट्स बचा सकते हैं। यह कुछ इस तरह दिखाई चाहते हैंs=>[...s].map(c=>({D:"...",C:"...",W:"..."}[k[0]]["...".indexOf(c)]).join``
ETHproductions

अहा, हाँ, मुझे पता था कि ऑब्जेक्ट को सीधे काम करने का एक तरीका था, map()लेकिन मैं समय से बाहर भाग गया - विश्वास करो या नहीं, मैंने इसे बस में बैठकर सिनेमा के लिए लिखा था। मैं इसे आपके सुझाव और कुछ सुधारों के साथ अपडेट करूंगा, जिन्हें मैंने कल खुद देखा है।
झबरा

1

05AB1E , 199 192 187 बाइट्स

žQDIiA¦'mKDuì“"'+,-./:;<=>?[]_{}“«.•4Zl˜η‡#ûwj˜ÐAδO•Duìð“>"<:.',;“S.;“_-}w[vzSsW]VZ/={?+“«ë¹<i.•2¸3'ÐQïK¤)•Duì„:;©ì.•C^ÿ¶₆*γŽ¨ï•Duì„Ooìë.•Brì·=ζW˜ΛlÝδ•Duì®ì.•]X)àƒ₆ä¤QúØM•Duì„Iiì}ð®S.;}‡‡

1DVORAK के लिए आईडी का उपयोग करता है ; 2COLEMAK के लिए और 3WORKMAN के लिए।
आईडी को पहले धक्का देता है, फिर हम जिस स्ट्रिंग को बदलना चाहते हैं।

इसे ऑनलाइन आज़माएं या तीनों के लिए पूर्ण ASCII- श्रेणी सत्यापित करें

स्पष्टीकरण:

žQ                    # Push printable ASCII builtin string:
                      #  “ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~“
  D                   # Duplicate it
   Ii                 # If the input-integer is 1:
     A                #  Push the lowercase alphabet
      ¦'mK           '#  Remove the first character (the 'a') and 'm'
          Duì         #  Prepend an uppercase copy
     "'+,-./:;<=>?[]_{}“«
                     "#  And then append the string “"'+,-./:;<=>?[]_{}“
     .•4Zl˜η‡#ûwj˜ÐAδO 
                      #  Push compressed string "xje uidchtnbrl poygk qf "
        Duì           #  Prepend an uppercase copy
     ð                #  Push a space " "
      “>"<:.',;“S    "#  Push the characters [">",'"',"<",":",".","'",",",";"]
                 .;   #  Replace the first space with ">", second with '"', etc.
     _-}w[vzSsW]VZ/={?+“«
                      #  And then append the string “_-}w[vzSsW]VZ/={?+“
   ë                  # Else:
    ¹<i               #  If the input-integer is 2 instead: 
       .•2¸3'ÐQïK¤)• '#   Push compressed string "defgijklnoprstuy"
          Duì         #   Prepend an uppercase copy
       „:;            #   Push string ":;"
          ©           #   Store it in the register (without popping)
           ì          #   And then prepend this ":;" in front of the "DEF...def..."-string
       .•C^ÿ¶₆*γŽ¨ï•  #   Push compressed string "sftduneiky prglj"
          Duì         #   Prepend an uppercase copy
       Ooì           #   And then prepend "Oo"
    ë                 #  Else (so the input-integer is 3):
     .•Brì·=ζW˜ΛlÝδ•  #   Push compressed string "bcdefhijklmnoprtuvwy"
        Duì           #   Prepend an uppercase copy
     ®ì               #   And then prepend ":;" (from the register)
     .•]X)àƒ₆ä¤QúØM  #   Push compressed string "vmhrtyuneolkp wbfcdj"
        Duì           #   Prepend an uppercase copy
     Iiì             #   And then prepend "Ii"
    }                 #  After the inner if-else:
     ð                #  Push a space " "
      ®S              #  Push the characters [":",";"] (from the register)
        .;            #  Replace the first space with ":" and the second space with ";"
   }                  # After the outer if-else:
                     # Transliterate the two strings we created,
                      #  in the duplicate printable ASCII string
                     # And then transliterate the printable ASCII string with this string,
                      #  in the (implicit) string-input
                      # (after which the result is output implicitly)

इस 05AB1E टिप को देखें ( संपीड़ित स्ट्रिंग्स डिक्शनरी का हिस्सा नहीं है? ) यह समझने के लिए कि कंप्रेस्ड स्ट्रिंग्स कैसे काम करते हैं।


1

सी ++, 528 बाइट्स

#include <map>
#define M(a,b)a!='\0'?a:b
std::map<char,char>t[3];char*c[]={"\"'+,-./:;<=>?BCDEFGHIJKLMNOPQRSTUVWXYZ[]_bcdefghijklmnopqrstuvwxyz{}","_-}w[vzSsW]VZXJE>UIDCHTNMBRL\"POYGK<QF:/={xje.uidchtnmbrl'poygk,qf;?+","\"'+,-./Oo<=>?BCSFTDHUNEIMKY:QPRGLVWXJZ[]_bcsftdhuneimky;qprglvwxjz{}","\"'+,-./Ii<=>?VMHRTGYUNEOLKP:QWSBFCDXJZ[]_vmhrtgyuneolkp;qwsbfcdxjz{}"};int main(int d,char*v[]){for(int i=1;i<4;i++)for(int j=0;j<68;j++)t[i-1][c[0][j]]=c[i][j];for(int k=0;v[2][k];k++)printf("%c",M(t[v[1][0]-'0'][v[2][k]],v[2][k]));}

./multitrans <0-2> <string>जहाँ 0 = Dvorak, 1 = Colemak, और 2 = Workman के साथ चलाएँ ।

कोड को थोड़ा और पठनीय बनाने के लिए मैंने बीच में नई कड़ियाँ जोड़ीं। यह कोड स्ट्रिंग्स से एक अनुवाद मानचित्र बनाता है जहाँ ऊपर की ओर देखने पर Qwerty वर्ण अनुवाद का अनुवाद करता है ( t[0]['s'] = 'o'Dvorak के लिए), और फिर यह अनुवाद करने के लिए मानचित्र का उपयोग करता है। अनुवाद के तार छोटे कर दिए जाते हैं क्योंकि कुछ पात्रों को कभी भी बदलने की आवश्यकता नहीं होती है। इसे शायद और भी कम किया जा सकता है, हालाँकि।

#include <map>
#define M(a,b)a!='\0'?a:b
std::map<char,char>t[4];
char*c[4]={
"\"'+,-./:;<=>?BCDEFGHIJKLMNOPQRSTUVWXYZ[]_bcdefghijklmnopqrstuvwxyz{}",
"_-}w[vzSsW]VZXJE>UIDCHTNMBRL\"POYGK<QF:/={xje.uidchtnmbrl'poygk,qf;?+",
"\"'+,-./Oo<=>?BCSFTDHUNEIMKY:QPRGLVWXJZ[]_bcsftdhuneimky;qprglvwxjz{}",
"\"'+,-./Ii<=>?VMHRTGYUNEOLKP:QWSBFCDXJZ[]_vmhrtgyuneolkp;qwsbfcdxjz{}"};
int main(int d,char*v[]){
    for(int i=1;i<4;i++)
        for(int j=0;j<68;j++)
            t[i-1][c[0][j]]=c[i][j];
    for(int k=0;v[2][k];k++)
        printf("%c",M(t[v[1][0]-'0'][v[2][k]],v[2][k]));
}

अतिरिक्त: क्वर्टी -> ड्वोरक ओनली (197 बाइट्स)

मैंने हाल ही में इस कोड को लिखा था जो क्वेर्टी को ड्वोरक में बदल देता है, हालांकि राजधानियां अनियंत्रित हो जाती हैं।

#include<string>
char*d="\',.pyfgcrlaoeuidhtns;qjkxbmwvz ";std::string t="qwertyuiopasdfghjkl;zxcvbnm,./ ";int main(int c,char*v[]){for(int j=0;j<strlen(v[1]);j++)printf("%c",d[t.find(v[1][j])]);}


0

सी, 394 बाइट्स

ऑनलाइन प्रयास करें

char*K[3]={"!_#$%&-()*}w[vz0123456789SsW]VZ@AXJE>UIDCHTNMBRL\"POYGK<QF:/\\=^{`axje.uidchtnmbrl'poygk,qf;?|+~",
"!\"#$%&'()*+,-./0123456789Oo<=>?@ABCSFTDHUNEIMKY:QPRGLVWXJZ[\\]^_`abcsftdhuneimky;qprglvwxjz{|}~",
"!\"#$%&'()*+,-./0123456789Ii<=>?@AVMHRTGYUNEOLKP:QWSBFCDXJZ[\\]^_`avmhrtgyuneolkp;qwsbfcdxjz{|}~"};
main(int c,char**v){char*t=v[2];while(*t)putchar(*t>32?K[atoi(v[1])][*t-33]:*t),t++;}

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