Giter Club home page Giter Club logo

crossword-builder's Introduction

CrosswordBuilder

This library auto-generates crossword puzzles given a list of words. It's a buggy toy at the moment, but it does generate reasonable puzzles.

The algorith used is inefficient as it tries to place new words on an index of open letters which scales poorly. This has been somewhat mitigated by transitioning to a generator that produces puzzles incrementally and can return puzzles at any arbitrary point while executing.

// Make a new builder
const builder = newCrosswordBuilder();

// Add some words
builder.addWord('one');
builder.addWord('two');
builder.addWord('three');
builder.addWord('four');

// Give it at most a second to think
builder.buffer(1000);

// Take a look at the valid puzzles generated so far, ordered by their score
builder.validPuzzles();

What do you mean by score?

Right now score means surface area / word intersections, where smaller is better. This is on my list of things to change over time.

Thoughts on improvements / variations on scoring:

  • Value symmetry around the axis
  • Value balanced quadrants
  • Value fewer blank spaces

As boards generate, boards are thrown out when they are impossible to render (when different letters occupy the same space). Boards with adjacent letters that aren't currently part of words are kept as they may become valid with more words.

Since reasonably complicated boards have nearly infinite permutations, I am considering expoloring the search space in a random order.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.