Tested with macOS 15.6.1 (24G90), IntelliJ IDEA 2025.2.4 (Ultimate Edition), Haskell LSP 1.4.4.
- Install GHCup with
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh. - Run
ghcup tui, then install and set the recommended HLS. You should see two check marks next to HLS. - Also install and set GHC 9.8.4. You can choose a different version, but it must be supported by the currently set HLS (marked as
hls-powered). There should be also a snapshot with this version in https://www.stackage.org/snapshots. - Run
stack new haskell-sandbox, thencd haskell-sandbox. - In
stack.yaml, set theresolverto the snapshot version that matches the GHC version you've installed with GHCup. For example, for GHC 9.8.4, you can use this snapshot:resolver: lts-23.27. - Run
stack clean. - Run
stack build. - Open the
haskell-sandboxfolder in IntelliJ IDEA, the plugin should work now.
stack build --exec blockhead-game-exestack teststack ghci --ghci-options src/Lib.hsType :quit to exit once done.
docker build --build-arg BASE_IMAGE=haskell:latest -t yaskovdev/blockhead-game .
docker run -p 8080:8080 -d yaskovdev/blockhead-gamebrew update && brew install azure-cli # if not yet done
az login
az acr login --name blockheadgame
docker tag yaskovdev/blockhead-game blockheadgame.azurecr.io/yaskovdev/blockhead-game:latest
docker push blockheadgame.azurecr.io/yaskovdev/blockhead-game:latest- Create a resource group.
- Create a Container Registry.
- Point to the new Container Registry (in https://portal.azure.com/#@yaskov.dev/resource/subscriptions/cb4b7f6f-9e0d-476e-be06-3e896c50b25a/resourceGroups/BlockheadGameRg/providers/Microsoft.Web/sites/blockhead-game-back-end/vstscd).
- https://portal.azure.com/#@yaskov.dev/resource/subscriptions/cb4b7f6f-9e0d-476e-be06-3e896c50b25a/resourceGroups/blockheadgamerg/providers/Microsoft.Web/sites/blockhead-game-back-end/configuration, based on https://stackoverflow.com/a/77813711/1862286.
curl -v http://localhost:8080/api/field/5[
".....",
".....",
"БАЛДА",
".....",
"....."
]curl -v -d '{ "field": [ ".....", ".....", "БАЛДА", ".....", "....." ], "usedWords": [ "БАЛДА" ],"difficulty":"Medium" }' http://localhost:8080/api/move-requests{
"cell": [
3,
1
],
"letter": "Ф",
"path": [
[
3,
1
],
[
2,
1
],
[
2,
2
],
[
2,
3
],
[
2,
4
]
],
"success": true,
"updatedField": [
".....",
".....",
"БАЛДА",
".Ф...",
"....."
],
"word": "ФАЛДА"
}For DFS testing. It is possible to find word "ПЛАКАТИСТ" which consists of 9 letters if difficulty is set to Hard.
curl -v -d '{"field":[".....","АЛП..","КИСТЬ",".ТКАЖ","....."],"usedWords":["КИСТЬ","","КИСТА","","КИСКА","","ТАКТИК","","ТАКТИКА","","КАЛИТКА","","ЛИСТАЖ","","ПЛИТКА",""],"difficulty":"Hard"}' http://localhost:8080/api/move-requestsThere are empty cells but computer cannot find any word.
curl -v -d '{"field":["ЬТЗСР","ЭСАПО","ГОГОТ","ТФАРТ",".ЬРТЫ"],"usedWords":["ГОГОТ","ТОГА","ФАГОТ","АГОГЭ","СОФА","САГА","САПОГ","ТОПАЗ","ЗАПОР","ЗАГАР","СПОРА","СПОРТ","ПОРТЫ","РОПОТ","РОПОТ","ТРОПА","ГАРЬ","ГОСТ","ПАСТЬ","РАФТ"],"difficulty":"Medium"}' http://localhost:8080/api/move-requests There are empty cells but computer cannot find any word, another example.
curl -v -d '{"field":["ТЬ.ЬН","ОНВДА","ЗАВОЗ","АГАЙЮ","ВАНСО"],"usedWords":["ЗАВОЗ","НАВОЗ","ЗАВОД","ЗАВОДЬ","ВДОВА","ДОЗА","НАВОЙ","НАДОЙ","ЗОНА","АЗОТ","ГАЗОН","ВАЗА","НАВАГА","ВАЗОН","ГАВАНЬ","НАГАН","АГАВА","АВАНС","ЮЗ","СОЮЗ"],"difficulty":"Medium"}' http://localhost:8080/api/move-requestsThere are no empty cells.
curl -v -d '{ "field": [ "ТОНЯЯ", "ЕГТЫН", "БАЛДА", "ЕФЛАХ", "ДОПТА" ], "usedWords": [ "БАЛДА", "ФАЛДА", "БАЛЛ", "БАЛТ", "ГАЛЛ", "БЕГА", "БАЛЛАДА", "БАГЕТ", "АЛЛАХ", "НАХАЛ", "АЛТЫН", "ФАГОТ", "БЕТОН", "ПЛАХА", "ПТАХА", "ПЛАТА", "ОПЛАТА", "ДОПЛАТА", "ДЕБЕТ", "ТОНЯ", "ДЫНЯ" ],"difficulty":"Medium" }' http://localhost:8080/api/move-requests