Package: qrs
qrstool forQuarrel(and other word games)SummaryProvides word game-related tools that can be configured with custom settings, letter scores, and wordlists.Works on Python 3.6 and above. Tested on Windows 10.ContentsSummaryContentsThe qrs libraryDirect executionExample caseSettingsThe qrs libraryInstall the qrs library to use its functionality in your projects.python-mpipinstall--upgradeqrs>>>fromqrsimportbuild_settings,Ruleset>>>q=Ruleset(...build_settings(...{'max':8}...)...)>>>print(...q.solve_str('wetodlnm')...)---query:delmnotw(8letters)---8letters-18pointsMELTDOWN5letters-14pointsMOWED4letters-12pointsMEWL3letters-10pointsMEW,MOW,WEM2letters-6pointsEW,OW,WE,WO>>>_Direct execution$qrs

qrs:_Upon being called from the command line, it will display an input screen.Type your letters into the field, press Enter, and wait for the program to calculate the best words. Once done, choose one from the list that corresponds with the number of letters you have available or the next lowest. See the example below to find out why you might not need to use all of your spaces.Example caseHere's an example using the default program settings. Our situation is the following:We're playingQuarrel, and thus, we get eight letters.Our letters arewetodlnm.We have seven spaces to use.After installing the library, we'll open a command line and run the program.Since we know we don't need words longer than eight letters, we can minimise loading time by configuring the program to only calculate for words of that length. We can do this by passing our desired settings as command arguments:$qrs--max8qrs:_Note: this has the same effect as creating aqrs.jsonfile, then running the command from the same directory:// qrs.json
{"max": 8}## from folder with qrs.json$qrsThe program will have to load a wordlist whichever way it is run. Once it finishes loading, we can input our letters and press Enter.qrs:wetodlnm---query:delmnotw(8letters)---8letters-18pointsMELTDOWN5letters-14pointsMOWED4letters-12pointsMEWL3letters-10pointsMEW,MOW2letters-6pointsOW,WE,WOqrs:_This output tells us that the anagram isMELTDOWN, but we can't make that word because we can only use seven letters. In this case, our best word isMOWED(14 points). Based on this output, we also know that our opponent cannot score higher than us without all eight spaces.Note: a word likeLETDOWNscores the same number of points asMOWED, but isn't recognised as a "best word" in this case. This is because when words are tied for points, the program will choose the word/s with the fewest letters.The fewer letters your word has, the faster you can write it into your game. This is especially important inQuarrel, as the tiebreaker for equal points is input speed.SettingsUpon being run from the command line, the program will automatically generate (or look for) aqrs.jsonfile in the directory from which the command is run. This file contains the program's settings, which can be changed to suit your needs.When using qrs as a library, you should pass adictwith any of the following keys intobuild_settingsto generate a full settings object, then pass the output to aRulesetto create a new instance. Here are all the currently supported settings:SettingDefaultDescriptiondebugfalseShows the program's inner workings whilst calculating. Note that this may negatively affect performance on certain devices or IDEs.exclude[]List of words that the program will never output.game"quarrel"Determines the letter scoring system used for calculating points. The value here is passed intobuild_letter_scores(), and defaults back if invalid.include[]List of additional words for the wordlist.lowerfalseDisplays output in lowercase letters. The default setting displays capital letters to mimic the style of word games likeScrabbleandQuarrel, however some people may find lowercase output more readable.maxlongest length in wordlistDetermines the maximum word length the program will calculate for.min2Determines the minimum word length the program will calculate for.noscoresfalseDetermines whether point values for words are considered, in which case only the highest-scoring words are displayed. If you don't care about scoring, turn this on to see all words.repeatsfalseDetermines whether letters can be used more than once. Change this according to your word game's rules; for example,Scrabbletiles can only be used once in a single word, whereasNew York Times'sSpelling Beeallows the reuse of letters.When running directly:To change your settings, do one of the following:Openqrs.jsonin a text editor and change any values. Make sure to save the file once you're done.Pass the setting as a command argument like this:--setting valueIf applicable, this will automatically update the settings file.$qrs--lower--max8--debug# debug info displayed hereqrs:_Ifqrs.jsonis not in your folder, try running the program and letting it fully load. It should then create the file.After savingqrs.json, the program will not change if it's already running. Close the program and rerun it to use the changed settings.