परीक्षण कीबोर्ड


13

मेरी समस्या

मेरे वर्तमान रोजगार के स्थान पर, मैं एकल-हैंडली (ओके ड्युअल-हेडली क्योंकि मुझे कोई अंग नहीं मिल रहा है) लगभग 700 लैपटॉप बनाए रखता है। उनके उपयोग की प्रकृति और आवृत्ति के कारण, मुझे अक्सर लगता है कि वे थोड़ी क्षति के साथ वापस आ गए हैं। इस समस्या के लिए, मेरी प्राथमिक चिंता तब है जब एक टूटे हुए या खराब कीबोर्ड के साथ एक लैपटॉप लौटाया जाता है। जब हार्डवेयर रिपेयरमैन इन टूटे हुए कीबोर्ड को ठीक करता है, तो उनका परीक्षण करना आवश्यक हो जाता है। परीक्षण में प्रत्येक ... और ... प्रत्येक ... एकल ... कुंजी का उपयोग करना शामिल है। क्या सही है? समस्या यह है कि कभी-कभी मैं एक कुंजी टाइप करता हूं या नहीं, मैं ट्रैक खो देता हूं।

एक तरकीब?

एक कार्यक्रम / स्क्रिप्ट लिखें जो:

  1. उपयोगकर्ता इनपुट लेता है
  2. प्रस्तुत करने पर (आप जिस तरह से फिट होते हैं), यह निर्धारित करता है कि क्या प्रत्येक कुंजी दबाया गया था।
  3. यह संकेत देने के लिए हाँ या नहीं या कोई भी तरीका है कि या तो मैं सभी कुंजियों को दबाने में सफल रहा या नहीं। (यदि यह स्पष्ट नहीं है तो दो संभावित आउटपुट के उत्तर में संकेत दें)।

मान्यताओं:

  1. अपरकेस, लोअरकेस, दोनों? आप जिस भी तरीके से फिट होते हैं। जब तक यह [AZ], [az] या [A-Za-z] है। एक ही संख्या और अन्य प्रतीकों के साथ जाता है। (तो अगर =टाइप किया गया था, +कोई फर्क नहीं पड़ता)। आपकी पसंद यदि आप स्थानांतरित वर्णों को शामिल करना चाहते हैं या नहीं।
  2. आपको टैब या रिक्त स्थान के बारे में चिंता करने की आवश्यकता नहीं है
  3. फ़ंक्शन कुंजियों, CTRL, ALT, Esc या किसी भी अन्य कुंजियों की आवश्यकता नहीं है जो स्क्रीन पर कुछ आउटपुट नहीं करते हैं
  4. यह एक एन-यूएस कीबोर्ड मानता है और लैपटॉप में एक नंबरपैड शामिल नहीं होता है
  5. OS अज्ञेयवादी, आप जो भी भाषा पसंद करते हैं
  6. इससे कोई फर्क नहीं पड़ता कि कुंजी को कई बार दबाया गया है (जब परीक्षक सिर्फ आलसी हो जाता है और बटन को ऐसे दबाने लगता है जैसे यह मॉर्टल कोम्बैट है)

यहां एक संभावित इनपुट सेट दिया गया है जो सच लौटेगा (या हाँ, या "आपने यह किया!")

