आइए, की-लैंग्वेज को पार्स और प्रोसेस करें! कीबोर्ड कुंजी और / या विशेष कुंजी के अनुक्रम के इनपुट को देखते हुए, एक प्रोग्राम, फ़ंक्शन, आदि लिखें जो उत्पाद को आउटपुट करता है जब सभी कीबोर्ड निम्नलिखित कीबोर्ड के आधार पर संसाधित होते हैं:
+-------------------------------------------------------+
| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | - | + | |
| ` | 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!@#$567890
Shift कुंजी को कुंजी के बाद नीचे रखा जाता है
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>com
PROGRAMMING<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 -> A
RE<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> सफल होगी।"