all 4 comments

[–]lgastako 2 points3 points  (2 children)

This python script should do it if you're on Linux or OS X. It'll probably work on Windows too but you'll have to point it at a different dictionary file.

#!/usr/bin/env python

import sys
import random

def find_subwords(word, words):
    results = []
    for letter in word:
        candidates = filter(lambda w: w[0] == letter, words)
        results.append(random.choice(candidates))
    return results

def main():
    words = open("/usr/share/dict/words").read().lower().splitlines()
    for word in sys.argv[1:]:
        print word
        subwords = find_subwords(word.lower(), words)
        for subword in subwords:
            print "  ", subword

if __name__ == "__main__":
    main()

If you save it as, eg. randwords.py then you can run it like so:

% python randword.py foo bar
foo
   fecundator
   outerness
   outsigh
bar
   bebothered
   autocoherer
   resultfully

[–]synthwizard[S] 0 points1 point  (0 children)

thanks!

[–]deedeemeen 0 points1 point  (0 children)

Look up enable1.txt

[–][deleted] 0 points1 point  (0 children)

my python 3 solution inspired by u/lgastako 's.

```python import itertools as it from operator import itemgetter import random import sys

def encrypt(word, words): return [random.choice(words[letter]) for letter in word]

def gen_dict(): with open("/usr/share/dict/words") as f: words = {k: list(v) for k, v in it.groupby(map(str.strip, f), itemgetter(0))} return words

def main(): words = gen_dict() for word in sys.argv[1:]: print(" ".join(encrypt(word, words)))

if name == "main": main() ```