`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./

विजेता कम से कम संख्या में पात्रों द्वारा निर्धारित किया जाता है।


क्या हमें यह जाँचने की आवश्यकता है कि प्रत्येक कीस्ट्रोक कम से कम एक बार या ठीक एक बार दिखाई देता है?
xnor

@xnor, यदि यह कई बार दिखाई देता है, तो यह ठीक है। मैंने सवाल अपडेट किया।
SomeShinyObject

1
ठीक है, तो वह इसके लायक नहीं है।
nyuszika7h

1
@ChristopherW यह आपके लिए चल रहे एक मुद्दा है, तो आप इस वेबसाइट पर एक नजर है चाहिए keyboardtester.com
15:20 बजे gxtaillon

2
@MomemtumMori, कि साइड बार में पेंसिल्वेनिया डच कीबोर्ड तकनीक पर हाथ कर रहा है? पूरी तरह से मेरा।
SomeShinyObject

जवाबों:


1

GolfScript, 6 बाइट्स

.&,94=

यदि 33 और 127 के बीच कोड वाले सभी ASCII वर्ण मौजूद हैं, तो यह 1 प्रिंट करता है। अन्यथा, यह 0 प्रिंट करता है।

यदि इनपुट में अन्य वर्ण (अंतिम नई पंक्ति सहित) शामिल हैं, तो यह दृष्टिकोण विफल हो जाएगा, जिसे ओपी द्वारा अनुमति दी गई है और मौजूदा गोल्फस्क्रिप्ट समाधान के लिए भी सही है।

प्रयोग

$ echo -n '!"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' |
> golfscript <(echo '.&,94=')
1

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

.&  # Compute the intersection of the input string with itself. This removes duplicates.
,   # Compute the length of the resulting string.
94= # Push 1 if the length is 94, otherwise push 0.

आपके द्वारा जुड़ी गई टिप्पणी यह ​​नहीं कहती है कि इनपुट में एक नई पंक्ति (या 33-126 के बाहर अन्य वर्ण) नहीं होंगे, यह सिर्फ यह कहता है कि यह केवल मान्य वर्ण होगा। क्या न्यूलाइन एक अमान्य चरित्र है?
एडित्सू ने छोड़ दिया क्योंकि SE

द्वारा मान्य मैं मतलब रेंज हम के खिलाफ रहे हैं परीक्षण में है, लेकिन मुझे लगता है कि मैं अपने आप को और अधिक स्पष्ट रूप से व्यक्त किया जाना चाहिए था जब ओपी पूछ ...
डेनिस

6

गोल्फक्राफ्ट, ११

मुद्रण योग्य ASCII वह दिलचस्प नहीं है ...

127,32,-^,!

रूबी, 68

-rset4 पात्रों के लिए ध्वज के साथ ।

p Set.new(?`..?z)+(?,..?9)+%w{[ ] \\ ; '}==Set.new(gets.split'')

तथा

पायथन 3, 76

print(set("`1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./")==set(input()))

1
मैं उन्हें दो अलग-अलग उत्तरों में पोस्ट करने का सुझाव दूंगा।
nyuszika7h

3

जावास्क्रिप्ट - ६२ 62०

alert(!(47-prompt().match(/([',-\/\d;=a-z\[-\]`]?)(?!.*\1)/g).length))

और थोड़ा छोटा:

alert(!!prompt().match(/([',-\/\d;=a-z\[-\]`])(?!.*\1)/g)[46])

2

CJam - 9

',33>q-!

यह "स्थानांतरित" वर्णों के लिए भी जाँच करता है (अपरकेस अक्षर सहित)।
इसे http://cjam.aditsu.net/ पर आज़माएं

नोट: एपोस्ट्रोफ के बाद एक अदृश्य चरित्र (कोड 127 के साथ) है।


"यह" स्थानांतरित "वर्णों के लिए भी जाँच करता है (अपरकेस अक्षर सहित)।" मैं कहूंगा कि यह गलत व्यवहार है।
Ry-

@minitech "यदि आप स्थानांतरित किए गए वर्णों को शामिल करना चाहते हैं या नहीं तो आपकी पसंद।"
एडित्सू ने छोड़ दिया क्योंकि एसई

लेकिन इसके ठीक पहले, यह कहता है "अपरकेस या लोअरकेस" (यह अनन्य है, ठीक है?)
Ry-

@ मिनिटेक, मैंने सवाल अपडेट किया। माफ़ करना। यह या भ्रामक है।
SomeShinyObject

@ChristopherW मेरा प्रोग्राम आपके उदाहरण इनपुट पर 0 प्रिंट करेगा, लेकिन यदि आप शिफ्ट करते समय उन सभी वर्णों को दबाते हैं, तो यह 1 प्रिंट होगा। क्या यह ठीक है?
aditsu छोड़ दिया क्योंकि एसई

2

पीएचपी

    foreach (str_split("`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./") as $v) {
        if (strpos($_GET['i'],$v)!==false)die(NO);
    }

$_GET['i'] इनपुट है


1
$_GETयदि यह स्वीकार्य है तो 1 char को बचाने के लिए उपयोग करें ।
tomsmeding

@tomsmeding, हाँ मैंने किया :)
Alireza Fallah

आप अपने स्ट्रिंग के सामने एक पैडिंग चरित्र (é या कुछ) जोड़ सकते हैं और !==false8 वर्णों को बचाने के लिए हटा सकते हैं , फिर 4 और ब्रेसिज़। register_globalsयह बनाता है "é$i"die(NO)यह भी संभव है।
Ry-

@ मिनिटेक - मुझे नहीं पता कि तुम क्या कहते हो, गद्दी चरित्र? इसके बजाय मेरे जवाब को संपादित करने के लिए स्वतंत्र महसूस करें
अलिजा फालना

1

पायथन 72:

f=lambda x:set(x)==set("`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./")

3
ओपी ने एक कार्यक्रम के लिए कहा जो उपयोगकर्ता इनपुट लेता है।
nyuszika7h

1

हास्केल, 41 (दो समाधान)

interact(\y->show$all(`elem`y)[' '..'`'])

या (बिंदु-मुक्त शैली)

interact$show.(`all`[' '..'`']).flip elem

कम से कम इन पात्रों को इनपुट करने की आवश्यकता है:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`

किसी भी क्रम में, किसी भी समय। अतिरिक्त पात्रों की अनुमति है। दुभाषिए में चलाएं। जब आप काम कर रहे हों, तब एंटर दबाएं, लेकिन यदि आप काम पूरा करने से पहले एंटर दबाते हैं, तो आप वर्ण दर्ज कर सकते हैं, और फिर से एंटर दबा सकते हैं। Trueअगर आप हर चरित्र को मार चुके हैं तो प्रिंट करेंगे , अन्यथा यह कुछ भी प्रिंट नहीं करेगा।


0

पर्ल, 70 अक्षर

say[sort grep!$s{$_}++,<>=~/\S/g]~~[sort"',-./;=[\]`"=~/./g,0..9,a..z]

उपयोग:

echo `134223423567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./ | perl -E 'say[sort grep!$s{$_}++,pop=~/\S/g]~~[sort"',-./;=[\]`"=~/./g,0..9,a..z]'

प्रिंट 1 यदि सभी कीस्ट्रोक्स मौजूद हैं, तो कुछ भी नहीं प्रिंट करता है।


Perl को 5.10+ की आवश्यकता है
Zaid

ज्यादातर गोले में, आपका उदाहरण विफल हो जाएगा क्योंकि गूँजते हुए कुछ पात्रों में भागने की आवश्यकता होती है।
डेनिस

0

सी, 97 वर्ण

main(long a,char**u){a=0xfb0000000750003d;for(u++;**u;a|=2L<<*(*u)++-39);a=48+!~a;write(1,&a,1);}

कम से कम अक्षरों वाले तर्क के साथ कार्यक्रम को कॉल करने की आवश्यकता है:

`1234567890-=AZERTYUIOPQSDFGHJKLMWXCVBN[]\;',./

और उत्तर 1 (सत्य) प्राप्त करें। एक के आरंभीकरण मूल्य को बदलकर चारसेट को बदला जा सकता है।

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