आइए, की-लैंग्वेज को पार्स और प्रोसेस करें! कीबोर्ड कुंजी और / या विशेष कुंजी के अनुक्रम के इनपुट को देखते हुए, एक प्रोग्राम, फ़ंक्शन, आदि लिखें जो उत्पाद को आउटपुट करता है जब सभी कीबोर्ड निम्नलिखित कीबोर्ड के आधार पर संसाधित होते हैं:
+-------------------------------------------------------+
| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | - | + | |
| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | _ | = |Del|
+-------------------------------------------------------+
|TAB| q | w | e | r | t | y | u | i | o | p | [ | ] | \ |
| | Q | W | E | R | T | Y | U | I | O | P | { | } | | |
+-------------------------------------------------------+
|CAPS | a | s | d | f | g | h | j | k | l | ; | ' | RET |
| | A | S | D | F | G | H | J | K | L | : | " | |
+-------------------------------------------------------+
| SHIFT | z | x | c | v | b | n | m | , | . | / | SHIFT |
| | Z | X | C | V | B | N | M | < | > | ? | |
+-------------------------------------------------------+
| |
| SPACEBAR |
+-------------------------------------------------------+
कुंजी है कि उत्पादन वास्तविक पात्रों नहीं खाली स्थान के से मिलकर और कर रहे हैं अन्य कुंजी के रूप में "चरित्र कुंजी" में जाना जाएगा द्वारा संशोधित किया जा करने में सक्षम है, और अन्य चाबी या उत्पादन खाली स्थान के "विशेष कुंजी" के रूप में जाना जाएगा के उत्पादन को संशोधित उन है कि। वर्णमाला वर्ण कुंजियाँ, जिन्हें अपरकेस अक्षरों के साथ इनपुट में दिखाया जाएगा, Shiftया तो Caps Lockअपरकेस अक्षरों को बनाने के लिए संशोधित किया जा सकता है , और वर्ण कुंजी के बाकी हिस्सों को केवल Shiftअपने वैकल्पिक वर्णों के साथ संशोधित किया जा सकता है । इसलिए Aइनपुट में a Aवर्ण कुंजी से मेल खाती है , जिसका सामान्य आउटपुट है aऔर जिसका संशोधित आउटपुट, Shiftया तो Caps Lockकुंजी के साथ प्राप्य है A। दूसरी ओर,/, जो / ?चरित्र कुंजी से मेल खाती है , का सामान्य आउटपुट है /और ?केवल Shiftइस समय के साथ प्राप्य का संशोधित आउटपुट है ।
नियम
इनपुट हमेशा एक स्ट्रिंग होगा जिसमें वर्ण कुंजियों और विशेष कुंजियों का एक क्रम होगा। इनपुट के लिए स्ट्रिंग मैपिंग की पूरी विशेष कुंजी (यानी वे इनपुट में होने की गारंटी प्रारूप है) और उनके अनुरूप कार्य / आउटपुट निम्नानुसार हैं:
<DEL> -> Delete the previous character (including whitespace). If called when string is empty, nothing happens. If called 2 or more times in a row, 2 consecutive deletes happen. For instance, "RE<DEL><DEL>" should return an empty string ("") and also "R<RET><DEL><DEL>E" should return just "E".<CAPS> -> Enable Caps Lock until <CAPS> appears again, upon which it is disabled, although it is not guaranteed to be disabled by the end of the input. Enabling this only modifies the upcoming alphabet keys resulting in them outputting only uppercase letters. For instance, "<CAPS>RE<CAPS>" results in the output "RE", but <CAPS>.<CAPS> would still result in a ".".<RET> -> Add a new line.<SPC> -> Add a single blank space.<TAB> -> Add 4 spaces.<SHFT> -> Shift is held down resulting in the alternate character of the upcoming keypress to be output, after which the key is released. For instance, "<SHFT>A" results in the output "A", "<SHFT>1" results in the output "!", and "<SHFT>1234" results in the output "!234" as only the first upcoming keypress is modified and nothing else. It is guaranteed that a character key will succeed a <SHFT>. Therefore, <SHFT><SPC> is not a possible input.
इनपुट के रूप में एक खाली स्ट्रिंग भी संभव है, जिसके लिए आउटपुट कुछ भी नहीं होना चाहिए।
- किसी भी अंतर्निहित का उपयोग इस समस्या को सीधे हल करता है।
- मानक खामियों का उपयोग बंद है।
परीक्षण के मामलों
Actual String Input -> Actual String Outputकुछ के लिए स्पष्टीकरण के बाद प्रारूप में प्रस्तुत किया गया।
1<SHFT>2<TAB><CAPS>R.KAP.<SPC><SHFT>123 -> 1@ R.KAP. !23आउटपुट
1को1बिना टॉगल के दबाया जाता है, फिर शिफ्ट को नीचे रखा जाता है और2कुंजी को@आउटपुट में दबाया जाता है । फिर Shift कुंजी जारी की जाती है और टैब दबाया जाता है, जिसके परिणामस्वरूप 4 स्थान का इंडेंटेशन होता है। अप के बाद, कैप्स लॉक कुंजी दबाने, जिसके बादR,.,K,A,P, और.कुंजी दबाया जाता है, उत्पादन में जिसके परिणामस्वरूपR.KAP.। अंत में, एक भी अंतरिक्ष उत्पादन में जिसके परिणामस्वरूप पारी के बाद आता है!23उत्पादन किया जा रहा है जब1,2और3चाबियाँ अंत में दबाया जाता है।<SHFT>ABCDEFG<SHFT>HIJK<SHFT>1<SHFT>2<SHFT>3<SHFT>4567890 -> AbcdefgHijk!@#$567890Shift कुंजी को कुंजी के बाद नीचे रखा जाता है
A, जिसके परिणामस्वरूपAआउटपुट दबाया जाता हैbcdefgजबB-Gकुंजी दबाया जाता है। फिर, Shift कुंजी को फिर से दबाकर रखा जाता है,Hकुंजी द्वारा सफल होता हैH, जिसके बाद आउटपुट होता है , उसके बादijkजबI-Kकुंजी दबाया जाता है। अंत में,1-4कुंजी सभी परिवर्तन के रूप में संशोधित कर रहे हैं प्रत्येक कुंजी दबाने उत्पादन में जिसके परिणामस्वरूप से पहले नीचे आयोजित किया जाता है!@#$द्वारा बंद समाप्त हो गया567890जब5-0कुंजी दबाया रहे हैं।<CAPS>THIS<SPC>IS<SPC>IN<SPC>ALL<SPC>CAPS<CAPS><SPC>NOW<SPC>THIS<SPC>IS<SPC>IN<SPC>ALL<SPC>LOWERCASE -> THIS IS IN ALL CAPS now this is in all lowercase<TAB><SPC><TAB><SHFT>1 -> !<CAPS>WWW<CAPS>.CODEGOLF.STACKEXCHANGE<SHFT>.COM -> WWW.codegolf.stackexchange>comPROGRAMMING<CAPS><SPC>IS<SPC><CAPS>AWESOME -> programming IS awesome<DEL><RET><DEL><RET><DEL> -> "" (Empty String)डिलीट की को शुरुआत में दबाया जाता है जिसके बाद कुछ नहीं होता है। फिर, रिटर्न कुंजी को एक नई लाइन में दबाया जाता है, जो कि बैकस्पेस कुंजी को फिर से दबाने के बाद हटा दिया जाता है। अंत में, एक ही अनुक्रम (बैकस्पेस के बाद नई लाइन) दोहराया जाता है। इस सब के बाद, आउटपुट एक खाली स्ट्रिंग है।
<SHFT>HI<SPC>HOW<SPC>ARE<SPC>YOU<SHFT>/<RET><SHFT>I<SPC><SHFT>AM<SPC>O<DEL><SHFT>GOOD<SHFT>1 -> Hi how are you?\nI Am Good!<SHFT>,<CAPS>RET<CAPS><SHFT>. -> <RET>स्ट्रिंग वास्तविक स्ट्रिंग आउटपुट
<RET>होना चाहिए । इस प्रकार, यह एक नई पंक्ति का उत्पादन नहीं करना चाहिए ।<CAPS>67890,.;'[]<CAPS> -> 67890,.;'[]<CAPS><SHFT>A -> ARE<DEL><DEL> -> "" (Empty String)U<RET><DEL><DEL>I -> i<DEL><DEL><DEL>5<DEL> -> "" (Empty string)"" (Empty String) -> "" (Empty String)
ये है codegolf तो बाइट्स में सबसे छोटा कोड जीतता है!
AbcdefgHijk!@#$567890? इसके अलावा, टेस्ट # 8 में, <SHFT>स्ट्रिंग के अंत में है, लेकिन नियम बताते हैं: "यह गारंटी है कि एक चरित्र कुंजी एक <SHFT> सफल होगी।"