crucible's People
crucible's Issues
Validate overall interlock
Validate all components of the grid are connected.
Support .puz format
Import/export puzzles in .puz format
Show validation indicator in the UI
Add an icon to show whether the grid is valid. Can be placed with the other icons (like the grid lock icon).
Server-side persistence
Implement a new storage client that persists over the network.
Allow mirror symmetry option in builder
Currently the only symmetry option is 180deg rotational symmetry or no symmetry at all. Mirror symmetry should also be possible, though it's much less common.
User accounts / auth
Integrate with something like Firebase to allow users to have their own accounts. Relates to #13
Improved navigation
- Tab should move to next word
- Backspace should keep backing up through next word
Support larger grids better
UI kind of breaks down with large grids -- support this case better
Interactions on the WordWizard component
Suggest clues
Can generate reasonable clue suggestions with an LLM call.
Suggestions can probably all be batched into a single prompt.
The user could also add a puzzle description to suggest the LLM a certain vibe/theme for the clues.
Allow loading custom wordlists
Some way to load custom lists.
Print view
Grid print view should format according to the NYT submission guidelines.
Support for rebuses, other annotations
Rebus squares are currently not supported and should be. They should add a visual indicator (usually a circle) to the UI to mark their presence.
Lock indicator should be a button
Grid "lock" icon should be clickable to lock/unlock the grid.
Also, add a title to explain what this means.
Use worker pool during auto-fill
Autofill can be made N times faster by delegating to a pool of workers.
Store / query metadata with word lists
Word lists should support metadata, including:
- Score (included in some major wordlists)
- Whether word has appeared in a puzzle
- Clues used for this word in past puzzles
The first two of those can be used to weight words during auto-fill / suggestion.
In the implementation, there's not currently a way to freeze any metadata in the encoded DAWG from tiny-trie
. So metadata would have to be stored and queried separately, unless tiny-trie
was extended to store values (which wouldn't be that hard, but definitely a bit of work).
Allow modifying word lists with custom data
Allow user to add / remove words from the word lists. While the custom patches can't be incorporated into the underlying DAWG, they can be patched onto the wordlist in the caching layer that sits above the DAWG itself.
The customizations can be saved in the storage
layer (which currently is just LocalStorage via the BrowserStorage
client).
Fix validation bug
Currently validation fails at certain unchecked crosses in the grid. Need to catch these and mark them as invalid.
Live solvability indicator
Add a simple solvability indicator to the UI that shows the results of a smoke-test to determine whether the grid is likely solvable.
The smoke test can be performed by running a timeboxed auto-fill search. If the auto-fill runs for longer than, say, 5 seconds, we can assume there is probably an answer out there somewhere. The search usually returns relatively quickly in cases that aren't solvable that a human might not be aware of (such as with sparsely filled crossings, such as __p____j____j
-- while the user is plunking things down in the cross, this word has become unsatisfiable, and the computer can detect that very quickly).
This could replace/enhance the current suggestion analysis, which recurses into crossings one level deep to try to catch unsolvable patterns. The smoke-test is a more robust approach, but doesn't lend itself to visualization as easily.
The UI can show a spinner while the smoke-test is ongoing, then a check or x in the result when finished. This can be placed alongside the "gridlock" icon.
Toggle smoketest on/off
UI feature / actions / reducers to toggle smoke test on and off
Follow up from #21
Generate new wordlists
The included free wordlist (broda) has a lot of shortcomings. Could probably generate a reasonable wordlist with an LLM. The results might have less crosswordese / nonsensical acronyms. (Then again, they might not, and might have other problems, like reddit usernames, etc.)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.