একটি বাস্তব কীবোর্ড আপনি এটি প্রায় পরীক্ষা করতে পারেন


126

... এমন না যে আপনি করতেন? কাজটি সহজ, নিম্নলিখিত পাঠ্য আউটপুট করুন:

 ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________ 
||` |||1 |||2 |||3 |||4 |||5 |||6 |||7 |||8 |||9 |||0 |||- |||= |||BS    ||
||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______||
|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|
 ________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ 
||TAB   |||Q |||W |||E |||R |||T |||Y |||U |||I |||O |||P |||[ |||] |||\ ||
||______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__||
|/______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|
 _________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________ 
||CAPS   |||A |||S |||D |||F |||G |||H |||J |||K |||L |||; |||' |||ENTER ||
||_______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______||
|/_______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|
 ___________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___________ 
||SHIFT    |||Z |||X |||C |||V |||B |||N |||M |||, |||. |||/ |||SHIFT    ||
||_________|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||_________||
|/_________\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/_________\|

এটি ভবিষ্যতের কীবোর্ড কারণ ভবিষ্যতে স্থানগুলি অপ্রাসঙ্গিক, তাই স্পেসবারগুলিও।


আপনার কাছে জিনিসগুলি কিছুটা সহজ করার জন্য:

  1. 0123456789ABC...XYZ-=[]\;',./ - এই অক্ষরগুলি দৈর্ঘ্যের 6 টি (প্যাডিং সহ) এর কীগুলিতে রয়েছে।
  2. TAB / BS / ENTER - এই কীগুলির দৈর্ঘ্য 10 (প্যাডিং সহ)।
  3. CAPS - এই কীটির দৈর্ঘ্য 11 (প্যাডিং সহ)।
  4. SHIFT - এই কীটির দৈর্ঘ্য 13 (উভয় পক্ষের প্যাডিং সহ)।

প্রতিটি পৃথক কী কমবেশি এর মতো দেখায়:

 ____ 
||* ||
||__||
|/__\|

তবে, আপনার অবশ্যই খেয়াল করা উচিত যে দুটি পর পর কীগুলি নয়:

 ____  ____ 
||* ||||* ||
||__||||__||
|/__\||/__\|

তবে তারা "সংযুক্ত":

 ____ ____ 
||* |||* ||
||__|||__||
|/__\|/__\|

এই চ্যালেঞ্জটি খুব খারাপ হওয়া উচিত নয়, আপনার জন্য শুভকামনা; পুনরাবৃত্তি অপব্যবহার মিস করবেন না! তবে "বিশেষ" কীগুলিও হ্রাস করবেন না;)।


বিজয়ী?

সংক্ষিপ্ততম কোডটি জিতেছে কারণ এটি আপনার জানা


49
আমি স্বীকার করেছি আমি অবাক হই না যে অনেক লোক ভবিষ্যত কীবোর্ডগুলিতে স্পেস না থাকা নিয়ে উদ্বিগ্ন নয় ...
ম্যাজিক অক্টোপাস উরন

97
আমার ধারণা, স্পেসগুলি চূড়ান্ত সীমান্ত ছিল না n't
গ্রেগ মার্টিন

48
"টেস্ট" হ'ল "কী" এর জার্মান শব্দ :)
কিউব্রেট

31
"টেস্ট" হ'ল "টাইপিং" এর নরওয়েজিয়ান শব্দ :)
স্টিভি গ্রিফিন

32
তবে এটি "স্বাদ" এর ইংরেজি শব্দ। এখানে
মিস্টার লিস্টার

উত্তর:


117

ভি , 189, 179, 175, 164, 161, 157, 155, 149, 145, 141 , 135 বাইট

¬19É`A0-=BS´ 
TAB³ qwertyuiop[]\
CAPS³ asdfghjkl;'ENTER 
SHIFT´ ÄJizxcvbnm,./Í„A-Z ]/Õ& 
ÍÓ«ü$/|||&
òÙÓ„|]/_
ÙÓ׫/Ü|¯
kkPÓ/_ _
kòÎx$x

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

এই উত্তরটি এখন টুইটযোগ্য!


এটি চালান দেখুন! এটি সামান্য পরিবর্তিত সংস্করণ যা এটি চলার সাথে সাথে আপডেট হয় যাতে আপনি কীভাবে এটি পরিচালনা করেন তা দেখতে বাছাই করতে পারেন। এটি একটি পুরানো সংস্করণ, যেহেতু এখনও এটি পুনরায় রেকর্ডিংয়ের জন্য আমি মোটামুটি অর্জন করতে পারি নি, তবে সাধারণ পদ্ধতিটি অভিন্ন।

এটি সম্ভবত সবচেয়ে দীর্ঘতম উত্তর উত্তর লেখা। এটি অবশ্যই সাহায্য করেনি যে ভি এর দোভাষী খুব ধীর। প্রথম সংশোধনটি লিখতে আমার প্রায় এক ঘন্টা সময় লেগেছিল, তবে প্রতিবার কয়েকবার বাইট ছাঁটাই করতে আমি বারবার ফিরে আসছি। যেহেতু পুরো কীবোর্ডটি 1215 বাইট, বর্তমানে এই উত্তরটি আউটপুটের তুলনায় 91% ছোট, সুতরাং আমি ফলাফলগুলি নিয়ে বেশ খুশি।

যেহেতু এটিতে কিছু ছাপিয়ে যায় না এমন অক্ষর এবং প্রচুর স্থূল অ-ASCII রয়েছে, তাই এখানে একটি হেক্সডাম্প রয়েছে:

00000000: ac31 39c9 6041 302d 3d42 53b4 200a 5441  .19.`A0-=BS. .TA
00000010: 42b3 2071 7765 7274 7975 696f 705b 5d5c  B. qwertyuiop[]\
00000020: 0a43 4150 53b3 2061 7364 6667 686a 6b6c  .CAPS. asdfghjkl
00000030: 3b27 454e 5445 5220 0a53 4849 4654 b420  ;'ENTER .SHIFT. 
00000040: 1bc4 4a69 7a78 6376 626e 6d2c 2e2f 1bcd  ..Jizxcvbnm,./..
00000050: 8441 2d5a 205d 2fd5 2620 0acd d3ab fc24  .A-Z ]/.& .....$
00000060: 2f7c 7c7c 260a f2d9 d384 7c5d 2f5f 0ad9  /|||&.....|]/_..
00000070: d3d7 ab2f dc7c af0a 6b6b 50d3 2f5f 205f  .../.|..kkP./_ _
00000080: 0a6b f2ce 7824 78                        .k..x$x

হেক কীভাবে এটি কাজ করে?

ঠিক আছে, এই ব্যাখ্যাটি একটি ঘোলাটে হয়ে উঠবে। আপনি প্রস্তুত? প্রথমে আমাদের চিঠিগুলি প্রবেশ করতে হবে যাতে আমরা তাদের চারপাশে কীগুলি তৈরি করতে পারি। এই

¬19É`A0-=BS´ 
TAB³ qwertyuiop[]\
CAPS³ asdfghjkl;'ENTER 
SHIFT´ <esc>ÄJizxcvbnm,./<esc>

কোনটি প্রবেশ করায়:

`1234567890-=BS    
TAB   qwertyuiop[]\
CAPS   asdfghjkl;'ENTER 
SHIFT    zxcvbnm,./SHIFT  

এটি একেবারে সোজাভাবে প্রবেশ করে তবে কয়েকটি কৌশল আছে যা আমরা অক্ষরগুলি সংরক্ষণ করতে ব্যবহার করি। উদাহরণস্বরূপ, ¬19"123456789" ³প্রবেশ করে, তিনটি স্পেস প্রবেশ করে এবং আমরা শিফ্টটিকে নকল করি যাতে আমাদের এটিতে একাধিকবার প্রবেশের প্রয়োজন হয় না।

অক্ষরগুলি এখানে ছোট হাতের মতো কী আছে তা নোট করুন। এটি তাই যাতে আমরা সহজেই "ENTER" এবং একক অক্ষরের মতো বড় হাতের কীগুলির মধ্যে পার্থক্য করতে পারি। এগুলি তাদের এইভাবে লেখার ফলে কোন অক্ষরগুলির আগে কোনও বারটি রাখা উচিত তা বলা সহজ হয় এবং সেগুলি পরে ছোট আকারে রূপান্তর করতে কেবল একটি বাইট যুক্ত করে। সুতরাং আমরা এগুলিকে বড় হাতের মধ্যে রূপান্তর করতে বিকল্প কমান্ডটি করি এবং তাদের প্রত্যেকের পরে একটি স্থান যুক্ত করি:

Í               " Globally replace
 [^A-Z ]        " Anything but a uppercase alphabet character or a space
        /       " with
         Õ&     " The matched pattern made uppercase, followed by a space

এখন, আমরা প্রতিটি মূল সিকোয়েন্স (অ-শ্বেত স্থানের কোনও রান) নিই এবং তাদের আগে এবং পরে তিনটি বার রাখি:

Í           " Globally replace
 Ó«         "   Any number of non-space characters
   ü        "   or
    $       "   an end of line
     /      " with
      |||   "    Three bars 
         &  "    And the matched pattern

এই মুহুর্তে, বাফারটি দেখতে এমন দেখাচ্ছে:

|||` |||1 |||2 |||3 |||4 |||5 |||6 |||7 |||8 |||9 |||0 |||- |||= |||BS    |||
|||TAB   |||Q |||W |||E |||R |||T |||Y |||U |||I |||O |||P |||[ |||] |||\ |||
|||CAPS   |||A |||S |||D |||F |||G |||H |||J |||K |||L |||; |||' |||ENTER |||
|||SHIFT    |||Z |||X |||C |||V |||B |||N |||M |||, |||. |||/ |||SHIFT    |||

প্রথম এবং শেষ কলামে তিনটি বার থাকা আসলে খুব সুবিধাজনক এবং দীর্ঘমেয়াদে অনেকগুলি বাইট সংরক্ষণ করে।

এবং এখানে আমরা একটি বিশাল লুপ চালাচ্ছি। এটি এরকম কিছু রূপান্তর করবে:

|||SHIFT    |||Z |||X |||C |||V |||B |||N |||M |||, |||. |||/ |||SHIFT    |||

এরকম কিছুতে:

 ___________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___________ 
||SHIFT    |||Z |||X |||C |||V |||B |||N |||M |||, |||. |||/ |||SHIFT    ||
||_________|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||_________||
|/_________\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/_________\|

দুটি òত্রুটির মধ্যে সমস্ত কিছু চলতে থাকবে যতক্ষণ না ত্রুটি ঘটে যায়, যা তখনই ঘটে যখন আমরা কোনও লাইনে প্রবেশ করার চেষ্টা করব যা এখনও বিদ্যমান নেই। যেহেতু আমরা কেবলমাত্র বিশ্বব্যাপী বিকল্প কমান্ডটি চালিয়েছি , তাই আমাদের কার্সারটি শেষ লাইনে রয়েছে এবং আমরা এগুলি আমাদের কাজ করে যাচ্ছি trans

ò         " Recursively:
 Ù        "   Duplicate this line
  Ó       "   Substitute all on this line:
   [^|]   "     Anything but a bar
       /  "   With:
        _ "     An underscore

এই

|||_________|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||_________|||

লাইন।

Ù         "   Duplicate this line
 Ó        "   Subsitute all on this line:
  ׫      "     A run of *non-word characters* (that is, [^0-9A-Za-z_])
    /     "   With:
     Ü|¯  "     '\|/'

