'exagéré' est un exemple de mot qui peut être tapé à gauche, sur une carte clavier qwerty normale. le «monopole» est un exemple pour la main droite.
Recherche dans le words
fichier Unix de mots pouvant être saisis d'une seule main. La sortie doit être de deux lignes: liste séparée par des espaces de ces mots pour la main gauche, suivie de la liste pour la main droite. par exemple
a abaft abase abased abases abate abated abates abbess abbesses ...
h hi hill hilly him hip hippo hippy ho hokum ...
Les lettres de gauche sont:
qwertasdfgzxcvb
Les lettres de droite sont:
yuiophjklnm'
Les lettres majuscules comptent comme une seule main; les lettres avec des signes diacritiques comptent comme deux mains et donc les mots qui les contiennent peuvent être ignorés.
[a-gq-tv-xz]
pour les lettres de gauche et['h-puy]
pour les lettres de droite est légèrement plus court que de les écrire tous.Réponses:
sed, 78 octets
nécessite GNU sed, exécuté avec
sed -n -f words.sed < /usr/share/dict/words
la source
Bash (
10089 caractères)Notez que 21 caractères accèdent au chemin complet du fichier de mots: si nous sommes autorisés à supposer que pwd est / usr / share / dict, 16 d'entre eux peuvent être enregistrés.
Crédit à chron pour les expressions rationnelles plus courtes.
la source
Bash, 86
Taylors
for
, mon égrep, regroupe des groupes de caractères.Par définition, si vous tapez à deux mains à l'aveugle, si vous souhaitez produire une lettre majuscule, vous utilisez toujours la main gauche pour produire un caractère majuscule de la main droite et vice versa.
Bien sûr, vous pouvez produire une majuscule
W
uniquement avec la main gauche, mais vous pouvez également produirejunk
avec la main gauche, si vous le souhaitez.la source
Coquille Bourne, 55 caractères
(Ou n'importe quel shell de type Bourne mais
bash
,zsh
ouyash
)Appelé comme
sh -f words.sh /usr/share/dict/words
. (bien sûr, sur les systèmes oùsh
est en faitbash
comme sur certaines distributions Linux, utilisez un autre shell de type Bourne commeash
,ksh
,mksh
,pdksh
,posh
...)la source
Javascript (nœud), 201 octets
Cela peut probablement être réécrit dans une version beaucoup plus courte dans une autre langue, mais je voulais juste essayer le nœud.
Courir avec
node words.js < /usr/share/dict/words
la source
Q (
121140octets)La sortie n'est pas exactement la même (backticks au lieu d'espaces) mais cela est symptomatique de la façon dont Q affiche les types de chaîne.
EDIT: a dû gérer le cas mixte, +20 caractères
la source
`$'i(&:')(min'')(+)(i:read0`:/usr/share/dict/words)in/:\:(x,upper x:"qwertasdfgzxcvb";y,upper y:"yuiophjklnm'")
Rubis,
11292 caractèresEDIT: C'est plus court, mais pas aussi amusant:
Original:
Solution assez simple basée sur des regex. Comme pour les autres, vous pouvez enregistrer certains caractères si vous êtes autorisé à passer le nom de fichier dans ARGV ou s'il est supposé être dans votre répertoire actuel.
la source
Python, 130 octets
Courir avec
python one_handed_words.py < /usr/share/dict/words
la source
Haskell (191)
la source
Python 2.7 (139 caractères)
la source
Perl, 72 octets
courir avec
perl words.pl /usr/share/dict/words
la source
r
été ajouté)Python - 152
137caractères (non testé)modifier: gérer les majuscules et l'apostrophe.
la source
Python, 243 caractères
edit: voici un programme plus conforme à la question:
invoke:
python onehanded.py > /usr/share/dict/words
ou tout autre fichier de mots avec des mots séparés par des sauts de ligneancien: 141 caractères, juste une fonction d'un seul mot
retourne
right
ouleft
siw
est à une main, etboth
si les deux mains sont utilisées.la source
Q, 95 (111 avec chemin de dict codé en dur)
usage
14 caractères supplémentaires si vous le codez en dur
la source
J, 109
Je suis sûr que cela peut être mieux fait, je ne sais pas comment manipuler les chaînes :-(
la source
Python: 122
Lancé avec:
L'idée est essentiellement la même que celle de Dillon Cower, mais j'utilise
set(w)<=S
pour indiquer un sous-ensemble tandis queset(w)^S>=S
pour un ensemble disjoint.la source