crosswordnexus / html5-crossword-solver

An HTML5 crossword solver that can handle JPZ files
BSD 3-Clause "New" or "Revised" License
9 stars 12 forks source link

Rebus bugs #104

Closed frozenpandaman closed 1 year ago

frozenpandaman commented 1 year ago

Heyo @boisvert42, thought this would be helpful & be good to have written somewhere. Here are the issues I've identified with support for rebuses so far:

crosswordnexus commented 1 year ago

I consider those first two features and not bugs. I think the last one could stand to change, though, if I'm understanding what the issue is.

frozenpandaman commented 1 year ago

@crosswordnexus Thanks for the info! Why are those features? If you "check" a crossword, there's no way to see if the rebus you've inputted is correct or not. So that's not properly checking that square.

In addition, if someone doesn't fill in a rebus or two, but they get the rest of the squares, the puzzle will auto-solve and fill those squares in for them – this seems like behavior that could potentially spoil answers for solvers? Isn't that what the "reveal" feature is for?

I'm happy to provide more info about #­3 if/when needed! edit: nevermind, this is unique to my fork where i had the colors change on solution reveal, not just the font weight/style.

crosswordnexus commented 1 year ago

If a cell is a Schrodinger square where (say) either M or E is acceptable, we don't want the solver to have to guess which one is desired. If a cell is a question mark we want to let the solver type a Q if they want. See the comments to this post for people befuddled by what to put in a particular rebus square. This is what we're trying to avoid.

frozenpandaman commented 1 year ago

@crosswordnexus I see! I got around it in my fork by just removing the // if we have a rebus or non-alpha solution, accept anything block/logic, because I do want support for this type of stuff.

If a cell is a Schrodinger square where (say) either M or E is acceptable, we don't want the solver to have to guess which one is desired.

I added support for this explicitly, in case you're interested. Change the start of isCorrect() to:

if (entry && (solution.constructor === Array)) {
    for (var i = 0; i < solution.length; i++) {
        if (entry == solution[i]) { // if any of the answers are entered, it's correct
            return true;
        }
    }
}

EDIT: checkIfSolved() also needs some updating. && cell.letter.constructor !== Array should be added into the if ... return true check.

If a cell is a question mark we want to let the solver type a Q if they want.

When are cells question marks? Just curious – I don't think I've seen a puzzle like this before.

See the comments to this post for people befuddled by what to put in a particular rebus square.

Hahaha, I got confused by that puzzle too, no indication that's what was what to put there… (but IMO that's the puzzle's fault, in that case)