yourealwaysbe / forkyz

Forkyz Crosswords
GNU General Public License v3.0
39 stars 5 forks source link

Automatic filling of "solution word" at bottom of crossword #57

Closed jancborchardt closed 1 year ago

jancborchardt commented 1 year ago

Some crosswords have this summary word at the bottom (not sure what the proper name for it is). Currently you have to fill it out manually. It would be nice if it would be filled out automatically as you fill the boxes above.

Best would even be if it works both ways as if the fields are linked. Then you could complete the word on the bottom seamlessly.

IMG_20220902_160229.jpg

yourealwaysbe commented 1 year ago

Is that from the Hamburger Abendblatt or imported from a file? If the latter, let me know where the files come from so i can see if/how the links are represented.

jancborchardt commented 1 year ago

Yep, that's from the Hamburger Abendblatt. Can't find any of the other default crosswords which have a similar thing.

yourealwaysbe commented 1 year ago

I'm currently pondering how to proceed. The solution word setup is a bit of a hack i made for the Hamburger Abendblatt to emulate how it appears on their website. I haven't seen the notion of "linked boxes" in any of the standard file formats such as .puz, .jpz, or .ipuz (though could be wrong), so i'm hesitant to add a bunch of infrastructure to make a bodge work better :)

Standard formats support solution words, and there isn't a proper implementation of that in Forkyz. It would make sense for the Hambuger Abendblatt puzzle to be the prompt for me to implement solution words. However, afaik a standard implementation would just ask you to enter a word, without being explicitly connected to any of the boxes on the board -- so you wouldn't get the behaviour requested.

Another possibility is to add the solution word as an extra clue associated with the appropriate cells. This would be more or less pointless on the main play screen -- it would just highlight the cells with the small numbers in the bottom corner -- but it would bring them all together in a row on the clues and notes pages. See the screenshots below.

The puzzle view with a solution clue highlighting cells scattered around the grid The solution clue on the notes page, the scattered cells are now in a row

I'm not entirely convinced by this, so other ideas welcome!

jancborchardt commented 1 year ago

Another possibility is to add the solution word as an extra clue associated with the appropriate cells. This would be more or less pointless on the main play screen

I’d say that’s already an improvement, since currently the solution word behaves a bit strangely in that every cell seems individual, that is you can not type the word as a whole. Having it behave like the other words of the crossword, albeit being "out of the flow" of the crossword puzzle and just shown below, would already be cool.


The connection of the individual fields of the solution word to the corresponding fields in the crossword (and vice versa) would of course still be cool. I also looked a bit through the puz/ipuz etc standards and couldn’t find anything either. It seems that this "solution word" for crosswords is a particularly German thing? At least I know it a lot from crossword books too.

I assume you scrape the Hamburger Abendblatt puzzle? I couldn’t really find the link to it in an open format, but probably missed something. And yeah it might be a hack currently, but it does work really well from the user perspective – so maybe just like the little numbers are added to the fields, those fields could each be linked both ways. Often an implementation has to come before a standard. :D

yourealwaysbe commented 1 year ago

I couldn’t really find the link to it in an open format, but probably missed something.

The webapp gets the crossword in a JSON format. E.g. (link might not work tomorrow). The solution word is just a field that stores which cells correspond to the solution.

I'm thinking it would be reasonable to add such a solution word to the puzzle representation of Forkyz -- it's not an obscure concept. Then if it's present it can be displayed below the board as the Hamburger Abendblatt web app displays it. IPuz doesn't have a way of representing it, but it does have a standard way of adding your own extensions, which i use already for a bunch of Forkyz data. I'd basically copy the JSON format they use.

yourealwaysbe commented 1 year ago

I pushed Version 33 that includes the solution word as a clue in the puzzle itself, and then added a "pinned clue" feature that displays the solution word below the grid. So it should pretty much look the same as it does now, but you can select the solution word and the cells are "linked" in the sense that they're the same cells.

It doesn't work too well if you have "snap to clue" enabled and typically have a zoomed in view -- it jumps to the cell on the board rather than in the solution word. Let me know if that's a problem.

I'll close the issue for now, but feel free to reopen if it needs tweaking.

jancborchardt commented 1 year ago

@yourealwaysbe sorry for the late response: I tried out your solution now and it really seems perfect! :) Very cool work, thank you so much!

yourealwaysbe commented 1 year ago

@yourealwaysbe sorry for the late response: I tried out your solution now and it really seems perfect! :) Very cool work, thank you so much!

Not a problem. Glad it works.

I wonder now if this could have been done as an (ab)use of the IPuz acrostic format. There would be the main grid with the clues, and a second grid for the solution words which takes letters from the main grid solutions. But the IPuz documentation says very little about how the box correspondences are encoded, and i didn't find any online examples in a quick search.

(I was doing a Kate Schmate acrostic at the weekend, and it's very painful entering each letter twice. Unfortunately the underlying JPZ file it came from doesn't obviously encode any links. It looks exactly like a normal crossword, except it's in an "acrostic" XML tag not a crossword one. I'm guessing links are just by convention on which corner of a cell the numbers are put.)