#!/usr/bin/env pypy3 # pylint: disable=superfluous-parens # superfluous-parens: Parentheses are good for clarity and portability # Note that this code is almost 4x faster on pypy 2.2 than cpython 3.3. """Compute anagrams for an input sentence.""" import sys import anagrams_mod def main(): """Find anagrams of an input sentence in sys.argv[1].""" if ' ' in ''.join(sys.argv[1]): sys.stderr.write('{}: Sorry, no spaces allowed\n'.format(sys.argv[0])) sys.exit(1) original_sentence = ' '.join(word.strip() for word in sys.argv[1:]).lower() original_sentence_sans_blanks = ''.join(word.strip() for word in sys.argv[1:]).lower() if not original_sentence_sans_blanks.isalpha(): sys.stderr.write('{}: Sorry, only alphabetic sentences are allowed:\n'.format(sys.argv[0])) sys.stderr.write('no punctuation, no digits, no special characters\n') sys.exit(1) with open('/usr/share/dict/words', 'r', encoding="utf-8") as dictionary_file: anagrams_mod.find_anagrams(to_stdout=True, dictionary_file=dictionary_file, original_sentence_string=original_sentence) main()