কীবোর্ড বিন্যাস চ্যালেঞ্জ


14

কীবোর্ড লেআউটটি লোকেরা সাধারণত ব্যবহার করে যা QWERTY লেআউটটি নীচে দেখানো হয়।

Qwerty কিবোর্ড

তবে অন্যান্য কীবোর্ড বিন্যাসগুলিও রয়েছে:

ডিভোরাক

ডিভোরাক কীবোর্ড

কোলেম্যাক

ক্লেমাক কীবোর্ড

কারিগর ওয়ার্কম্যান কীবোর্ড

তোমার কাজ

আপনার কোডে দুটি ইনপুট লাগবে: কীবোর্ড বিন্যাসের নাম এবং প্রতিলিপিটির জন্য একটি স্ট্রিং। আপনার লক্ষ্যটি হল আপনার 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{|}~

(দ্রষ্টব্য: এটি @ETH প্রডাকশন দ্বারা হাতে দ্বারা প্রতিলিপি করা হয়েছিল, সুতরাং যদি আপনি কোনও ত্রুটি দেখতে পান তবে দয়া করে সেগুলি চিহ্নিত করুন!)

উদাহরণ

DVORAK zZxX ইনপুট হিসাবে আউটপুট হিসাবে দেবে ;:qQ

এটি তাই বাইটের সংক্ষিপ্ত উত্তরটি জয়!


1
এছাড়াও, আরও কিছু পরীক্ষার ক্ষেত্রে দরকারী হবে।
ETH প্রোডাকশনস

1
@ টুটম্যান হ্যাঁ, আপনি উদাহরণস্বরূপ 0 1 2 নিতে পারেন

1
অপেক্ষা করুন, আমরা উদাহরণস্বরূপ !_#$%&-()*}w[vz0123456789SsW]VZ@AXJE>UIDCHTNMBRL"POYGK<QF:/\=^{`axje.uidchtnmbrl'poygk,qf;?|+~ডিভোরাক কীবোর্ডের ইনপুট হিসাবে নিতে পারি ? এটি চ্যালেঞ্জকে তুচ্ছ করে তুলবে ... একটি দৈর্ঘ্যের সীমাবদ্ধতা বা এর অনুরূপ কিছু প্রবর্তন কীভাবে?
ETH প্রোডাকশনগুলি

1
@ এরিকথ আউটগল্ফার তবে তারপরে আপনি !_#$%&-()*}w[vz0123456789SsW]VZ@AXJE>UIDCHTNMBRL"POYGK<QF:/\‌​=^{`axje.uidchtnmbrl‌​'poygk,qf;?|+~যেমন ইনপুট হিসাবে নিতে পারেন
ইটিএইচ প্রডাকশনগুলি

1
@ ইথ প্রডাকশনস হ্যাঁ আপনি এই অক্ষরগুলিকে ইনপুট হিসাবে ব্যবহার করতে পারেন, যদিও বিন্যাসগুলি অবশ্যই নির্মাণের জন্য তাদের উপর নির্ভর করে না। তাদের জন্য কেবলমাত্র কোন লেআউটটি ব্যবহার করবেন তা চয়ন করা হবে। 10 বাইটস একটি নির্দিষ্ট সীমা (আইএমও খুব সংক্ষিপ্ত), সে কারণেই আমি এটি পছন্দ করি না। এবং হ্যাঁ আপনি বাইটস অক্ষর বলেন না। আমি মনে করি এটি আরও সময়ের জন্য স্যান্ডবক্স করা উচিত ছিল।
এরিক আউটগল্ফার

উত্তর:


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 ডিভোরাকের সাথে, 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সিনট্যাক্স ব্যবহার করে অক্ষরের ব্যাপ্তি নির্দিষ্ট করতে দেয় । অন্যান্য মূল স্পেস-সেভিং উপলব্ধিটি হ'ল চারটি বিন্যাসে একইরকম অক্ষর অন্তর্ভুক্ত করার দরকার নেই, যা আমাকে সমস্ত অঙ্কগুলি থেকে মুক্তি দিতে পেরেছিল, উপরের এবং ছোট হাতের অক্ষরে "A" অক্ষর এবং একটি মুষ্টিমেয় বিশেষ অক্ষর.

