diff options
Diffstat (limited to 'challenge-166/paulo-custodio/python/ch-1.py')
| -rw-r--r-- | challenge-166/paulo-custodio/python/ch-1.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/challenge-166/paulo-custodio/python/ch-1.py b/challenge-166/paulo-custodio/python/ch-1.py new file mode 100644 index 0000000000..b64b0f1337 --- /dev/null +++ b/challenge-166/paulo-custodio/python/ch-1.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 + +# Challenge 166 +# +# Task 1: Hexadecimal Words +# Submitted by: Ryan J Thompson +# +# As an old systems programmer, whenever I needed to come up with a 32-bit +# number, I would reach for the tired old examples like 0xDeadBeef and +# 0xC0dedBad. I want more! +# +# Write a program that will read from a dictionary and find 2- to 8-letter +# words that can be "spelled" in hexadecimal, with the addition of the following +# letter substitutions: +# +# o -> 0 (e.g., 0xf00d = "food") +# l -> 1 +# i -> 1 +# s -> 5 +# t -> 7 +# +# You can use your own dictionary or you can simply open +# ../../../data/dictionary.txt (relative to your script's location in our GitHub +# repository) to access the dictionary of common words from Week #161. +# +# Optional Extras (for an 0xAddedFee, of course!) +# +# Limit the number of "special" letter substitutions in any one result to +# keep that result at least somewhat comprehensible. (0x51105010 is an +# actual example from my sample solution you may wish to avoid!) +# +# Find phrases of words that total 8 characters in length +# (e.g., 0xFee1Face), rather than just individual words. + +import sys + +if len(sys.argv) != 2: + sys.exit("usage: ch-1.py words.txt") + +f = open(sys.argv[1], "r") +for line in f.readlines(): + word = line.strip() + if len(word) >= 2 and len(word) <= 8 and all(c in 'abcdef0list' for c in word.lower()): + word = word.translate(str.maketrans('olist', '01157')) + print("0x" + word.upper()) |