এই

\|/_________\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/_________\|/

লাইন।

kk        "   Move up two lines (to the original text with "SHIFT")
  P       "   Paste the last line we duplicated (the one with all the underscores)
   Ó      "   Substitute:
          "     Since we don't give any regex here, it re-uses the last one 
          "     (a run of *non-word* characters)
    /     "   With:
     _ _  "     '_ _'

এটি হ'ল:

_ ___________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___________ _

লাইন।

k         "   Move up a line (this will throw an error, breaking the loop when we're done)
 ò        " Endwhile

এখন আমাদের কাছে সম্পূর্ণ কীবোর্ড রয়েছে তবে প্রতিটি লাইনে একটি অতিরিক্ত বার, একটি অতিরিক্ত স্ল্যাশ (সামনে বা পিছনে), বা অতিরিক্ত আন্ডারস্কোর থাকে। সুপার ইজি ফিক্স

Î             " On every line:
 x            "   Delete a character
  $           "   Move to the end of the line
   x          "   and delete another character

সমস্ত পাগলামির পরেও, বাফারকে স্পষ্টভাবে মুদ্রিত করা হয়।


1
আউটপুটটির ডান দিকের ফাঁকা জায়গায় 4 টি অতিরিক্ত আন্ডারস্কোর প্রদর্শিত হবে?
এরিক

7
এই উত্তরটি কীভাবে গোলাপী তা হ'ল লোল, আপনি অবমূল্যায়ন করেন।
ম্যাজিক অক্টোপাস উরান

1
@ কারাসোকম্পুটিং হা হা, আমার ধারণা আপনি ঠিক বলেছেন আমি এই উত্তরটি নিয়ে খুব গর্বিত এবং আমার ভাষার একমাত্র উত্তর হ'ল বুবলিগ। :)
ডিজেএমসিএমহেম

2
@ ডিজেএমসিএমহেম যদি আপনাকে 1/3/2017 এর মধ্যে না মারেন তবে আপনাকে বিজয়ী হিসাবে চিহ্নিত করছে;)।
ম্যাজিক অক্টোপাস Urn

7
এটি এখনও সাইটটিতে আমার প্রিয় উত্তর। আমি জিআইএফ কতবার দেখেছি তা গণনা করতে পারছি না।
ম্যাজিক অক্টোপাস আরন

41

লুয়া 5.3, 416 394 বাইট।