সিনট্যাক্সের অন্য একটি অদ্ভুত বিট এর ব্যবহার %W()। এটি ক্যারেটেসিসের ভিতরে থাকা সমস্ত স্ট্রিংয়ের একটি অ্যারে তৈরি করে, যা সাদা স্থান দ্বারা পৃথক করা হয়। জমা দেওয়ার সমস্ত লাইন ব্রেকগুলি আসলে উপাদান বিভাজক হিসাবে কাজ করে। %W()স্ট্রিং ইন্টারপোলেশনকেও অনুমতি দেয় (যা #{}অপারেটরের সাথে করা হয় ) - %w()একই জিনিস হত তবে স্ট্রিং ইন্টারপোলেশন ছাড়াই।

আমি সর্বদা সকলের চেয়ে একেবারে পৃথক থাকার জোরের মাধ্যমে অপ্টিমাইজেশনের জন্য আমার পরিকল্পনা নিয়ে গণ্ডগোলের জন্য ডিভোরাককে দোষারোপ করতে কিছুটা সময় নিতে চাই; একটি কিওয়ার্টি / কোলেম্যাক / ওয়ার্কম্যান সলিউশনটি এত সুন্দরভাবে সংক্ষিপ্ত হতে পারত ...


প্রয়োজনীয়তা মেটাতে মানচিত্রের কী-বোর্ডের প্রতিনিধিত্ব হিসাবে কোনও পূর্ণসংখ্যা গ্রহণ করা কি? পরীক্ষার কেসটি স্পষ্টভাবে কীবোর্ডের নামের প্রয়োজন বলে মনে হচ্ছে তবে, নিয়মগুলি মনে হয় কোনও কিপুটকে কীবোর্ড উপস্থাপনের অনুমতি দেয়।
শেগি

@ শেগি পোস্টটিতে প্রশ্নকারীদের একটি মন্তব্যের উদ্ধৃতি দিতে, "আপনি উদাহরণস্বরূপ 0 1 2 নিতে পারেন", যা আমি যা করেছি ঠিক তা-ই।
Tutleman

5

জাভাস্ক্রিপ্ট (ES7), 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)

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

কিভাবে এটা কাজ করে

সঙ্কোচন

তিনটি লক্ষ্য বিন্যাস একটি একক সংকুচিত স্ট্রিংয়ে সংরক্ষণ করা হয়, যেখানে প্রতিটি অক্ষর হয়:

  • কিউওয়ার্টি থেকে একটি অনুবাদ চরিত্র
  • এমন একটি সংখ্যা যা ধারাবাহিক অক্ষরের প্রতিনিধিত্ব করে যা অনুবাদ করার দরকার নেই

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কারণ #$%&এবং ()*কোয়ার্টি মধ্যে অভিন্ন ম্যাপিং আছে এবং শুধুমাত্র -প্রকৃত অনুবাদ।

বিশেষত, 0123456789সমস্ত লেআউটে একইভাবে ম্যাপ করা হয় এবং কখনও অনুবাদ করা হয় না। অতএব, সংক্ষেপণের জন্য ব্যবহৃত একটি অঙ্ক এবং অনুবাদে ব্যবহৃত একটি সংখ্যার মধ্যে কোনও অস্পষ্টতা নেই।

decompression

n15এন3-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 টি বাইট সংরক্ষিত হয়েছে @ ইটিআর প্রডাকশনগুলির জন্য ধন্যবাদ।


-গুলি যদি চরিত্রের ব্যাপ্তি উপস্থাপন করে তবে আমার মনে হয় আপনি কিছু পরিবর্তন করে কিছু বাঁচাতে <-@ABCপারবেন <-C
ETH প্রোডাকশনগুলি

