45: galaxy brain

themeless midi 15. happy solving!

construction notes (warning: spoilers)

after trying some tricky grid layouts in my last two puzzles, i decided to go back to something more constructor-friendly for this one and focus on making the stacks as fun as possible.

i've been picking up some new strategies for filling with Crossfire. one thing i learned recently (and probably should have learned a long time ago) is that you can have it fill only a portion of the grid by highlighting the region you want to fill. before now, i would try to do the same thing by filling all the regions i didn't care about with black squares, so it's nice to know there's an easier way lol.

i've also learned that Crossfire will stop looking for fill once it finds 100 options for the selected slot. but, unless your grid layout is super tough, there are usually a lot more than 100 possibilities for a given slot. and the 100 that Crossfire finds aren't necessarily the best ones. so, if you want more options, you can just successively apply a bunch of filters to the slot: start with ^A to get 100 options that begin with A, then ^B to get 100 options that begin with B, and so on. you can even get more granular than that if you want to. it's kind of slow and tedious, but it turns up a lot more great candidates than you'd get otherwise.

the last, and maybe most interesting, thing i've been trying is limiting Crossfire to only using high-scoring entries in certain long slots. it's a good way to get seed-quality entries in your puzzle without the inflexibility of locking in a single seed entry.

now, if you use Crossfire, you probably know that it (sadly) doesn't support using different wordlists/score cutoffs for different slots. but i've figured out a decent workaround. as an example, let's say i'm making an 11x11 with a triple stack at the top, and i want to have a really strong 1-Across. so for that slot i want Crossfire to consider only entries that i've scored at, say, 55 or higher.

here's what i do: i have a Python program that generates a wordlist (let's call it BestWords.txt) of only the high-scoring entries in my MyEdits.dict file, but prefixes all of them with some character or sequence of characters that never appears in my normal wordlist. for example, i prefix everything with the digit 0, so, my BestWords.txt file has entries like "0STEAMEDHAMS", "0NEOPRONOUNS", etc.

after doing that, you set up a 12x11 grid in Crossfire, rather than an 11x11. you add BestWords.txt as a dictionary. you fill the whole left column with black squares, except the topmost square, which you put a 0 in. then you set up your desired grid shape on the remaining 11x11 squares like normal.

the upshot is that Crossfire has to fill the topmost row with an entry that starts with 0. but the only entries that start with 0 are the ones in the BestWords.txt file, so it has to use one of those.

hopefully that explanation makes sense---feel free to comment if it doesn't. i'm also happy to put the program i use for this on GitHub if anyone's interested.

anyway, i used a combination of these 3 strategies to fill this grid. i like how nerdy it ended up, with STAR WARS DAY, CHESS ENGINE, and the COMIC/CON pairing. (fun fact: i've never seen any of the Star Wars movies.) only part i don't really like is the MOTET/ATP crossing---seemed like a possible natick, so i gave an extra hint in the ATP clue.

thanks for solving!

Comments

Popular posts from this blog