k="` 1 2 3 4 5 6 7 8 9 0 - = BS|TAB Q W E R T Y U I O P [ ] \\|CAPS A S D F G H J K L ; ' ENTER|SHIFT Z X C V B N M , . / SHIFT"S={TAB=6,BS=6,ENTER=6,CAPS=7,SHIFT=9}for v in k:gmatch"[^|]+"do for i=1,4 do for s in v:gmatch"%S+"do l=S[s]or 2j=("_"):rep(l)io.write(i==1 and" _"..j.."_"or i==2 and"||"..s..(" "):rep(l-#s).."|"or i==3 and"||"..j.."|"or"|/"..j.."\\")end print(i>1 and"|"or"")end end

নিরবচ্ছিন্ন এবং মন্তব্য সহ।

keys="` 1 2 3 4 5 6 7 8 9 0 - = BS|TAB Q W E R T Y U I O P [ ] \\|CAPS A S D F G H J K L ; ' ENTER|SHIFT Z X C V B N M , . / SHIFT" -- Define a keyboard. Separated with |'s, there's probably a nicer way to do this, but I'm not sure about how to yet.
special_keys={TAB=6,BS=6,ENTER=6,CAPS=7,SHIFT=9} -- Special keys get special definitions
for v in keys:gmatch"[^|]+" do -- For each row on the keyboard...
    for i=1, 4 do -- Each of the 4 rows per key...
        for s in v:gmatch"%S+" do -- Match each individual key.
            l=special_keys[s]or 2 j=("_"):rep(l) -- l is the length of the key, j is "_" repeated length times, which is used a bit.
            io.write(i==1 and -- Lua needs Switch Statements!
                     " _"..j.."_" -- The top of the key is a Space, then j with two _'s around it.
                     or
                     i==2 and
                     "||"..s..(" "):rep(l - #s).."|" -- Second row is || then the key, then the remaining whitespace, and then one more |, which chains together.
                     or
                     i==3 and
                     "||"..j.."|" -- Third row is like the second, but without the key. Instead of whitespace, uses j, which is the underlines.
                     or
                     "|/"..j.."\\") -- Last row is like the third row, but with "|/" and "\" instead of "||" and "|"
        end
        print(i>1 and"|"or"") -- First line is the only line that doresn't need a "|", everything else gets a "|" before the newline.

    end
end

আউটপুট

 ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________
||` |||1 |||2 |||3 |||4 |||5 |||6 |||7 |||8 |||9 |||0 |||- |||= |||BS    ||
||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______||
|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|
 ________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____
||TAB   |||Q |||W |||E |||R |||T |||Y |||U |||I |||O |||P |||[ |||] |||\ ||
||______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__||
|/______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|
 _________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________
||CAPS   |||A |||S |||D |||F |||G |||H |||J |||K |||L |||; |||' |||ENTER ||
||_______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______||
|/_______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|
 ___________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___________
||SHIFT    |||Z |||X |||C |||V |||B |||N |||M |||, |||. |||/ |||SHIFT    ||
||_________|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||_________||
|/_________\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/_________\|

আমি অন্যান্য ল্যাঙ্গগুলি দ্বারা ধ্বংস হতে চলেছি, তবে আমি ভেবেছিলাম এটি একটি শট দেব। জটিলতার সুন্দর পরিমাণ, এবং কমপক্ষে এটি কীবোর্ডের চেয়ে কম!


15
অন্য ভাষাগুলি স্ক্রু করুন, বিরল ভাষায় আপনি প্রথম ছিলেন! চিত্তাকর্ষক, যদিও আমি নিশ্চিত যে আপনার অবশ্যই প্রতিটি চিঠিতে ডিলিমিটার হিসাবে পাইপ লাগানোর দরকার নেই। "বিশেষ" কীগুলি কীভাবে কেবল রেখার সামনের এবং শেষের দিকে রয়েছে তা লক্ষ্য করুন। আমি নিশ্চিত যে ইঙ্গিতটি আপনাকে কোনওভাবে মূল্যবান বাইটগুলি বাঁচাতে পারে।
ম্যাজিক অক্টোপাস উরান

লুয়ার কোন সংস্করণ আপনি ব্যবহার করছেন? লুয়া 5.1-এ এটি আমাকে একটি বাক্য গঠন ত্রুটি দেয়: স্টিডিন: 1: '2

5
@ ব্রায়ানুশ ১ লুয়া ৫.৩, এটি সংখ্যার ধ্রুবককে যে কোনও চিঠির পাশে বসতে দেয় যা হেক্সাডেসিমাল ডিজিট বা 'x' নয়। 0
এটাকো

29

বুবলগাম , 191 বাইট

0000000: ad d2 35 7a c6 30 10 06 e1 5e a7 50 15 66 fe 99  ..5z.0...^.P.f..
0000010: c1 8c 61 50 0e b2 87 8f 27 24 f7 eb af 78 2b e3  ..aP....'$...x+.
0000020: 3c b2 ae 99 1a 66 8d c8 a7 15 91 73 b8 80 4b b8  <....f.....s..K.
0000030: 82 6b b8 81 5b b8 83 1e 9c c1 31 8c 60 5e d9 66  .k..[.....1.`^.f
0000040: 22 46 c4 39 d1 c2 78 d6 a9 73 6f 5a d8 9b 18 ff  "F.9..x..soZ....
0000050: bb 5a e8 55 cf e6 fc ae 48 01 8f b0 82 12 6a 78  .Z.U....H.....jx
0000060: 86 7b 08 20 83 1c 5e e1 1d de e8 e5 7f 57 b4 d0  .{. ..^......W..
0000070: 8b a9 9b f9 5e 5d 9d af c5 2c af 7e 82 cd a0 82  ....^]...,.~....
0000080: 25 ac 61 03 5b 08 21 82 18 06 b0 0b ab b4 5e 95  %.a.[.!.......^.
0000090: ad 5e 5d 9d 2f d6 e9 f9 d2 c4 f2 bd aa 6d b0 ae  .^]./........m..
00000a0: ed 4f b1 17 78 82 05 3c c0 1c 52 48 e0 08 4e e0  .O..x..<..RH..N.
00000b0: 14 5a 77 fb 5e aa 58 be 97 aa 98 bf db 7c 01     .Zw.^.X......|.

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


1
বুবলগাম ন্যায্য নয়।
জোশুয়া

7
@ জোশুয়া সমাধানের জন্য একটি বেসলাইন স্থাপন করা ভাল। এবং যদি কোনও কিছুই বুদবুদকে পরাজিত করতে না পারে তবে সমস্যাটির সমস্যা।
সার্জে বোর্স

19

হাস্কেল, ২3৩ টি চর (৩৫৩ বাইট ইউটিএফ -৮)

import Data.List
main=mapM_ putStrLn$transpose.foldr k[g]=<<
 [s"`1234567890-="%"   ←"
 ,"↹   ":s"𝑄𝑊𝐸𝑅𝑇𝑌𝑈𝐼𝑂𝑃[]\\"
 ,"⇩    ":s"𝐴𝑆𝐷𝐹𝐺𝐻𝐽𝐾𝐿;'"%"     ↵"
 ,"⇧       ":s"𝑍𝑋𝐶𝑉𝐵𝑁𝑀,./"%"       ⇧"]
r%e=r++[e]
g=" |||"
k s r=g:"_||/":['_':c:"__"|c<-s]%"_||\\"++r
s=map(:" ")

এই কীবোর্ডের স্ক্রিনশট

যেহেতু এই ইউনিকোড চরিত্রগুলির আলোকে স্কোর সম্পর্কে প্রচুর আলোচনা হয়েছে ... এখানে একই প্রোগ্রামটি হ'ল অল-এএসসিআইআই:

হাস্কেল, ২3৩ টি চর (২3৩ বাইট ইউটিএফ -8)

import Data.List
main=mapM_ putStrLn$transpose.foldr k[g]=<<
 [s"`1234567890-="%"BS  "
 ,"TAB ":s"QWERTYUIOP[]\\"
 ,"CAPS ":s"ASDFGHJKL;'"%"ENTER "
 ,"SHIFT   ":s"ZXCVBNM,./"%"SHIFT   "]
r%e=r++[e]
g=" |||"
k s r=g:"_||/":['_':c:"__"|c<-s]%"_||\\"++r
s=map(:" ")

3
ইউনিকোড কীবোর্ড? আকর্ষণীয় পছন্দ (সেখানে দুর্দান্ত গণিতের অক্ষর দেখাচ্ছে) তবে আমি মনে করি এটি প্রতিযোগিতার নিয়ম লঙ্ঘন করে।
মারিও কার্নেরিও

@ মারিও কার্নিরো ন্যায্য হওয়ার জন্য, এটি প্রোগ্রামের দৈর্ঘ্যকে মোটেই প্রভাবিত করে না।
পাইডসাইনার

1
@pydsigner এটি করে, যেহেতু শব্দগুলি ENTERঅক্ষরের চেয়ে দীর্ঘ হয় ↩︎
টিমোথিমহ

5
তবে আপনি তুলনা করছেন ENTER এবং ↩︎ , হোয়াইটস্পেস প্যাডিং এটি একই দৈর্ঘ্য করে।
কোডমনেকি

2
প্রকৃতপক্ষে, আমি ইউনিকোডটি বাইট গণনা দ্বারা প্রোগ্রামটি দীর্ঘতর করার আশা করি, যেহেতু উচ্চ ইউনিকোডটি ইউএসএফ 8-তে ASCII এর চেয়ে বেশি বাইট।
মারিও কার্নেরিও

18

পিএইচপি, 303 বাইট

অলস তবে কার্যকর। :)

<?=gzinflate(base64_decode('rdO5DoJAEIDhnqegs/G+jbEAvA88wBuzPsg8vPyLZo3tOMUXmt1k/iy+ycfXYj88kacvIg1oQgva0IEu9KAPA6hDBUYQJn4+IvldxogWhrtqxmRamEw8t66afMc0CO26soczTOAAKVzhCAvYwg7u8IDs06tYVx3Oc+uqw7lef3lfUbBLimABJDCGKcxgDktYwRqGULJ143Ry+O71r/elDvb7vnSx3r2S+WKaFn+U3OACEZzs7wYxbKAMVajZvO6066WK9dNLFcuefgE'));

1
খুশী হলাম। বিরক্তিকরভাবে, আমি কমপ্রেস / জিজিপ / বিজিপ 2 / 7z এর সাথে একই স্তরের সংক্ষেপণ পেতে পারি না, নাহলে বাশ সংস্করণটি তুচ্ছভাবে সংক্ষিপ্ত হবে। এটি যেমন দাঁড়িয়েছে, পরিবর্তে এটি 318 টি অক্ষরে।
কনরাড রুডল্ফ

14
আমি নিশ্চিত যে আপনার প্রোগ্রামে নেই এমন একটি বাহ্যিক সংকোচনের অ্যালগরিদম ব্যবহার নিষিদ্ধ বা কমপক্ষে ভ্রূণুযুক্ত। এটি প্রশ্নের উদ্দেশ্যকে পরাস্ত করে।
কেউ নেই

1
@ কনরাডরুডল্ফ যেমনটি আমি বুঝতে পেরেছি, gzdeflate () gzip কমান্ড লাইনের মতো একই সংকোচনের ব্যবহার করে তবে ফাইল শিরোনাম এবং চেকসাম এড়িয়ে যায় তাই এটি সর্বদা কিছুটা খাটো থাকে।
অ্যালেক্স হাওয়ানস্কি

300 বাইট: <?=gzinflate(base64_decode('rdO5DoJAEIDhnqegs/G+jbHA+0QEvDHrg8zDy79EMbTDFF+3m8yfXdek42phHJG3KyItaEMHutCDPgxgCCNoQg0mMI3cdETSu4wRLQx3NYxJtDCJOL9t1cnSFWNvareVE1xhASHEcIczbOAIATzhBck3V7atupuTb6vulucq43XNvCDKenkQwRyWsII1bGEHexhDxcb140X4n6us16XuVXxdulZZrmi9WcbZd5IH3GAGF/vXwIcDVKEODVs3P53nUrUq5FK1sqc/'));। সংকোচকারী: স্যান্ডবক্স.অনলাইনপ্পফিউশনস / কোড / Dec ডিকম্প্রেসার: স্যান্ডবক্স.অনলাইনফ্পফিউশনস
ইসমাইল মিগুয়েল

4
@ নোবডি বাহ্যিক কিছুই নেই, জিজেড পিএইচপি এর ডিফল্ট সংকলনের অংশ এবং তাই স্পষ্টতই অনুমোদিত allowed
অ্যালেক্স হাওয়ানস্কি

18

পাইথন 3.5+, 239 বাইট

s="SHIFT   "
for k in[(*"`1234567890-=","BS   "),("TAB  ",*"QWERTYUIOP[]\\"),("CAPS  ",*"ASDFGHJKL;'","ENTER"),(s,*"ZXCVBNM,./",s)]:
 for f in"{1}__ ,|{} ||,|{1}||,/{1}\|".split(","):print(f[-1]+"".join(f.format(c,"_"*-~len(c))for c in k))

টিপলসের অভ্যন্তরে স্প্ল্যাটের জন্য পাইথন 3.5+ এর কি প্রয়োজন, বা অন্য কিছু?
mbomb007

1
আপনি যদি প্রতিটি কী তৈরির কাজটি উল্টান এবং "".join(...) + f[0]অভ্যন্তরীণ লুপে ব্যবহার করেন তবে আপনি একটি বাইট সংরক্ষণ করতে পারেন । সোয়াপিং formatযুক্তি অর্ডার ও স্ট্রিং নিজ নিজ প্লেসহোল্ডার এছাড়াও আরো দুটি বাইট পরিমাণ সঞ্চয় হয়।
dfernan

['{1}__ ','|{} ||','|{1}||','/{1}\\|']ব্যবহারের চেয়ে কম split
অ্যালেক্স হল

16

ব্যাচ, 465 452 বাইট

@echo off
call:c _ ` 1 2 3 4 5 6 7 8 9 0 - "=" "BS   " _____
call:c _____ "TAB  " Q W E R T Y U I O P [ ] \ _
call:c ______ "CAPS  " A S D F G H J K L ";" ' ENTER _____
call:c ________ "SHIFT   " Z X C V B N M "," . / "SHIFT   " ________
exit/b
:c
set t=%1_
set s=!!%~2 !!!%3 !!
:l
set t=%t%#__
set s=%s%!%~4 !!
shift
if not "%~5"=="" goto l
set t=%t%#%4_
for %%l in (" _%t:#=_ _%_" "%s:!=|%" "||%t:#=|||%||" "|/%t:#=\|/%\|")do echo %%~l

:cসাবরুটিন কি একটি লাইন পরিচালনা করে। অতিরিক্ত স্পেস ধারণকারী কী, উদ্ধৃত করা প্রয়োজন কি হিসাবে =, ;, ,কি, সম্ভবত একটি বাগ কারণে shiftকমান্ড। প্রথম এবং শেষ প্যারামিটারগুলি হ'ল _প্রথম এবং শেষ কী হিসাবে সাহায্যের লক্ষণ হিসাবে একই দৈর্ঘ্যের স্ট্রিং । tতারপরে _প্রথম, তৃতীয় এবং চতুর্থ সারিগুলির সাধারণ হিসাবে শেষ হয় , #যোগটি চিহ্নিত করার পরে, যা sপ্রথম সারিতে এবং পিছনের অক্ষর যুক্ত হওয়ার আগে যথাযথভাবে প্রতিস্থাপন করা হয়, তবে দ্বিতীয় সারিতে থাকলেও এসগুলি হ্রাস |করার সাথে সাথে পরিবর্তিত হয় !আমার যে সংখ্যা "দরকার সম্পাদনা করুন: একক বিবৃতিতে সমস্ত চারটি লাইন মুদ্রণ করে 1 বাইট সংরক্ষণ করা হয়েছে, এবং আমি sপরিবর্তনশীলটি যেভাবে নির্ধারণ করেছি তাতে অনুকূলিত করে 12 বাইট ।


14

রুবি, 226 বাইট

16.times{|i|puts (([[?`,'TAB  ','CAPS  ',s='SHIFT   '][j=i/4]]+%w{1234567890-= QWERTYUIOP[] ASDFGHJKL;' ZXCVBNM,./}[j].chars+[['BS   ',?\\,'ENTER',s][j]]).map{|e|e.tr('^|'[-i%4/3,2],?_)}*3*"__ _ |||_|||_\\|/"[i%4*4,4])[72,75]}

উন্নতিগুলি নিম্নরূপ:

1. অ্যারের শুরু এবং শেষে খালি স্ট্রিং উপাদান নেই। পরিবর্তে অ্যারে তিনটি পাশের পাশের কীবোর্ডগুলি তৈরি করা হয়। স্ট্রিংয়ে রূপান্তর করার পরে আমাদের কাছে বাইরের প্রান্তগুলি সহ 3 টি কীবোর্ড রয়েছে। এটি কেবলমাত্র মাঝারিটি প্রদর্শন করতে কাটা হয়েছে, কিনারা দিয়ে পূর্ণ complete

২. রুবির রূপান্তরিত সংস্করণ। আমার মেশিনে 1.9.3 এর পরিবর্তে আইডিয়ন ব্যবহার করা হয়েছে। এর অর্থ .chars.to_aকেবল সংক্ষিপ্ত করা যেতে পারে .chars

রুবি, 239 বাইট

এ থেকে আরও কিছু বাইট গল্ফ করতে হবে। আগামীকাল দেখবে।

16.times{|i|puts ((['']+[[?`,'TAB  ','CAPS  ',s='SHIFT   '][j=i/4]]+%w{1234567890-= QWERTYUIOP[] ASDFGHJKL;' ZXCVBNM,./}[j].chars.to_a+[['BS   ',?\\,'ENTER',s][j]]+['']).map{|e|e.tr('^|'[-i%4/3,2],?_)}*"__ _ |||_|||_\\|/"[i%4*4,4])[2..-2]}

ungolfed

16.times{|i|                                                            #iterate throug 16 lines of output
  puts ((['']+[[?`,'TAB  ','CAPS  ',s='SHIFT   '][j=i/4]]+              #build row from blank element plus left special key
    %w{1234567890-= QWERTYUIOP[] ASDFGHJKL;' ZXCVBNM,./}[j].chars.to_a+ #plus regular keys
   [['BS   ',?\\,'ENTER',s][j]]+['']).map{|e|                           #plus right special key and another blank element
                                      e.tr('^|'[-i%4/3,2],?_)}*         #if i%4 != 1, replace the keytop legend with _ characters 
   "__ _ |||_|||_\\|/"[i%4*4,4])[2..-2]                                 #join the middle parts of the keys with ends. truncate spurious outer ends before printing.
}

13

সি #, 357 বাইট (যখন এক লাইনে থাকে, এবং সর্বাধিক পরামর্শকে অন্তর্ভুক্ত করে)


var s="";
foreach(var r in@"`|1|2|3|4|5|6|7|8|9|0|-|=|BS   ~TAB  |Q|W|E|R|T|Y|U|I|O|P|[|]|\~CAPS  |A|S|D|F|G|H|J|K|L|;|'|ENTER~SHIFT   |Z|X|C|V|B|N|M|,|.|/|SHIFT   ".Split('~'))
for(int i=0;i<4;s+=i>0?"|\n":"\n",i++)
foreach(var k in r.Split('|'))
{
var u=new string('_',k.Length+1);
s+=i<1?" "+u+"__"
:i<2
?"||"+k+" |"
:i<3
?"||"+u+"|"
:"|/"+u+@"\";
}
Console.Write(s);

অথবা, স্ট্রিং ইন্টারপোলেশন এবং অন্যান্য সমস্ত পরামর্শ সহ 353

var s="";foreach(var r in@"`|1|2|3|4|5|6|7|8|9|0|-|=|BS   ~TAB  |Q|W|E|R|T|Y|U|I|O|P|[|]|\~CAPS  |A|S|D|F|G|H|J|K|L|;|'|ENTER~SHIFT   |Z|X|C|V|B|N|M|,|.|/|SHIFT   ".Split('~'))for(int i=0;i<4;s+=i>0?"|\n":"\n",i++)foreach(var k in r.Split('|')){var u=new string('_',k.Length+1);s+=i<1?$" {u}__":i<2?$"||{k} |":i<3?$"||{u}|":$@"|/{u}\";}Console.Write(s);

অবহেলিত (স্ট্রিং সংযোগবিহীন):

var solution = "";
foreach (var row in @"`|1|2|3|4|5|6|7|8|9|0|-|=|BS   ~TAB  |Q|W|E|R|T|Y|U|I|O|P|[|]|\~CAPS  |A|S|D|F|G|H|J|K|L|;|'|ENTER~SHIFT   |Z|X|C|V|B|N|M|,|.|/|SHIFT   ".Split('~'))
for (int i = 0; i < 4; solution += i > 0 ? "|\n" : "\n", i++)
foreach (var key in row.Split('|'))
{
   var underscores = new string('_', key.Length + 1);
   solution += i < 1 ? " " + underscores + "__"
                     : i < 2
                     ? "||" + key + " |"
                     : i < 3
                     ? "||" + underscores + "|"
                     : "|/" + underscores + @"\";
}
Console.Write(solution);

5
আপনি গল্ফ কোডটি এক লাইনে ফর্ম্যাট করে প্রচুর বাইট সংরক্ষণ করতে পারেন:foreach(var r in q){for(int i=0;i<4;i++){foreach...
মারিও

1
@ মারিও আমি এটি পরীক্ষা করেই দেখেছি, প্রদত্ত মানটি আসলে নিউলাইন ছাড়া গণনা, সুতরাং এটি প্রযুক্তিগতভাবে ইতিমধ্যে সম্পন্ন হয়েছে
অ্যালফি গুডাক্রে

1
397 থেকে ক্ষেপক ব্যবহার করে এবং প্রতিস্থাপন বাইট নিচে থেকে একটু গলফ ==সঙ্গে< s+=i<1?$" {u}__":i<2?$"||{k.PadRight(l)}|":i<3?$"||{u}|":$"|/{u}\\";
Alfie Goodacre

ধন্যবাদ @ অ্যালফি গুডাক্রে। আপনার পরামর্শ অনুসারে আমি '=' এর সাথে '<' প্রতিস্থাপন করেছি। এটিকে কম সংস্করণটি সুনির্দিষ্ট করে তুলতে আমি বিরক্তি ছেড়ে দিয়েছি left
ক্লিঞ্জার

@ ক্লিঞ্জার আমি সম্মত হচ্ছি, কোনও অনলাইন সংকলকগুলিতে ইন্টারপোলেশন কাজ করে না তাই এটি একটি ভাল পছন্দ!
অ্যালফি গুডাক্রে

10

পাওয়ারশেল ভি 2 +, 465 বাইট

($b=($a=' ____')*10)+$a*3+" "+($d='_'*8)
"||``@$(1..9-join'@')@0@-@=@BS    ||
||$(($f=,'__'*10-join'#'))#__#__#__#$(($g='_'*6))||
$(($c=($e='|/__\')*10))$e$e$e|/$g\|
 $d$b$a$a$a
||TAB  @Q@W@E@R@T@Y@U@I@O@P@[@]@\ ||
||$g#$f#__#__#__||
|/$g\$c$e$e$e|
 _$d$b$a $d
||CAPS  @A@S@D@F@G@H@J@K@L@;@'@ENTER ||
||_$g#$f#__#$g||
|/_$g\$c$e|/$g\|
 ___$d$b ___$d
||SHIFT   @Z@X@C@V@B@N@M@,@.@/@SHIFT    ||
||___$g#$f#___$g||
|/___$g\$c|/___$g\|"-replace'@',' #'-replace'#','|||'

আমি পিএইচপি এবং পাইথন উত্তরগুলি কত সংক্ষিপ্ত আকারে দেওয়া হয়েছে, এই উত্তরটি পোস্ট করতে অর্ধেক বিব্রত বোধ করছি, সি # উত্তর কিছু মনে রাখবেন না, তবে আমি এই পদ্ধতিটি সংক্ষিপ্ত করতে অক্ষম। অন্যান্য পদ্ধতির আরও ভাল ফলাফল হতে পারে।

এটি মূলত কেবল একটি বিশাল মাল্টি-লাইন স্ট্রিং, $aবিভিন্ন সাবস্ট্রিংয়ের পরিবর্তে ভেরিয়েবল ( এবং এর মতো) সহ এবং -replaceএটি শেষ করার জন্য একটি দম্পতি শেষে। $(...)নতুন ভেরিয়েবলগুলি প্রবর্তনের জন্য প্রয়োজনীয় যেখানে স্ক্রিপ্ট ব্লকগুলি সন্নিবেশ করা হয়।

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


7

পাইথন, 493 458 বাইট।

k=[['|']*75 for i in [0]*16]
v=' '
w='_'
y=0
def a(s,x,o):k[y+o][x:x+len(s)]=list(s)
def p(s,i,x):a(s+v*(i-len(s)),x+2,1);a(v+w*(i+2)+v,x,0);a(w*i,x+2,2);a(w*i,x+2,3);a('/',x+1,3);a('\\',x+i+2,3);return x+i+3
def q(s,x):return reduce(lambda a,b:p(b,2,a),list(s),x)
p('BS',6,q('`1234567890-=',0))
y=4
q('QWERTYUIOP[]\\',p('TAB',6,0))
y=8
p('ENTER',6,q('ASDFGHJKL;\'',p('CAPS',7,0)))
y=12
p('SHIFT',9,q('ZXCVBNM,./',p('SHIFT',9,0)))
for l in k:print''.join(l)

কার্যত সমতুল্য তবে কিছুটা পাঠযোগ্য:

k=[['|']*75 for i in range(16)]
def a(s,x,y):k[y][x:x+len(s)]=list(s)
def p(s,i,x,y):
    a(s+' '*(i-len(s)),x+2,y+1)
    a(' '+'_'*(i+2)+' ',x,y)
    a('_'*i,x+2,y+2)
    a('_'*i,x+2,y+3)
    k[y+3][x+1]='/'
    k[y+3][x+i+2]='\\'
    return x+i+3
def q(s,x,y):return reduce(lambda a,b:p(b,2,a,y),list(s),x)
p('BS',6,q('`1234567890-=',0,0),0)
q('QWERTYUIOP[]\\',p('TAB',6,0,4),4)
p('ENTER',6,q('ASDFGHJKL;\'',p('CAPS',7,0,8),8),8)
p('SHIFT',9,q('ZXCVBNM,./',p('SHIFT',9,0,12),12),12)
for l in k:print ''.join(l)

দুর্ভাগ্যক্রমে এটি লুয়ায় দেওয়া উত্তরটির চেয়ে ইতিমধ্যে দীর্ঘ।


আপনি pফাংশনে লাইনগুলি সেমিকোলন দ্বারা পৃথক করা এক লাইনে রাখতে পারেন। এছাড়াও, আমি ভেবেছিলাম যে আপনি প্রথম লাইন তৈরি করতে পারবেন না k=[['|']*75]*16, জানেন কেন?
nedla2004

এছাড়াও আপনি নির্ধারণ করতে পারেন '_'এবং ' 'একটি পরিবর্তনশীল কিছু বাইট সংরক্ষণ করুন।
nedla2004

টিপস জন্য ধন্যবাদ! আমার মনে হয় কে = [['|'] * 75] * ১ the একই অ্যারেতে ষোলটি রেফারেন্স তৈরি করে যাতে এক লাইনে পরিবর্তন অন্যকেও প্রভাবিত করে।
কোবি

ঠিক আছে, তাহলে আপনি কমপক্ষে পরিবর্তন range(16)করতে পারেন [0]*16
nedla2004

একটি ছোট সমস্যা হ'ল আপনার কোডটি প্রযুক্তিগতভাবে সঠিক আউটপুট উত্পাদন করে না তবে আপনি এটি পরিবর্তন for l in k:print ' '.join(l)করে এটি ঠিক করতে পারেন for l in k:print''.join(l)
nedla2004

7

পিএইচপি, 316 312 বাইট

foreach([($s=str_split)("`1234567890-=")+[13=>"BS   "],["TAB  "]+$s("_QWERTYUIOP[]\\"),["CAPS  "]+$s("_ASDFGHJKL;'")+[12=>ENTER],[$h="SHIFT   "]+$s("_ZXCVBNM,./")+[11=>$h]]as$r)for($y=-1;$y++<3;)foreach($r as$i=>$k)echo["\n".$a="| "[!$y]][$i],"_||/"[$y],str_pad($y-1?_:$k,strlen($k)+1,$y-1?_:" "),"_||\\"[$y],$a;

আমি নিশ্চিত যে এই পদ্ধতির আর কোনও গল্ফ করা যাবে না। তবে যদি কেউ আরও 10 টি বাইট খুঁজে পায় ...: ডি
চালান -r

ভাঙ্গন

foreach([                       // loop through rows
    ($s=str_split)("`1234567890-=")+[13=>"BS   "],
    ["TAB  "]+$s("_QWERTYUIOP[]\\"),
    ["CAPS  "]+$s("_ASDFGHJKL;'")+[12=>ENTER],
    [$h="SHIFT   "]+$s("_ZXCVBNM,./")+[11=>$h]
]as$r)
    for($y=-1;$y++<3;)          // loop through lines 0..3
        foreach($r as$i=>$k)    // loop through keys
            echo["\n".$a="| "[!$y]][$i],// first key in row: leading NL + space/pipe
                "_||/"[$y],             // key edges
                str_pad(
                    $y-1?_:$k,          // line 1: key label; else underscore
                    strlen($k)+1,       // pad to length+1
                    $y-1?_:" "),        // with spaces for label, underscores else
                "_||\\"[$y],            // more key edges
                $a                      // joining edges
            ;

6

বাশ (ওএসএক্সে), 12 8 + 221 + 1 = 234 230 বাইট

হ্যাঁ, আমি জানি, সংক্ষেপণ। কিন্তু এটি কাজ করে, না?

gunzip<f

নিম্নলিখিত ডিরেক্টরিগুলির সাথে বর্তমান ডিরেক্টরিতে "f" নামক একটি ফাইলের প্রয়োজন (পিপিসিজি-বন্ধুত্বের জন্য বেস 64 এ রাখা - আপনি প্রথমে "চ" ফাইলটিতে ডিকোড করতে পারেন)):

H4sIAHbPT1gAA63TuQ6CQBCA4Z6noLPxvo2xALwPPMAbsz7IPLz8i2aN7TjFFxo2mT+7vsnH12I/PJGnLyINaEIL2tCBLvSgDwOoQwVGECZ+PiL5WcaIFoazasZkWphMPLeumnzHNAjturKHM0zgAClc4QgL2MIO7vCA7NOrWFcdznPrqsO5Xn+5X1GwS4pgASQwhinMYA5LWMEahlCydeN0cvju9a/7pQ72e790sd69kvlimhYvSm5wgQhO9rlBDBsoQxVqNq/72/VSxfrppYpV9HoBoNfjQcAEAAA=

4
লেখার মাধ্যমে তুচ্ছভাবে খাটো করা যায় gunzip<f
কনরাড রুডল্ফ

পছন্দ করুন ধন্যবাদ।
অ্যাডিসন ক্রম্প

zcat fদুটি পেছনের নাল বাইট (gzip অভিযোগ করলেও কাঙ্ক্ষিত আউটপুট উত্পাদন করে) সরিয়ে আপনি 2 বাইট এবং 2 বাইট সংরক্ষণ করতে পারবেন ।
গিলস

@ গিলস সত্যিই আমাকে বাইটস সংরক্ষণ করে না - আমাকে "fZ" ফাইলটির নামকরণ করতে হবে (কমপক্ষে ওএসএক্সে)। ট্রেইলিং নাল বাইটগুলি অপসারণ করা কেবল জিজিপকেই অভিযোগ করে না - এটি এটিকে ত্রুটিযুক্ত করে তোলে এবং কোনও কিছুই মুদ্রণ করে না।
অ্যাডিসন ক্রম্প

ঠিক আছে, zcat<fতবে ভোটটোক্লস ওহো ঠিক আছে । লিনাক্সে, অনুসরণযোগ্য শূন্যগুলি ছাড়াই জ্যাক্যাট গিজিপকে অভিযোগ করে ("জিজিপ: স্টিডিন: ফাইলের অপ্রত্যাশিত পরিণতি") তবে কেবল পছন্দসই আউটপুট প্রিন্ট করার পরে।
গিলস

5

জাভাস্ক্রিপ্ট (ES6), 286

কোনও প্যারামিটার সহ একটি বেনামি ফাংশন

_=>[..."`1234567890-=~~QWERTYUIOP[]\\~ASDFGHJKL;'~~ZXCVBNM,./~"].map(x=>(o+=`/${b='_'.repeat(w=x<y?2:' 667699'[x=["BS","TAB","CAPS","ENTER"][p++]||'SHIFT',p])}\\|`,m+=y+(x+'    ').slice(0,w)+y+y,n+=y+b+y+y,l+=' __'+b)[73]&&(k.push(l,m,n,o),l='',m=n=o=y),m=n=o=y='|',p=l=k=[])&&k.join`
`

কম গল্ফড

_=>[..."`1234567890-=~~QWERTYUIOP[]\\~ASDFGHJKL;'~~ZXCVBNM,./~"]
  .map(x=>
      (
        w = x < y // special chars are marked '~' that is > '|'
            ? 2 // normal key, width 2
            : ( // else special key, set x and width
                // p should be incremented at next step, but I need to make it numeric as it starts as []
                x = ["BS","TAB","CAPS","ENTER"][p++]||'SHIFT',
                ' 667699'[p], // value for w (note p is off by 1)
              ),
        b = '_'.repeat(w), // bottom border (and top, almost)
        o +=`/${b}\\|`, //  line 4
        n += y+b+y+y,   //  line 3
        m += y+(x+'    ').slice(0,w)+y+y, // line 2
        l += ' __'+b    // top line, the border must be longer
      )[70] && // check if at end of row (check position in l)
         (
            k.push(l, m, n, o), // add lines to list
            l = '', // reset all
            m = n = o = y
         )
    , // initial setup
    // y stays fixed to '|', lines 2,3,4 start as '|'
    m = n = o = y ='|',
    // k is the lines array, l will become as string and starts empty
    // p is the index of current special key and will become numeric
    p = l = k = [] 
  ) 
  && k.join`\n` // return lines as a single string

F=_=>[..."`1234567890-=~~QWERTYUIOP[]\\~ASDFGHJKL;'~~ZXCVBNM,./~"].map(x=>(o+=`/${b='_'.repeat(w=x<y?2:' 667699'[x=["BS","TAB","CAPS","ENTER"][p++]||'SHIFT',p])}\\|`,m+=y+(x+'    ').slice(0,w)+y+y,n+=y+b+y+y,l+=' __'+b)[73]&&(k.push(l,m,n,o),l='',m=n=o=y),m=n=o=y='|',p=l=k=[])&&k.join`
`

O.textContent=F()
<pre id=O></pre>


5

সুইফ্ট, 777 বাইট

func b(_ c:String,_ d:Int,_ e:Int)->[String]{var f=Array(" __ |||||||||/\\|".characters),g=[String]()
for h in 0..<4{var i="";for j in e..<4{i.append(f[j+h*4])
if j==1{var k="_",l=0;if h==1{k=" ";l=c.characters.count;i += c}
for _ in l..<d{i+=k}}};g.append(i)};return g}
func c(_ d:String)->[(String,Int)]{return Array(d.characters).map{("\($0)",2)}}
func d(_ e:String,_ f:Int)->[(String,Int)]{return [(e,f)]}
var e=[c("`1234567890-=")+d("BS",6),d("TAB",6)+c("QWERTYUIOP[]\\")]
e+=[d("CAPS",7)+c("ASDFGHJKL;'")+d("ENTER",6),d("SHIFT",9)+c("ZXCVBNM,./")+d("SHIFT",9)]
var f="";for g in 0..<e.count{let h=e[g]
var i=[[String]]();for j in 0..<h.count{
let k=h[j],l=b(k.0,k.1,(j>0 ? 1:0));i.append(l)}
for k in 0..<4{if g>0||k>0{f+="\n"}
for l in i{f+=l[k]}}};print(f,separator:"")

গল্ফিংয়ের জন্য সুইফট সাধারণত পছন্দের কোনও দুর্দান্ত ভাষা নয়, সুতরাং বর্তমানের ক্ষুদ্রতম উত্তরটির দ্বিগুণের চেয়ে কম হওয়া (এটি দ্রুত ছিল) এখানে একটি ভাল চ্যালেঞ্জ!

Ungolfed:

func createKeyboard() {
    func createKey(_ text: String, _ middleWidth: Int, _ startingColumn: Int) -> [String] {
        var keyTempalte = " __ |||||||||/\\|"
        var keyTemplateCharacters = Array(keyTempalte.characters)

        var output = [String]()

        for y in 0 ..< 4 {
            var line = ""
            for x in startingColumn ..< 4 {
                line.append(keyTemplateCharacters[x + y*4])

                if x == 1 {
                    var spacingCharacter = "_"
                    var startingOffset = 0
                    if y == 1 {
                        spacingCharacter = " "
                        startingOffset = text.characters.count
                        line += text
                    }

                    for _ in startingOffset ..< middleWidth {
                        line += spacingCharacter
                    }
                }
            }
            output.append(line)
        }

        return output
    }

    func stringToCharacterStrings(_ str: String) -> [(String, Int)] {
        return Array(str.characters).map {("\($0)",2)}
    }

    func specialKey(_ str: String, _ middleWidth: Int) -> [(String, Int)] {
        return [(str, middleWidth)]
    }

    var keys = [stringToCharacterStrings("`1234567890-=") + specialKey("BS", 6),
                specialKey("TAB", 6) + stringToCharacterStrings("QWERTYUIOP[]\\")]
    keys += [specialKey("CAPS", 7) + stringToCharacterStrings("ASDFGHJKL;'") + specialKey("ENTER", 6),
                specialKey("SHIFT", 9) + stringToCharacterStrings("ZXCVBNM,./") + specialKey("SHIFT", 9)]

    var output = ""
    for r in 0 ..< keys.count {
        let row = keys[r]
        var rowKeys = [[String]]()
        for i in 0 ..< row.count {
            let elem = row[i]
            let key = createKey(elem.0, elem.1, (i>0 ? 1 : 0))
            rowKeys.append(key)
        }

        for y in 0 ..< 4 {
            if r > 0 || y > 0 {
                output += "\n"
            }

            for key in rowKeys {
                output += key[y]
            }
        }
    }

    print(output)
}

createKeyboard()

2
কমপক্ষে এটি অ্যাপসক্রিপ্ট নয়
অ্যাডিসন

1
এখন আমি জাভা করব না করব
CAD97

4

এসওজিএল ভি0.12 , 131 128 127 বাইট ( প্রতিযোগিতা? )

⅟]y‘9Δø∑"`ŗ0-=”čΚ"TAB  ”QWERTYUIOP[]\”č+"oF«▒Β²‘⁷Ο‘ASDFGHJKL;'”čΚ+"_№K³‘ZXCVBNM,./”č⁴++¹{"^쳑č;{U;"_||/”┼;{"_ŗ__”┼}"Ο  ψ¦℮³‘┼}O

SOGL আছে 2*2/এবং 2/2*quirks কিন্তু যারা মনে খুব বেশী মত একটি বিল্ট-ইন এই প্রতিদ্বন্দ্বিতায় জন্য।
এখানে চেষ্টা করুন!

...‘               push "BS   "                                            ["BS   "]
    9Δ             push an array of numbers up to 9                        ["BS   ", [1,2,3,4,5,6,7,8,9]]
      ø∑           join into a single string (without ø it results to 45)  ["BS   ", "123456789"]
        "`ŗ0-=”    push "`ŗ0-=" with ŗ replaced with the digits            ["BS   ", "`1234567890-="]
               č   chop that into an array of characters                   ["BS   ", ["`","1","2","3","4","5","6","7","8","9","0","-","="]]
                Κ  add the first "BS   " to the end of the array           [["BS   ","`","1","2","3","4","5","6","7","8","9","0","-","="]]

"TAB  ”            push "TAB  "                  [[..], "TAB  "]
       Q..P[]\”    push "QWERTYUIOP[]\"          [[..], "TAB  ", "QWERTYUIOP[]\"]
               č   chop that                     [[..], "TAB  ", ["Q","W","E","R","T","Y","U","I","O","P","[","]","\"]]
                +  prepend to the array "TAB  "  [[..], ["TAB  ","Q","W","E","R","T","Y","U","I","O","P","[","]","\"]]

"...‘             push "caps  "                       [.. , "caps  "]
     ⁷Ο‘          push "enter"                        [.. , "caps  ", "enter"]
        AL;'”     push "ASDFGHJKL;'"                  [.. , "caps  ", "enter", "ASDFGHJKL;'"]
             č    chop that                           [.. , "caps  ", "enter", ["A","S","D","F","G","H","J","K","L",";","'"]]
              Κ   append "enter" to the end of array  [.. , "caps  ", ["A","S","D","F","G","H","J","K","L",";","'","enter"]]
               +  prepend "caps  " to the array       [.. , ["caps  ","A","S","D","F","G","H","J","K","L",";","'","enter"]]

"..‘             push "shift   "                [..., "shift   "]
    ZM,./”       push "ZXCVBNM,./"              [..., "shift   ", "ZXCVBNM,./"]
          č      chop it                        [..., "shift   ", ["Z","X","C","V","B","N","M",",",".","/"]]
           ⁴     duplicate the shift            [..., "shift   ", ["Z","X","C","V","B","N","M",",",".","/"], "shift   "]
            ++   append and prepend the shifts  [..., ["shift   ","Z","X","C","V","B","N","M",",",".","/","shift   "]]
              ¹  get all the arrays into one big array
result: [[["BS   ","`","1","2","3","4","5","6","7","8","9","0","-","="], ["TAB  ","Q","W","E","R","T","Y","U","I","O","P","[","]","\"], ["caps  ","A","S","D","F","G","H","J","K","L",";","'","enter"], ["shift   ","Z","X","C","V","B","N","M",",",".","/","shift   "]]]
 - a 2D array of the keyboard characters

{                                    for each array in the array do
 "...‘                                 push " |||"
      č                                chop to chars
       ;                               get the main array ontop
        {                        }     for each string in the array
         U                               uppercase it (before lowercase was used for better compression)
          ;                              get the chopped array ontop
           "_||/”                        push "_||/"
                 ┼                       append vertically
                  ;                      get the string ontop
                   {       }             for each char in the string do
                    "_ŗ__”                 push "_ŗ__"
                          ┼                append vertically
                            "..‘         push "    _||\ |||"
                                ┼        append vertically-then horizontally
                                  O    output that in a newline

বাহ, এটি দুর্দান্ত চিত্তাকর্ষক! কেউ এখনও আমাকে এই মারতে পারেনি, এত ভাল কাজ! আমি আমার কিছুটা ছোট করার চেষ্টা করতে পারি, তবে কোনও প্রতিশ্রুতি নেই। ;)
ডিজেএমসিএমহেম

@ ডিজামিয়া যদিও এখন প্রতিযোগিতা করছে, আমি যখন উত্তর ছিল না তখন ফিরে উত্তরটি গ্রহণ করেছিলাম। আমি উত্তর পরিবর্তন করতে হবে?
ম্যাজিক অক্টোপাস উর্ন

@ ম্যাজিক অ্যাক্টোপাস ইউএন আইএমও এটি আপনার উপর নির্ভর করে। উত্তরগুলি গ্রহণ না করার জন্য এটির একটি কারণ রয়েছে: p
dzaima

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

@ ম্যাজিক অ্যাক্টপাস ইউরন ঠিক আছে, উত্তর গ্রহণ না করা কিছুটা বিতর্কিত, তবুও, একটি বড় ধনাত্মক
জাজিমা

4

পাইথন 2, 394 388 380 বাইট

k=[4]*13+[8],[8]+[4]*13,[9]+[4]*11+[8],[11]+[4]*10+[11];m='`1234567890-=*','*QWERTYUIOP[]*',"*ASDFGHJKL;'*",'*ZXCVBNM,./*';c,d,e,n,u=0,'','|','\n','_'
for a in 0,1,2,3:
 f=s=t=o='';x=0
 for y in k[a]:g=y-2;f+=' '+u*y;s+=e*2+m[a][x].replace('*','%s')+' |';t+=e*2+u*g+e;o+='|/'+u*g+'\\';x+=1
 d+=f+n+s+e+n+t+e+n+o+e+n
l='SHIFT   ';print d%('BS   ','TAB  ','\\','CAPS  ','ENTER',l,l)

পুরো কীবোর্ডকে উপস্থাপন করে কেবল একটি বড় স্ট্রিং তৈরি করে, বিশেষ কীগুলির জন্য% s দিয়ে * প্রতিস্থাপন করে তারপরে বিশেষগুলি আপডেট করার জন্য স্ট্রিং ফর্ম্যাটিং ব্যবহার করে।

সম্পাদন করা

আউটপুট শেষে এখন একটি পেছনের নিউলাইন রয়েছে তবে অনুমতি দেওয়া হয়নি এমন কোথাও আমি দেখতে পাচ্ছি না।

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


আমি মনে করি আপনার আউটপুটটি সরিয়ে নেওয়া উচিত, কারণ এতে প্রাসঙ্গিক কোনও কিছু যুক্ত হয় না।
সার্জিওল

1
@ সার্জিওল - ভাল পয়েন্ট পোস্ট করার সময় টিআইও-তে সচেতন ছিল না। এখন আপডেট হয়েছে।
এলপেড্রো

3

সি #, 376 বাইট (যখন এক লাইনে থাকবে)


var s="";foreach(var r in@"`|1|2|3|4|5|6|7|8|9|0|-|=|BS   ~TAB  |Q|W|E|R|T|Y|U|I|O|P|[|]|\~CAPS  |A|S|D|F|G|H|J|K|L|;|'|ENTER~SHIFT   |Z|X|C|V|B|N|M|,|.|/|SHIFT   ".Split('~'))for(int i=0,l;i<4;i++){foreach(var k in r.Split('|')){l=k.Length+1;var u=new string('_',l);s+=i<1?" "+u+"__":i<2?"||"+k.PadRight(l)+"|":i<3?"||"+u+"|":"|/"+u+@"\";}s+=i>0?"|\n":"\n";}Console.Write(s);

এটি পুরোপুরি ক্লিনজারের সি # উত্তর উপর ভিত্তি করে। তাঁর উত্তরে মন্তব্য করার মতো যথেষ্ট প্রতিবেদন আমার কাছে নেই, অন্যথায় আমিও তা করতাম।

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

var s="";
foreach(var r in@"`|1|2|3|4|5|6|7|8|9|0|-|=|BS   ~TAB  |Q|W|E|R|T|Y|U|I|O|P|[|]|\~CAPS  |A|S|D|F|G|H|J|K|L|;|'|ENTER~SHIFT   |Z|X|C|V|B|N|M|,|.|/|SHIFT   ".Split('~'))
for(int i=0,l;i<4;i++)
{
foreach(var k in r.Split('|'))
{
l=k.Length+1;
var u=new string('_',l);
s+=i<1?" "+u+"__"
:i<2
?"||"+k.PadRight(l)+"|"
:i<3
?"||"+u+"|"
:"|/"+u+@"\";
}
s+=i>0?"|\n":"\n";
}
Console.Write(s);

ভাল @ বারেন্স জোফুল আপনার পরামর্শের সাথে আমি এটি 367 এ পেতে সক্ষম হব I আমি বর্তমান উত্তরের সাথে সংযুক্ত নেই।
ক্লিঞ্জার

প্রতিহত করতে পারে না. আপনার পরামর্শ + কিছু অতিরিক্ত ছোটখাটো পরিবর্তন এটিকে 361 (অথবা স্ট্রিং ইন্টারপোলেশন সহ 358) এ নিয়েছে।
ক্লিঞ্জার

ক্লিংগার - আমার টুইটগুলি ব্যবহার করুন! আমি আপনার কাজের উপর ভিত্তি করে এটি সঙ্গে চারপাশে খেলতে অনুপ্রাণিত হয়েছিল। আমি প্রক্রিয়া আরম্ভ সম্পর্কে কিছু শিখেছি।
বেনস জোফুল

আপনি কি এক লাইনের প্রোগ্রাম অন্তর্ভুক্ত করতে পারেন? আপনি বর্তমানের তুলনায় ঠিক তেমন পাঠযোগ্যতা হারাবেন না
সাইয়েস

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

3

এম 4, 456

changequote({,})define(d,{define($@)})d(p,{patsubst($@)})d(a,{{_}p({$1},.,_)_ })d(b,{|$1||})d(c,{|p({$1},.,_)||})d(e,{/p({$1},.,_)\|})d(f,{ifelse(len({$2}),0,,{indir({$1},{$2})f({$1},shift(shift($@)))})})d(g,{ f({a},$@)
|f({b},$@)
|f({c},$@)
|f({e},$@)
})g(` ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,0 ,- ,= ,BS    )g(TAB   ,Q ,W ,E ,R ,T ,Y ,U ,I ,O ,P ,[ ,] ,\ )g(CAPS   ,A ,S ,D ,F ,G ,H ,J ,K ,L ,; ,' ,ENTER )g(SHIFT    ,Z ,X ,C ,V ,B ,N ,M ,{,} ,. ,/ ,SHIFT    )

Ungolfed:

changequote({,})dnl
define(key1, {{_}patsubst({$1}, ., _)_ })dnl _______ 
define(key2, {|$1||})dnl                     |TAB  ||
define(key3, {|patsubst({$1}, ., _)||})dnl   |_____||
define(key4, {/patsubst({$1}, ., _)\|})dnl   /_____\|
define(rkey, {dnl
ifelse(dnl
len({$2}), 0, ,dnl terminate on empty argument
{dnl
indir({$1}, {$2})dnl
rkey({$1}, shift(shift($@)))dnl
}dnl
)dnl
})dnl
define(row, {dnl
 rkey({key1}, $@)
|rkey({key2}, $@)
|rkey({key3}, $@)
|rkey({key4}, $@)dnl
})dnl
row(` ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,0 ,- ,= ,BS    )
row(TAB   ,Q ,W ,E ,R ,T ,Y ,U ,I ,O ,P ,[ ,] ,\ )
row(CAPS   ,A ,S ,D ,F ,G ,H ,J ,K ,L ,; ,' ,ENTER )
row(SHIFT    ,Z ,X ,C ,V ,B ,N ,M ,{,} ,. ,/ ,SHIFT    )

(এটি আসলে প্রথমবারের মতো আমি উভয় কোড-গল্ফ করছি এবং এম 4 ব্যবহার করে যাচ্ছি))


প্রথম উত্তরের জন্য খারাপ নয়। সাইটে স্বাগতম! :)
ডিজেএমসিএমহেম

3

সজ্জিত , 228 বাইট

এখানে চেষ্টা করুন!

[,{a:a size@n(' __' '_'n 1+:@k*LF'||'a' ' '|'LF'||' '_'k*:@o'|'LF'|/'o'\')sum}"!$hcat#/!' |||'hcat out]@:p$chars@:c'`1234567890-='c'BS   'p'TAB  ' 'QWERTYUIOP[]\'c p'CAPS  ' 'ASDFGHJKL;'''c,'ENTER'p'SHIFT   ':@q'ZXCVBNM,./'c,q p

বা, আরও কিছুটা পাঠযোগ্য:

{a:a size@n(' __' '_'n 1+:@k*LF'||'a' ' '|'LF'||' '_'k*'|'LF'|/' '_'k*'\')sum}"@:m
[,m$hcat#/!' |||'hcat out]@:p
'`1234567890-='chars'BS   'p
'TAB  ' 'QWERTYUIOP[]\'chars p
'CAPS  ' 'ASDFGHJKL;'''chars,'ENTER'p
'SHIFT   ':@q'ZXCVBNM,./'chars,q p

এটি pএকটি কী তৈরি করে এমন একটি ফাংশন সংজ্ঞায়িত করে কাজ করে , তারপরে hcatএকাধিক কী যুক্ত করে।


2

হাস্কেল, 255

import Data.List;a#b=a++[b];e=" |||";s=map(:" ");k x=[e,"_||/"]++['_':c:"__"|c<-x]#"_||\\";t="SHIFT    ";main=mapM_ putStrLn$transpose.(#e).(k=<<)=<<[s"`1234567890-="#"BS    ","TAB   ":s"QWERTYUIOP[]\\","CAPS   ":s"ASDFGHJKL;'"#"ENTER ",t:s"ZXCVBNM,./"#t]

রেট্রোস্পেক্টে, এই হাস্কেল জবাবের সাথে একই রকম , তবে ASCII কীবোর্ড উত্পাদন করছে এবং কিছুটা ভিন্ন গল্ফিং রয়েছে।

ফর্ম্যাট এবং নামকরণ:

import Data.List

main :: IO ()
main = mapM_ putStrLn
  $ concatMap (transpose . (`append` end) . concatMap key)
  [ split "`1234567890-=" `append` "BS    "
  , "TAB   " : split "QWERTYUIOP[]\\"
  , "CAPS   " : split "ASDFGHJKL;'" `append` "ENTER "
  , shift : split "ZXCVBNM,./" `append` shift
  ]

key :: String -> [String]
key x
  = [end, "_||/"]
  ++ ['_' : c : "__" | c <- x]
  `append` "_||\\"

append :: [a] -> a -> [a]
append a b = a ++ [b]

split :: [Char] -> [String]
split = map (: " ")

end :: String
end = " |||"

shift :: String
shift = "SHIFT    "

2

tcl, 368

"শূন্যস্থান হিসাবে গণনা লাইন বিরতি" দিয়ে http://textmechanic.com/text-tools/basic-text-tools/count-characters-words-lines/ দিয়ে গণনা করা হয়েছে । সেট করা, এটি 505 496 452 451 439 403 401 396 391 388 385 384 382 379 378 377 369 368 দখল করে

proc N x {split $x @}
proc M a\ b {string map $a $b}
regsub -all \[^@|] [set b [M [N {||||@|||@$@BS   @%@TAB  @&@CAPS @? @ENTER  @*@SHIFT   }] [regsub -all {[^@]} "`1234567890-=$@%QWERTYUIOP\[\]\\@&ASDFGHJKL;'?@*ZXCVBNM,./*" {||& ||}]]] _ f
lmap x [N [M {\\ _ / _ | \ } [set g [M {||_ |/_ _|| _\\|} [M {||| \\|/} $f]]]]] y [N $b] z [N $f] w [N $g] {puts "$x
$y
$z
$w"}

ডেমো: http://rextester.com/live/NTVAV88033

উগল্ফ:

Http://rextester.com/live/UDO43692 এ লাইভ সহযোগিতা

regsub -all {(\S)} "`1234567890-=←\n%QWERTYUIOP\[\]\\\n⇩ASDFGHJKL;'↵\n⇧ZXCVBNM,./⇧" {||\1 ||} b
set b [string map {|||| |||  ← "BS   " % "TAB  " ⇩ "CAPS  " ↵ "ENTER" ⇧ "SHIFT   "} $b]

regsub -all {[^\n|]} $b _ f

set g [string map {||| \\|/} $f]
set g [string map {||_ |/_  _|| _\\|} $g]
set h [string map {\\ _ / _ | " "} $g]

set H [split $h \n]
set B [split $b \n]
set F [split $f \n]
set G [split $g \n]

lmap x $H y $B z $F w $G {
puts $x
puts $y
puts $z
puts $w
}

লাইভ সহযোগিতা সাইটগুলিতে যে কেউ আমার সংস্করণ উন্নত করতে নিখরচায় এবং স্বাগত, তবে দয়া করে: আমার মূল উত্তরটি এখানে সম্পাদনা করবেন না; কেবলমাত্র মন্তব্যগুলিতে আপনি সম্পাদনা করেছেন এবং লোকেরা লিঙ্কগুলি পরিদর্শন করবে।

আপডেট 1:for দ্বারা প্রতিস্থাপন করা হয় foreach, কারণ আধুনিক সংক্ষিপ্ত কোড উত্পাদন করে

আপডেট 2: এরforeach দ্বারা প্রতিস্থাপন করা হয়েছে lmap, কারণ পরবর্তীগুলি সংক্ষিপ্ত কোড উত্পাদন করে

আপডেট 3: এক গৃহস্থালির কাজ চাঁচা কারণ আমি প্রতিস্থাপিত " "দ্বারা\

আপডেট 4: প্রথম মন্তব্যের প্রসঙ্গে, আমি সমস্ত 1 ম লাইন 2 বাইট ইউনিকোড স্থান ধারক অক্ষর 1 বাইট ASCII অক্ষরে পরিবর্তন করেছি

আপডেট 5: একাধিক putsলাইন কেবল একটিতে তৈরি

আপডেট 6: ইন্টারমিডিয়েট তালিকা ভেরিয়েবল ব্যবহার না splitকরে সরাসরি কমান্ডে রিটার্ন মানগুলি lmapব্যবহার করুন

আপডেট 7: আশেপাশের উদ্ধৃতিগুলির ENTERদরকার পড়েনি

আপডেট 8: string map এটি যথেষ্ট দীর্ঘ এবং বহুবার পুনরাবৃত্তি হয়েছিল যে এটি এ-তে আবদ্ধ করার উপযুক্ত isproc

আপডেট 9: split $x \n এটি যথেষ্ট দীর্ঘ এবং বহুবার পুনরাবৃত্তি হয়েছে যা এটি এ-তে আবদ্ধ করার মতোproc

আপডেট 10: "প্রতিস্থাপন" স্ট্রিং এর &পরিবর্তে ব্যবহার করতে পারে \1, কারণ এই ক্ষেত্রে উভয়ই মিলে যায়; এর আর একটি পরিণতি হ'ল এটি ()"ম্যাচিং" স্ট্রিং থেকে মুক্তি পেতে পারে।

আপডেট 11: ব্যবহার করুন @পরিবর্তে \nআরো ব্যবহারের জন্য লাইন বিভাজক হিসেবে splitনির্দেশাবলী। যদিও "ম্যাচ" STRING থেকে lengthens \Sকরার [^@]এটা বন্ধ বহন করেনা ও পুনরাবৃত্তির সংখ্যার কারণে

আপডেট 12: প্রথম প্রতিস্থাপিত regsub"ম্যাচ" STRING {[^@|]}দ্বারা \[^@|]একটি অক্ষর বন্ধ শেভ। দুর্ভাগ্যক্রমে, দ্বিতীয়টির মতো একই করতে পারেনি regsub, কারণ নির্দেশটি একটি জোড়ার মধ্যে রয়েছে []:(

13 আপডেট: শেভিড দুটি lmapনিজের শিরোনাম দিয়ে শরীরকে কেন্দ্রীভূত করে অক্ষর প্রবেশ করান ।

আপডেট 14: একটি কল ব্যবহৃত splitভিত্তিক পদ্ধতি Nএকটি সরাসরি কলের পরিবর্তে string mapভিত্তিক পদ্ধতি Nযা 3 টি অক্ষর দ্বারা খাটো করতে পারবেন

15 আপডেট: একটি অনিবদ্ধ স্থানের অক্ষর ছিল। একটি চের বন্ধ করে দেওয়ার জন্য এটি সরানো হয়েছে।

আপডেট 16: একটি চরিত্রের শেভ বন্ধ করতে set hপরিত্রাণ পেতে এম্বেড করা যেতে পারে $h

17 আপডেট: set h বিবৃতিটি সত্যই কামানো যেতে পারে।

18 আপডেট: puts আর্গুমেন্টটি ...\n...\n...\n...ফর্ম্যাট থেকে পরিবর্তন করে

"...
...
...
..." 

বিন্যাস।

ধন্যবাদ এমন লোকেরা যা আমাকে এটি সংক্ষিপ্ত করতে সহায়তা করেছে, বিশেষত টিওসিএল আইআরসি চ্যানেলের দুষ্টু এবং দিকটি!


সুন্দর উত্তর, এবং সাইটে আপনাকে স্বাগতম! আমি আপনার পোস্টে একটি সামান্য সম্পাদনা করেছি যাতে বাইট গণনা শিরোনামে উপস্থিত হয়, আমি আশা করি আপনার আপত্তি নেই। ঠিক তাই আপনি জানেন, আমি মনে করি এটি আসলে 469 বাইট, যেহেতু এই চরিত্রগুলির কয়েকটি ইউটিএফ -8 এর একাধিক বাইট are আমি টিসিএল সম্পর্কে খুব বেশি জানি না, এটি কি কাস্টম এনকোডিং ব্যবহার করে যেখানে সেগুলি একটি বাইট হয়?
ডিজেএমসিএমহেম

@ ডিজেএমসিমেহেম আমি জানতাম না এটি চরিত্রের গণনার পরিবর্তে বাইট গণনা ভিত্তিক ছিল তবে এটি একটি সমস্যা নয় কারণ যে একটি বাইট প্রতীক এখনও ব্যবহৃত হয়নি তা স্থানধারক হতে পারে এবং এখনও আমার অনেকগুলি উপলব্ধ রয়েছে।
সার্জিওল

@ ডিজেএমসিমেহেম আমার সম্পাদনার পরে আপনি যে অ-সমস্যাটি রিপোর্ট করেছেন তা চলে গেছে!
সার্জিওল

@ ডিজেএমসিএমহেম কেন শীর্ষে থাকা 401 এর কিছু সময়ের জন্য হলুদ ব্যাকগ্রাউন্ড ছিল?
সার্জিওল

2

tcl, 369

প্রাথমিকভাবে টিসিএলির ​​সার্জিওল সংস্করণে ভিত্তি করে।
(নোট করুন যে অনেকগুলি বাম স্থান টিসিএলএর "প্রকৃতির" অংশ)

lmap z {S R M} w {set "regsub -all" "string map"} {interp alias {} $z {} {*}$w};lmap x {"`1234567890-=¿BS   ¿" "¿TAB  ¿QWERTYUIOP\[\]\\" "¿CAPS  ¿ASDFGHJKL;'¿ENTER¿" "¿SHIFT   ¿ZXCVBNM,./¿SHIFT   ¿"} {S h [M {\\ _ / _ | \ } [S g [M {||_ |/_  _|| _\\|} [M {||| \\|/} [S f [R {[^\n|]} [S b [M {|||| |||} [R {¿(\S+\s*)¿|(.)} $x {||\1\2 ||}]]] _ ]]]]]];puts $h\n$b\n$f\n$g}

@ মুদিফিশ সম্পাদিত এবং স্থির। ধন্যবাদ!
আলেজান্দ্রো মুজাচাদিওদি

আপনি যদি সরাসরি সমস্ত foreachউপস্থিতি প্রতিস্থাপন করেন তবে আপনি আরও সংক্ষিপ্ত করতে পারেন lmap!
সার্জিওল

interp aliasআমার সংস্করণটি সংক্ষিপ্ত করার জন্য আপনার পদ্ধতির ব্যবহার করার চেষ্টা করেছি, তবে এটি করার সময় আমি সবচেয়ে সংক্ষিপ্তভাবে পেতে পারি 398 :( rextester.com/live/NTVAV88033
sergiol

আমার শেষ lmap z {S R M N} w {set "regsub -all" "string map" split} {interp alias {} $z {} {*}$w};lmap y [N [S b [M [N {||||@|||@$@BS @%@TAB @&@CAPS @? @ENTER @*@SHIFT } @] [R {[^@]} "`1234567890-=$@%QWERTYUIOP\[\]\\@&ASDFGHJKL;'?@*ZXCVBNM,./*" {||& ||}]]] @] z [N [S f [R {[^@|]} $b _]] @] w [N [S g [M {||_ |/_ _|| _\\|} [M {||| \\|/} $f]]] @] x [N [M {\\ _ / _ | \ } $g] @] {puts $x\n$y\n$z\n$w}
চেষ্টাটি

আপনি আমার সর্বশেষ আপডেটের মতো অপ্রয়োজনীয় স্থান সরিয়ে ফেললে আপনি একটি চর সংরক্ষণ করতে পারবেন!
সার্জিওল

2

সি (জিসিসি) , 378 342 330 বাইট

-10 বাইট সিলিংক্যাট ধন্যবাদ।

এটি একটি প্রথম ছুরিকাঘাত। পুনরাবৃত্তি g () এর উন্নতির জন্য ঘর প্রস্তাব করে।

সম্পাদনা: আমরা সেখানে যাই।

char*k[]={"eZXCVBNM,./e","cASDFGHJKL;'d","bQWERTYUIOP[]\\","`1234567890-=a","BS","TAB","CAPS","ENTER","SHIFT"},*s;f(w,i,j){for(i=4;i--;)for(j=4;j--;puts(""))for(s=k[i];w=*s>96?"FFGFI"[*s-97]-64:2,*s;)printf("%s%s%-*.*s%.2s",L" |"+(s++-k[i]?2:j<3),L"/||"+j,w,j<2?w:j^3?w>2?w:1:w+2,j^2?"___________":w>2?k[*s-93]:s,"\\||||| "+j*2);}

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


1

পাইথন 2, 672 বাইট

সংকুচিত zlib স্ট্রিং ব্যবহার:

print 'x\x9c\xad\xd3\xb9\x0e\x82@\x10\x80\xe1\x9e\xa7\xa0\xb3\xf1\xbe\x8d\xb1\x00\xbc\x0f<\xc0\x1b\xb3>\xc8<\xbc\xfc\x8bf\x8d\xed8\xc5\x17\x9a\xddd\xfe,\xbe\xc9\xc7\xd7b?<\x91\xa7/"\rhB\x0b\xda\xd0\x81.\xf4\xa0\x0f\x03\xa8C\x05F\x10&~>"\xf9]\xc6\x88\x16\x86\xbbj\xc6dZ\x98L<\xb7\xae\x9a|\xc74\x08\xed\xba\xb2\x873L\xe0\x00)\\\xe1\x08\x0b\xd8\xc2\x0e\xee\xf0\x80\xec\xd3\xabXW\x1d\xces\xeb\xaa\xc3\xb9^\x7fy_Q\xb0K\x8a`\x01$0\x86)\xcc`\x0eKX\xc1\x1a\x86P\xb2u\xe3tr\xf8\xee\xf5\xaf\xf7\xa5\x0e\xf6\xfb\xbet\xb1\xde\xbd\x92\xf9b\x9a\x16\x7f\x94\xdc\xe0\x02\x11\x9c\xec\xef\x061l\xa0\x0cU\xa8\xd9\xbc\xee\xb4\xeb\xa5\x8a\xf5\xd3K\x15\xcb\x9e~\x01r\xfc\xb9\xee'.decode('zlib')

2
এটি 672 বাইট, 232 বাইট নয়।
nneonneo

আরও ব্যাখ্যা করুন, আমি আপনাকে বুঝতে পারি নি। @nneonneo
যাই হোক না কেন

1
আপনি যদি কোনও কোডে আপনার কোডটি পেস্ট করেন তবে সেই ফাইলটি 672 বাইট দীর্ঘ হবে। আপনি নিজের কোডটি গণনা করেছেন বলে মনে হয় len("print 'x\x9c...'")যা ভুলগুলি বাইট গণনার \xফলস্বরূপ এরগুলি অনস্কেপ করবে । আপনি গণনা করে একটি সঠিক গণনা অর্জন করতে পারেন তবে সর্বদা সহজ সমাধানটি হ'ল আপনার পাঠ্য সম্পাদক বা ফাইল সিস্টেম কী বলে। len(r"print 'x\x9c...'")
nneonneo

1

পাওয়ারশেল, 249 242 বাইট

"``1234567890-=Bs   
Tab  QWERTYUIOP[]\
Caps  ASDFGHJKL;'Enter
Shift   ZXCVBNM,./Shift   "-split'
'|%{($u=($r=,''+($_-csplit'(.[a-z ]*)'-ne''|% t*per)+'')-replace'.','_')-join'__ _'
$r-join' |||'
$u-join'_|||'
$u-join'_\|/'}|%{-join$_[2..76]}

অবহেলিত ও ব্যাখ্যা করা

মিডডট ·উত্সের স্ট্রিংটি স্পষ্ট করতে পরিবর্তে স্পেস ব্যবহার করে।

"``1234567890-=Bs···
Tab··QWERTYUIOP[]\
Caps··ASDFGHJKL;'Enter
Shift···ZXCVBNM,./Shift···"-split"`n"|%{        # split the string with rows by new line
$r=,''+($_-csplit'(.[a-z ]*)'-ne''|% t*per)+''  # split each row by key labels (any char plus small letters or spaces), 't*per' is shortcut for toUpper method
$u=$r-replace'.','_'                            # replace any char to _ to take an upper 
$u-join'__ _'                                   # join labels and push 4 strings to pipe
$r-join' |||'
$u-join'_|||'
$u-join'_\|/'
}|%{
    -join$_[2..76]                              # return substring for each string
}

# $r =
# ["","`","1","2","3","4","5","6","7","8","9","0","-","=","BS   ",""]
# ["","TAB  ","Q","W","E","R","T","Y","U","I","O","P","[","]","\",""]
# ["","CAPS  ","A","S","D","F","G","H","J","K","L",";","'","ENTER",""]
# ["","SHIFT   ","Z","X","C","V","B","N","M",",",".","/","SHIFT   ",""]
# $u =
# ["","_","_","_","_","_","_","_","_","_","_","_","_","_","_____",""]
# ["","_____","_","_","_","_","_","_","_","_","_","_","_","_","_",""]
# ["","______","_","_","_","_","_","_","_","_","_","_","_","_____",""]
# ["","________","_","_","_","_","_","_","_","_","_","_","________",""]
# before substring:
# __ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________ _
#  |||` |||1 |||2 |||3 |||4 |||5 |||6 |||7 |||8 |||9 |||0 |||- |||= |||BS    |||
# _|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______|||
# _\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|/
# __ ________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _
#  |||TAB   |||Q |||W |||E |||R |||T |||Y |||U |||I |||O |||P |||[ |||] |||\ |||
# _|||______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||
# _\|/______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/
# __ _________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________ _
#  |||CAPS   |||A |||S |||D |||F |||G |||H |||J |||K |||L |||; |||' |||ENTER |||
# _|||_______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______|||
# _\|/_______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|/
# __ ___________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___________ _
#  |||SHIFT    |||Z |||X |||C |||V |||B |||N |||M |||, |||. |||/ |||SHIFT    |||
# _|||_________|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||_________|||
# _\|/_________\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/_________\|/
# final output:
#  ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________
# ||` |||1 |||2 |||3 |||4 |||5 |||6 |||7 |||8 |||9 |||0 |||- |||= |||BS    ||
# ||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______||
# |/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|
#  ________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____
# ||TAB   |||Q |||W |||E |||R |||T |||Y |||U |||I |||O |||P |||[ |||] |||\ ||
# ||______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__||
# |/______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|
#  _________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________
# ||CAPS   |||A |||S |||D |||F |||G |||H |||J |||K |||L |||; |||' |||ENTER ||
# ||_______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______||
# |/_______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|
#  ___________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___________
# ||SHIFT    |||Z |||X |||C |||V |||B |||N |||M |||, |||. |||/ |||SHIFT    ||
# ||_________|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||_________||
# |/_________\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/_________\|

অতিরিক্ত: একটি স্পেস বার এবং ডান সারিবদ্ধ লেবেল, 278 বাইট সহ কীবোর্ড

স্পেস বারটি হ্যান্ডেল করার জন্য আমি নিয়মিত এক্সপ্রেশনটিতে কয়েকটা বাইট যুক্ত করেছি (পুরাতন রেজিএক্সএক্স (.[a-z ]*), নতুন ~|(.[a-z ]*))। এটি রেজেজএক্সের জন্য একটি ছোট পদক্ষেপ, সমাধানের জন্য একটি বিশাল লিপ: আপনি এখন স্পেস বার এবং কী লেবেলগুলি ডানদিকে প্রান্তিকরূপে প্রদর্শন করতে পারেন (কীবোর্ডের ডানদিকে SHIFT, CTRL এবং BS দেখুন)।

"``1234567890-=~   bs
Tab  QWERTYUIOP[]\
Caps  ASDFGHJKL;'Enter
Shift   ZXCVBNM,./~   shift
Ctrl  Alt ~$(' '*34)Alt ~  ctrl"-split'
'|%{($u=($r=,''+($_-csplit'~|(.[a-z ]*)'-ne''|% t*per)+'')-replace'.','_')-join'__ _'
$r-join' |||'
$u-join'_|||'
$u-join'_\|/'}|%{-join$_[2..76]}

আউটপুট:

 ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________
||` |||1 |||2 |||3 |||4 |||5 |||6 |||7 |||8 |||9 |||0 |||- |||= |||   BS ||
||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______||
|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|
 ________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____
||TAB   |||Q |||W |||E |||R |||T |||Y |||U |||I |||O |||P |||[ |||] |||\ ||
||______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__||
|/______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|
 _________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________
||CAPS   |||A |||S |||D |||F |||G |||H |||J |||K |||L |||; |||' |||ENTER ||
||_______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______||
|/_______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|
 ___________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___________
||SHIFT    |||Z |||X |||C |||V |||B |||N |||M |||, |||. |||/ |||   SHIFT ||
||_________|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||_________||
|/_________\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/_________\|
 _________ _______ _____________________________________ _______ _________
||CTRL   |||ALT  |||                                   |||ALT  |||  CTRL ||
||_______|||_____|||___________________________________|||_____|||_______||
|/_______\|/_____\|/___________________________________\|/_____\|/_______\|


0

গণিত 323 বাইট

Uncompress@"1:eJyt00luwjAUgGE2vUdYsWGeEeoiUGYIEKcTTWXEBXqBd3jy26CUYWe/xads8iT/sounv1gFL4VCoLNxxnyk9UZT5BiISAOa0II2dKALPejDAOpQgVcYqSAbEbtOa3GFuayraZ2mPmWyL5bnIZyxR0/CkQkhe/iECcSQwDe8wwK2sIMf+IV/IW0H56LXkJej+016E9LXlRyHO2VLhqDgDaYwgzksYQVrGELJZI+SSXxX0uOV9Jry2Y10q5iHVPPFNLGvUw7wBWP4ME8XIthAGapQM93zv29COlV8DOkrol10BmvF28U="

বিরক্তিকর এবং উদ্বেগজনক। স্ট্রিংটি কেবল বিল্ট-ইন Compressকমান্ডের আউটপুট যা কাঙ্ক্ষিত আউটপুট প্রয়োগ করা হয়।


@ জনগণিত দয়া করে আমার প্রোগ্রামে কী ভুল তা দয়া করে নির্দেশ করুন।
ইয়ান মিলার

0

ওল্ফ্রাম ভাষা (গণিত) , 293 বাইট

c=##&@@(#|2&/@Characters@#)&
r=StringRiffle
p=StringPadRight
Print/@{j=p["",#2,"_"]&@@@#;(" __"<>#&/@j)<>" ",r[p@@@#,i={l="||","|||",l}],j~r~i,j~r~{"|/","\|/","\|"}}&/@{{c@"`1234567890-=","BS"|6},{"TAB"|6,c@"QWERTYUIOP[]\\"},{"CAPS"|7,c@"ASDFGHJKL;'","ENTER"|6},{h="SHIFT"|9,c@"ZXCVBNM,./",h}}

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

তুলনামূলকভাবে সোজাসাপ্টা: কীগুলির সারিগুলির তালিকা হিসাবে এনকোড করে (key name)|(key width)

c=##&@@(#|2&/@Characters@#)&    (*converts a string into (key)|2 s*)
r=StringRiffle
p=StringPadRight
 Print/@
  {j=p["",#2,"_"]&@@@#;
   (" __"<>#&/@j)<>" ",         (*top of the keys*)
   r[p@@@#,i={l="||","|||",l}], (*key names*)
   j~r~i,                       (*space under key names*)
   j~r~{"|/","\|/","\|"}            (*bottom of the keys*)
  }
 &/@
{
 {c@"`1234567890-=","BS"|6},
 {"TAB"|6,c@"QWERTYUIOP[]\\"},
 {"CAPS"|7,c@"ASDFGHJKL;'","ENTER"|6},
 {h="SHIFT"|9,c@"ZXCVBNM,./",h}
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.