'exagerado' es un ejemplo de una palabra que se puede escribir en la mano izquierda, en un mapa de teclado qwerty normal. 'monopolio' es un ejemplo para la mano derecha.
Buscando en el words
archivo unix palabras que puedan escribirse con una mano. La salida debe ser dos líneas: lista separada por espacios de tales palabras para la mano izquierda, seguida de la lista para la mano derecha. p.ej
a abaft abase abased abases abate abated abates abbess abbesses ...
h hi hill hilly him hip hippo hippy ho hokum ...
Las letras de la izquierda son:
qwertasdfgzxcvb
Las letras de la derecha son:
yuiophjklnm'
Las letras mayúsculas cuentan como una mano; Las letras con signos diacríticos cuentan como a dos manos y, por lo tanto, las palabras que las contienen pueden ignorarse.
[a-gq-tv-xz]
para las letras de la izquierda y['h-puy]
para las letras de la derecha es un poco más corto que escribirlas todas.Respuestas:
sed, 78 bytes
requiere GNU sed, ejecuta con
sed -n -f words.sed < /usr/share/dict/words
fuente
Bash (
10089 caracteres)Tenga en cuenta que 21 caracteres van a la ruta completa al archivo de palabras: si se nos permite suponer que pwd es / usr / share / dict, se pueden guardar 16 de ellos.
Crédito a cron para las expresiones regulares más cortas.
fuente
Bash, 86
Taylors
for
, mi egrep, agrupación crónica de caracteres.Por definición, si escribe con las dos manos ciegas, si desea producir una letra mayúscula, siempre usa la mano izquierda para producir un carácter en mayúscula de la mano derecha y viceversa.
Por supuesto, puede producir mayúsculas
W
solo con la mano izquierda, pero también puede producirjunk
con la mano izquierda, si lo desea.fuente
Bourne shell, 55 caracteres
(O cualquier shell similar a Bourne pero
bash
,zsh
oyash
)Llamado como
sh -f words.sh /usr/share/dict/words
. (por supuesto, en sistemas dondesh
en realidad esbash
igual que en algunas distribuciones de Linux, utilice otro Bourne-como la cáscara comoash
,ksh
,mksh
,pdksh
,posh
...)fuente
Javascript (nodo), 201 bytes
Esto probablemente se puede volver a escribir en una versión mucho más corta en otro idioma, pero solo quería probar el nodo.
Corre con
node words.js < /usr/share/dict/words
fuente
Q (
121140 bytes)La salida no es exactamente la misma (backticks en lugar de espacios), pero esto es sintomático de cómo Q muestra los tipos de cadena.
EDITAR: tuvo que manejar mayúsculas y minúsculas, +20 caracteres
fuente
`$'i(&:')(min'')(+)(i:read0`:/usr/share/dict/words)in/:\:(x,upper x:"qwertasdfgzxcvb";y,upper y:"yuiophjklnm'")
Ruby,
11292 caracteresEDITAR: Esto es más corto, aunque no tan divertido:
Original:
Solución bastante simple basada en expresiones regulares. Al igual que con los demás, puede guardar algunos caracteres si puede pasar el nombre de archivo en ARGV o si se supone que está en su directorio actual.
fuente
Python, 130 bytes
Corre con
python one_handed_words.py < /usr/share/dict/words
fuente
Haskell (191)
fuente
Python 2.7 (139 caracteres)
fuente
Perl, 72 bytes
corre con
perl words.pl /usr/share/dict/words
fuente
r
se agregó la bandera de sustitución no destructiva )Python -
152137caracteres (sin probar)editar: manejar mayúsculas y apóstrofo.
fuente
Python, 243 caracteres
editar: aquí hay un programa más compatible de acuerdo con la pregunta:
invocar:
python onehanded.py > /usr/share/dict/words
o cualquier otro archivo de palabras con palabras separadas por nueva líneaantiguo: 141 caracteres, solo una función de una sola palabra
regresa
right
oleft
siw
es de una mano, yboth
si se usan ambas manos.fuente
Q, 95 (111 con ruta dict codificada)
uso
14 caracteres más si lo codifica
fuente
J 109
Estoy seguro de que esto se puede hacer mejor, no sé cómo manipular cadenas :-(
fuente
Python: 122
Lanzado con:
La idea es principalmente la misma que la de Dillon Cower, pero uso
set(w)<=S
para indicar un subconjunto mientras queset(w)^S>=S
para un conjunto disjunto.fuente