It's a thing that lets you assemble words using only the symbols on the Periodic Table. It's a console app and it's purty.
I've never committed to Python 3 before. I moved away from using Python in my day job a long time ago. But since 2 got deprecated, it's time to dive in. And you know what? It's not a big leap, and it's a nice warm pool.
I got the bug back from attempting Advent Of Code in Python this year.
I started out with the data as a JSON file, which I imported like this:
with open('data/elements.json') as data_file: self.elements = json.load(data_file) with open('data/layout.txt') as layout_file: self.layout = layout_file.read()
but I'm still not sure how that works with distributing a package. So I converted it to a python module (which given that Python dictionaries are basically JSON was trivial)
I learned a few things:
- argparse groupings
- Proper packaging and distribution. I can't believe it but I've never done this in Python, despite having written really quite a lot of code over the years.
- No tests.
- Not thread-safe.
- The recursing solver function stores its stack in the object scope. This was done to save having to pass too many clunky variables around and tbh when I tried it I was off-by-one so I immediately gave up.
This has been my first venture into Github projects with a README that contains images, and I'm not totally happy with it. I have to:
- keep the images in the main repo branch even though they're not part of the package
- host the images elsewhere, which is a fragile dependency
- use a separate branch and GitHub pages and link off to it, which is duplication
I went with option 1 because it's simplest. I don't think I like any of them, though.
I used to have a periodic-table shower curtain and I'd read it while in the bathroom. I'd try to come up with as long a word or phrase as possible.
On GitHub as moopet/pyriodic
You can see roughly what it does from an online version moopet.net/periodic
This isn't running the same code, or even in Python. It's PHP if you must know.