kamilmielnik / scrabble-solver

Free, open-source, cross-platform, and multi-language analysis tool for Scrabble, Super Scrabble & Literaki. Quickly find top scoring words using given board & tiles. Available in English, French, German, Persian, Polish, Romanian, Spanish & Turkish.
https://scrabble-solver.org
Other
94 stars 20 forks source link

Adding Catalan support #280

Open jmontane opened 1 year ago

jmontane commented 1 year ago

Hi, I'm the curator of an open licensed wordlist for Catalan language Scrabble. It's used at some Scrabble tournaments (other tournaments use a closed wordlist). I'm trying to add Catalan support to Scrabble-solver (See screenshots and fork). But I have some issues:

Can you help me? Thanks in advance

scrabble-solver-remaining-tiles scrabble-solver-catalan

kamilmielnik commented 1 year ago
  • Multichar/digraph tiles. Catalan has NY, L·L and QU tiles. NY and QU works (I'm unable to type them, see Issue Unable to input Spanish digraph tiles #279), but L·L tile (it's a 3 char tile) doesn't work. Neither using clipboard

My fault, feel free to skip this and I'll make sure it's fixed before Catalan support is released.

(it's a 3 char tile)

Ouuuuuch. This not supported yet. It's hard but surely doable. Feel free to skip this part. I'll sleep on it and think about it.

  • I can't provide dictionary definitions (how can avoid this requirement?)

I believe we can use Català Wiktionary. It was used by Scrabble Solver at some point for all languages but unfortunately it was good-enough only for English. If this is the best we can do for Catalan - let it be. Feel free to skip this and I'll be more than happy to take care of this part.

  • Catalan flag appears weird. I was unable to fix it

Did you provide aspect ratio (see: 1 & 2)?

  • I would like to classify Ç and L·L as consonant tiles, just like C, M or NY tiles.

These constants have to be updated: https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/constants/src/index.ts#L15-L17

I'm not sure about classifying L·L as a consonant. It's a digraph, right?

Can you help me? Thanks in advance

It'll make me happy if Scrabble Solver supports Catalan :)

kamilmielnik commented 1 year ago

I've created a dedicated milestone for Catalan support: https://github.com/kamilmielnik/scrabble-solver/milestone/21

kamilmielnik commented 1 year ago

L·L is difficult because · is not allowed by itself. Would it be ok, if typing LL in Catalan would insert L·L?

The · would never have to be provided (but it would still work when pasting).

jmontane commented 1 year ago

L·L is difficult because · is not allowed by itself. Would it be ok, if typing LL in Catalan would insert L·L?

The · would never have to be provided (but it would still work when pasting).

Yes, it's good enough. But two regular L can be played together too. See: cella vs. cel·la sample, they are different and valid words.

kamilmielnik commented 1 year ago

I'll sleep on it and think about it.

I think it will be easier if your code is merged before I start fixing the L·L case because I plan to do some refactoring that will create conflicts with your code.

I can't provide dictionary definitions (how can avoid this requirement?)

I see in your fork that you've added support for word definitions. Can we close the #282 then?

kamilmielnik commented 1 year ago

I think it will be easier if your code is merged before I start https://github.com/kamilmielnik/scrabble-solver/issues/281 because I plan to do some refactoring that will create conflicts with your code.

Not that many conflicts though. I'll proceed with it.

kamilmielnik commented 1 year ago

@jmontane FYI I've simplified adding languages a bit and wrote down a checklist for it: https://github.com/kamilmielnik/scrabble-solver#add-a-new-language. I hope the conflicts will not be that difficult to fix. I can handle them if they turn out to be too much of a trouble.

Would you mind submitting your PR? (even with conflicts) From what I see it's pretty much done except some of the issues that are already reported separately in GitHub.