'exagerado' é um exemplo de uma palavra que pode ser digitada na mão esquerda, em um mapa de teclado qwerty normal. 'monopólio' é um exemplo para a mão direita.
Pesquisando no words
arquivo unix por palavras que podem ser digitadas por um lado. A saída deve ter duas linhas: lista separada por espaços dessas palavras para a mão esquerda, seguida pela lista para a mão direita. por exemplo
a abaft abase abased abases abate abated abates abbess abbesses ...
h hi hill hilly him hip hippo hippy ho hokum ...
As letras da esquerda são:
qwertasdfgzxcvb
As letras da direita são:
yuiophjklnm'
Letras maiúsculas contam como uma mão; letras com diacríticos contam como duas mãos e, portanto, as palavras que as contêm podem ser ignoradas.
[a-gq-tv-xz]
para as letras da esquerda e['h-puy]
da direita é um pouco mais curta do que escrever todas elas.Respostas:
sed, 78 bytes
requer GNU sed, execute com
sed -n -f words.sed < /usr/share/dict/words
fonte
Bash (
10089 caracteres)Observe que 21 caracteres vão para o caminho completo para o arquivo de palavras: se for permitido assumir que pwd é / usr / share / dict, 16 deles podem ser salvos.
Crédito para chron pelas regexes mais curtas.
fonte
Bash, 86
Taylors
for
, meu egrep, chrons agrupamento de caracteres.Por definição, se você digitar com as duas mãos às cegas, se desejar produzir uma letra maiúscula, sempre use a mão esquerda para produzir um caractere maiúsculo da mão direita e vice-versa.
É claro que você pode produzir uma letra maiúscula
W
apenas com a mão esquerda, mas também pode produzirjunk
com a mão esquerda, se quiser.fonte
Casca de Bourne, 55 caracteres
(Ou qualquer concha tipo Bourne
bash
, mas ,zsh
ouyash
)Chamado como
sh -f words.sh /usr/share/dict/words
. (claro, em sistemas ondesh
é realmentebash
como em algumas distribuições Linux, use outro Bourne-como shell comoash
,ksh
,mksh
,pdksh
,posh
...)fonte
Javascript (nó), 201 bytes
Provavelmente, isso pode ser reescrito para uma versão muito mais curta em outro idioma, mas eu só queria tentar o nó.
Correr com
node words.js < /usr/share/dict/words
fonte
Q (
121140 bytes)A saída não é exatamente a mesma (backticks em vez de espaços), mas isso é sintomático de como Q exibe os tipos de string.
EDIT: teve que lidar com caso misto, 20 caracteres
fonte
`$'i(&:')(min'')(+)(i:read0`:/usr/share/dict/words)in/:\:(x,upper x:"qwertasdfgzxcvb";y,upper y:"yuiophjklnm'")
Ruby,
11292 caracteresEDIT: Este é mais curto, embora não tão divertido:
Original:
Solução bastante simples baseada em regex. Assim como os outros, você pode salvar alguns caracteres se for permitido passar o nome do arquivo no ARGV ou se ele estiver no seu diretório atual.
fonte
Python, 130 bytes
Correr com
python one_handed_words.py < /usr/share/dict/words
fonte
Haskell (191)
fonte
Python 2.7 (139 caracteres)
fonte
Perl, 72 bytes
correr com
perl words.pl /usr/share/dict/words
fonte
r
foi adicionado)Python - 152
137caracteres (não testado)editar: lidar com maiúsculas e apóstrofo.
fonte
Python, 243 caracteres
edit: aqui está um programa mais compatível de acordo com a pergunta:
invoke:
python onehanded.py > /usr/share/dict/words
ou qualquer outro arquivo de palavras com palavras separadas por nova linhaold: 141 caracteres, apenas uma função de palavra única
retorna
right
ouleft
sew
é de uma mão eboth
se as duas mãos são usadas.fonte
Q, 95 (111 com caminho de dict codificado)
uso
Mais 14 caracteres se você o codificar
fonte
J, 109
Tenho certeza que isso pode ser feito melhor, não sei como manipular string :-(
fonte
Python: 122
Lançado com:
A idéia é basicamente a mesma de Dillon Cower, mas eu uso
set(w)<=S
para indicar um subconjunto enquantoset(w)^S>=S
para um conjunto não definido.fonte