„przesadzone” to przykład słowa, które można wpisać lewą ręką na normalnej mapie klawiatury qwerty. „monopol” jest przykładem dla prawej ręki.
Przeszukiwanie words
pliku uniksowego pod kątem słów, które można wpisać jedną ręką. Dane wyjściowe powinny składać się z dwóch wierszy: rozdzielonej spacjami listy takich słów dla lewej ręki, a następnie listy dla prawej ręki. na przykład
a abaft abase abased abases abate abated abates abbess abbesses ...
h hi hill hilly him hip hippo hippy ho hokum ...
Litery po lewej stronie to:
qwertasdfgzxcvb
Prawe litery to:
yuiophjklnm'
Wielkie litery liczone są jedną ręką; litery z znakami diakrytycznymi liczone są jako dwuręczne, dlatego słowa zawierające je można zignorować.
[a-gq-tv-xz]
dla liter po lewej i['h-puy]
prawej stronie jest nieco krótsze niż wypisywanie ich wszystkich.Odpowiedzi:
sed, 78 bajtów
wymaga GNU sed, uruchom z
sed -n -f words.sed < /usr/share/dict/words
źródło
Bash (
10089 znaków)Zauważ, że 21 znaków przechodzi do pełnej ścieżki do pliku słów: jeśli wolno nam założyć, że pwd to / usr / share / dict, to 16 z nich można zapisać.
Kredyt dla Kron dla krótszych regexes.
źródło
Bash, 86
Taylors
for
, mój egrep, chronią grupowanie znaków.Z definicji, jeśli piszesz ślepo na dwie ręce, jeśli chcesz utworzyć wielką literę, zawsze używasz lewej ręki, aby uzyskać znak wielkiej litery prawej ręki i odwrotnie.
Oczywiście możesz produkować wielkie litery
W
tylko lewą ręką, ale możesz również produkowaćjunk
lewą ręką, jeśli chcesz.źródło
Łuska Bourne'a, 55 znaków
(Lub dowolną powłoką podobną do Bourne'a
bash
, alezsh
lubyash
)Nazywany jako
sh -f words.sh /usr/share/dict/words
. (oczywiście, w systemach, gdziesh
jest rzeczywiściebash
jak na niektórych dystrybucjach systemu Linux, należy użyć innego podobnego Bourne shell jakash
,ksh
,mksh
,pdksh
,posh
...)źródło
JavaScript (węzeł), 201 bajtów
Prawdopodobnie można to przepisać na znacznie krótszą wersję w innym języku, ale chciałem tylko wypróbować węzeł.
Biegnij z
node words.js < /usr/share/dict/words
źródło
Q (
121140 bajtów)Dane wyjściowe nie są dokładnie takie same (backsticks zamiast spacji), ale jest to symptomatyczne dla tego, jak Q wyświetla typy łańcuchów.
EDYCJA: Musiałem poradzić sobie z mieszaną wielkością liter, +20 znaków
źródło
`$'i(&:')(min'')(+)(i:read0`:/usr/share/dict/words)in/:\:(x,upper x:"qwertasdfgzxcvb";y,upper y:"yuiophjklnm'")
Ruby,
11292 znakówEDYCJA: Jest krótsza, choć nie tak zabawna:
Oryginał:
Całkiem proste rozwiązanie oparte na wyrażeniach regularnych. Podobnie jak w przypadku innych, możesz zapisać niektóre znaki, jeśli możesz przekazać nazwę pliku w ARGV lub jeśli zakłada się, że znajduje się ona w bieżącym katalogu.
źródło
Python, 130 bajtów
Biegnij z
python one_handed_words.py < /usr/share/dict/words
źródło
Haskell (191)
źródło
Python 2.7 (139 znaków)
źródło
Perl, 72 bajty
Biegnij z
perl words.pl /usr/share/dict/words
źródło
r
dodano nieniszczącą flagę substytucji )Python - 152
137znaków (nieprzetestowane)edycja: obsługa wielkich liter i apostrofów.
źródło
Python, 243 znaki
edycja: oto program bardziej zgodny z pytaniem:
invoke:
python onehanded.py > /usr/share/dict/words
lub dowolny inny plik ze słowami oddzielonymi znakiem nowej liniistary: 141 znaków, tylko funkcja jednego słowa
zwraca
right
lubleft
jeśliw
jest obsługiwany jedną ręką iboth
jeśli używane są obie ręce.źródło
Q, 95 (111 z zakodowaną ścieżką dyktowania)
stosowanie
14 dodatkowych znaków, jeśli go kodujesz
źródło
J, 109
Jestem pewien, że można to zrobić lepiej, nie wiem jak manipulować łańcuchem :-(
źródło
Python: 122
Uruchomiony z:
Pomysł jest w większości taki sam jak w przypadku Dillona Cowera, ale używam,
set(w)<=S
aby wskazać podzbiórset(w)^S>=S
dla zestawu rozłącznego.źródło