XKCD: कीबोर्ड मैश विसंगतियाँ


16

एक और XKCD प्रेरित प्रतियोगिता। यह एक कीबोर्ड मैश पर आधारित है ।

एक इनपुट स्ट्रिंग को देखते हुए, विषम वर्णों की पहचान करें, यह मानते हुए कि मानक यूएस QWERTY कीबोर्ड की एकल पंक्ति पर बहुमत टाइप किया गया है । इनपुट स्ट्रिंग्स में शिफ्ट किए गए कुंजी स्ट्रोक हो सकते हैं, लेकिन उनमें कैरेज रिटर्न (एंटर), CTRL / ALT प्रभावित वर्ण, स्पेस, टैब और बैकस्पेस नहीं होंगे (क्योंकि यह मूर्खतापूर्ण होगा)। इस चुनौती के लिए नंबर पैड को कीबोर्ड का हिस्सा नहीं माना जाएगा।

यह चुनौती उन पात्रों को आउटपुट करने की है जो एक ही कीबोर्ड पंक्ति में नहीं हैं, जो एकल स्ट्रिंग में अलग-अलग पात्रों के बहुमत के रूप में हैं। आउटपुट में केवल एक बार और कोई अन्य वर्ण नहीं होना चाहिए।

दो या दो से अधिक पंक्तियों में विषम वर्णों की समान संख्या के मामले में, टाई ब्रेक इस क्रम में निर्धारित किया जाता है:

  • सबसे कम अनूठी सूची
  • सबसे अधिक पंक्ति

इनपुट

STDIN, ARGV या फ़ंक्शन पैरामीटर के माध्यम से एक स्ट्रिंग

उत्पादन

STDOUT या फ़ंक्शन रिटर्न के लिए एक स्ट्रिंग। इसमें प्रत्येक विसंगति वाला चरित्र केवल एक बार होना चाहिए, लेकिन उसे आदेश देने की आवश्यकता नहीं है।

उदाहरण

इनपुट: FJAFJKLDSKF7KFDJ
आउटपुट: 7

इनपुट: ASDF11111
आउटपुट: ASDF

इनपुट: lkjrhsDdftkjhrksRjd
आउटपुट: rtR

इनपुट: } * ३% और २० ९% @ $ २k२३४ # @ $ एम
आउटपुट: }

सबसे ऊपरी पंक्ति सूची में
इनपुट लौटा : ASD! @ # Vcx
आउटपुट :! @ #

सबसे छोटी अद्वितीय सूची
इनपुट: ASdf1233qwER
आउटपुट: 123

सबसे छोटी सबसे छोटी सूची
इनपुट: 12334QWTTSDFDSXVVBBX
आउटपुट: QWT

यह कोड गोल्फ है, इसलिए सबसे छोटी प्रविष्टि जीतती है।

जवाबों:


8

सीजेएम, 111 89 88 86 84 83 बाइट्स

la9*~"{}qwertyuiop ;':asdfghjkl ,./<>?zxcvbnm"{_32^}%_'ÿ,^a\S%+{[f&s\e|__|]:,}$0=&

CJam दुभाषिया में इसे ऑनलाइन आज़माएं ।

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

la9*~     e# Push the input 9 times on the stack.

"{}qwertyuiop ;':<STX>asdfghjkl ,./<>?zxcvbnm"

{_32^}%   e# XOR a copy of each character with 32.
_'<DEL>,^ e# Push a string of all ASCII characters that are missing.
a\        e# Wrap it in an array.
S%+       e# Split the string at spaces and concatenate with the array.
{         e# Sort the chunks according to the following:
  [       e#
    f&s   e# Push the string of characters from the input that are in this chunk.
    \e|   e# If the result is empty, replace it with the input.
    __|   e# Push a copy with duplicates removed.
  ]       e# Collect both strings in an array.
  :,      e# Replace each string with its length.
}$        e#
0=        e# Retrieve the minimum.
&         e# Intersect it with the input.

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