Mon problème
À mon lieu de travail actuel, je gère à moi seul (ok à deux parce que je ne manque aucun membre) environ 700 ordinateurs portables. En raison de la nature et de la fréquence de leur utilisation, je trouve souvent qu'ils sont retournés avec un peu de dégâts. Pour ce problème, ma principale préoccupation est lorsqu'un ordinateur portable est retourné avec un clavier cassé ou défunt. Lorsque le réparateur de matériel corrige ces claviers cassés, il devient nécessaire de les tester. Le test consiste à utiliser chaque ... et ... chaque ... seule ... clé. Quelle traînée à droite? Le problème est, parfois, je ne sais pas si j'ai tapé une clé ou non.
Une solution?
Écrivez un programme / script qui:
- Prend l'entrée de l'utilisateur
- Lors de la soumission (de la manière que vous jugez appropriée), détermine si chaque touche a été enfoncée.
- Sorties oui ou non ou de toute façon pour indiquer que j'ai réussi à appuyer sur toutes les touches ou non. (Indiquez dans votre réponse les deux sorties possibles si ce n'est pas quelque chose d'évident).
Hypothèses:
- Majuscule, minuscule, les deux? Quelle que soit la manière que vous jugerez appropriée. Tant que c'est [AZ], [az] ou [A-Za-z]. Il en va de même pour les chiffres et autres symboles. (Donc, si a =été tapé, +peu importe). Votre choix si vous souhaitez inclure des caractères décalés ou non.
- Vous n'avez pas à vous soucier des tabulations ou des espaces
- Pas besoin de touches de fonction, CTRL, ALT, Esc ou toute autre touche qui ne sort pas quelque chose à l'écran
- Cela suppose un clavier EN-US et les ordinateurs portables ne comprennent pas de pavé numérique.
- Indépendant du système d'exploitation, quelle que soit la langue que vous préférez
- Peu importe si la touche a été pressée plusieurs fois (lorsque le testeur devient paresseux et commence à casser le bouton comme s'il s'agissait de Mortal Kombat)
Voici un ensemble d'entrée potentiel qui retournerait vrai (ou oui, ou "vous l'avez fait!")
`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Le gagnant est déterminé par le moins de caractères.
Réponses:
GolfScript, 6 octets
Si tous les caractères ASCII avec des codes entre 33 et 127 sont présents, il imprime 1. Sinon, il imprime 0.
Cette approche échouera si l'entrée contient d'autres caractères (y compris une nouvelle ligne finale), ce qui a été autorisé par l'OP et est également vrai pour la solution GolfScript existante.
Usage
Comment ça fonctionne
la source
GolfScript, 11
L'ASCII imprimable n'est pas si intéressant…
Rubis, 68
Avec drapeau
-rset
pour 4 personnages.et
Python 3, 76
la source
JavaScript - 62
70Et un peu plus court:
la source
CJam - 9
Il vérifie également les caractères "décalés" (y compris les lettres majuscules).
Essayez-le sur http://cjam.aditsu.net/
Remarque: il y a un caractère invisible (avec le code 127) après l'apostrophe.
la source
PHP
$_GET['i']
est l'entréela source
$_GET
pour enregistrer 1 caractère si cela est acceptable.!==false
pour enregistrer 8 caractères, puis les accolades pour 4 autres.register_globals
rend cela"é$i"
.die(NO)
est également possible.Python 72:
la source
Haskell, 41 (deux solutions)
ou (style sans point)
Besoin de saisir au moins ces caractères:
dans n'importe quel ordre, n'importe quel nombre de fois. Les caractères supplémentaires sont autorisés. Courez dans un interprète. Vous devez appuyer sur Entrée lorsque vous avez terminé, mais si vous appuyez sur Entrée avant d'avoir terminé, vous pouvez continuer à saisir des caractères et appuyer à nouveau sur Entrée. S'imprimera
True
si vous avez touché chaque caractère, sinon il n'imprimera rien.la source
Perl, 70 caractères
Usage:
Imprime 1 si toutes les frappes sont présentes, sinon n'imprime rien.
la source
C, 97 caractères
Besoin d'appeler le programme avec un argument contenant au moins les lettres:
et obtenez la réponse 1 (vrai). Le jeu de caractères peut être modifié en modifiant la valeur d'initialisation de a.
la source