@ এথ প্রডাকশন হু, আমি আশ্চর্য হয়েছি কেন আমি এটিকে বড় হাতের সংস্করণে উপেক্ষা করেছি ...
নীল

3

পিএইচপি, 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 = ডাব্লু, 1 = সি, 2 = ডি অবধি থাকে

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


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

জাভাস্ক্রিপ্ট (ES6), 461 409 404 395 385 বাইট

আমি বাসে বসার সময় নীচের মূল সংস্করণটি আমার ফোনে লিখেছিলাম এবং তারপর সঠিকভাবে এটি গল্ফ করার জন্য সময়সীমার বাইরে চলে যায় যাতে অনুসরণ করার জন্য আরও ক্রাচিং হয়। এখনও অবধি সহায়তার জন্য @ETH প্রডাকশনগুলিকে ধন্যবাদ

কীবোর্ড স্ট্রিংগুলি প্রশ্ন থেকে সরাসরি অনুলিপি করা হয়েছিল সুতরাং কোনও ত্রুটির জন্য এন্টোইন ইটিএইচকে দোষ দিন !

যেমন, - এই একটি পূর্ণসংখ্যা কীবোর্ড লেআউট (0 ডিভোরাক, কোলেম্যাক জন্য 94 & 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>


আসলে আমি স্ট্রিংগুলি সংকলন করেছি: পি
ইটিএইচ প্রডাকশনগুলি

আসুন দেখুন ... আপনি কখনই QWERTYইনপুট হিসাবে পাবেন না , তাই আমি মনে করি আপনি ভেরিয়েবলে অবজেক্টটি সংরক্ষণ না করে কিছু বাইট সংরক্ষণ করতে পারেন। এটির মতো দেখতে লাগবেs=>[...s].map(c=>({D:"...",C:"...",W:"..."}[k[0]]["...".indexOf(c)]).join``
ETH প্রোডাকশনগুলি

আহা, হ্যাঁ, আমি জানতাম যে সরাসরি অবজেক্টটি থেকে কাজ করার একটা উপায় আছে, map()তবে আমি সময়ের বাইরে চলে গেলাম - বিশ্বাস করুন বা করবেন না, আমি সিনেমাটিতে বাসে বসে এই লিখেছিলাম। আমি আপনার পরামর্শ এবং কিছু উন্নতি দিয়ে এটি আপডেট করব আগামীকাল আমি নিজেকে খুঁজে পেয়েছি।
শেগি

1

05 এ বি 1 ই , 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.;}‡‡

1ডিভোরাকের জন্য আইডি ব্যবহার করে; 2ক্লেম্যাক এবং ওয়ার্কম্যানের 3জন্য।
প্রথমে আইডিকে ধাক্কা দেয়, তারপরে আমরা যে স্ট্রিংটি ট্রান্সপ্লিট করতে চাই।

এটি অনলাইনে চেষ্টা করুন বা তিনটির জন্য পুরো 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 = ডিভোরাক, 1 = কোলেম্যাক এবং 2 = কর্মী রয়েছে তার সাথে চালান ।

আমি নীচে কোডটি আরও বেশি পঠনযোগ্য করে তুলতে এর মধ্যে নতুন লাইনগুলি যুক্ত করেছি। এই কোডটি স্ট্রিং থেকে একটি অনুবাদ মানচিত্র তৈরি করে যেখানে কিওয়ার্টি চরিত্রটি অনুসন্ধান করে অনুবাদটি (ডিভোরাকের t[0]['s'] = 'o'জন্য) ফেরত দেয় এবং তারপরে এটি অনুবাদ করতে মানচিত্রটি ব্যবহার করে। অনুবাদগুলির স্ট্রিংগুলি সংক্ষিপ্ত করা হয়েছে কারণ কিছু অক্ষর কখনও বদলাতে হবে না। যদিও এটি সম্ভবত আরও কমানো যেতে পারে।

#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++;}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.