Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/alokmenghrajani/go-crossword-maker

A crossword maker (crossword compiler / puzzle creator) written in Go. Solves the constraint satisfaction problem related to building crosswords from a list of words.
https://github.com/alokmenghrajani/go-crossword-maker

crossword generator

Last synced: about 1 month ago
JSON representation

A crossword maker (crossword compiler / puzzle creator) written in Go. Solves the constraint satisfaction problem related to building crosswords from a list of words.

Awesome Lists containing this project

README

        

# go-crossword-maker
A crossword maker written in Go (also known as a crossword grid compiler, setter, creator,
generator or composer). Solves the constraint satisfaction problem related to building crosswords
from a list of words.

This code is currently work in progress. You can run `go test -v .` and that's about it.

# building and running tests
To run the tests
```
go test -v ./grid ./words ./generate .
```

To run the code
```
go build
./go-crossword-maker --wordlist ukacd.txt --size 4
```

# motivation for writing this in Go
I need a crossword maker which will perform reasonably well with a small wordlist. I'm building
a crossword with a very specific theme. It's a hard problem to solve manually and I found a
bunch of academic papers on this topic but not much usable code.

So I figured I'll implement my own piece of code and see how far I can get.

I picked Go because I want the end-result to be a command line tool that can run across multiple
different platforms. Go makes cross-compiling easy.

I also figured that Go enables writing efficient parallel processing code and that it will be
easier to keep all the cores busy. The box I'm planning to run this has multiple CPUs with 10 cores each.

# other ideas
- how hard would it be to make this run on a GPU?