diff --git a/.vscode/settings.json b/.vscode/settings.json index 023a7ca..cc73bfb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -21,5 +21,6 @@ }, "[jsonc]": { "editor.defaultFormatter": "biomejs.biome" - } + }, + "biome.lspBin": "./node_modules/@biomejs/biome/bin/biome" } diff --git a/apps/web/src/routes/kripke/+page.svelte b/apps/web/src/routes/kripke/+page.svelte index fea63c1..6b98785 100644 --- a/apps/web/src/routes/kripke/+page.svelte +++ b/apps/web/src/routes/kripke/+page.svelte @@ -62,7 +62,7 @@ onMount(() => {
  • You can also play Random Challenge.
  • - + diff --git a/apps/web/src/routes/kripke/components/game.svelte b/apps/web/src/routes/kripke/components/game.svelte index 605dd92..7c8dd67 100644 --- a/apps/web/src/routes/kripke/components/game.svelte +++ b/apps/web/src/routes/kripke/components/game.svelte @@ -48,7 +48,9 @@ let formula: Formula | undefined = $state(undefined); let formulaStr = $derived( formula ? prettyPrint(formula, { symbols: latexSymbols }) : "", ); -let frame: Frame = $state(getFrame(0)); +let frame: Frame = $state( + getFrame(moves.findLast((move) => move.type === "guess")?.frameId ?? 0), +); let frameId = $derived(getId(frame)); let remainingRelations = $derived(relationSize - frame.relations.size); diff --git a/apps/web/src/routes/kripke/components/rules.svelte b/apps/web/src/routes/kripke/components/rules.svelte index 3f856d2..75580f8 100644 --- a/apps/web/src/routes/kripke/components/rules.svelte +++ b/apps/web/src/routes/kripke/components/rules.svelte @@ -2,8 +2,11 @@ import Katex from "$lib/components/katex.svelte"; import LuHeart from "lucide-svelte/icons/heart"; +let { relationSize }: { relationSize: number } = $props(); + const frame = "\\footnotesize \\mathcal{F} = \\left"; -const numberConstraint = "\\footnotesize |W| = 4"; +const worldConstraint = "\\footnotesize |W| = 4"; +const relationConstraint = `\\footnotesize |R| = ${relationSize}`; const f = "\\footnotesize \\mathcal{F}"; const validCount = "\\footnotesize \\mathrm{N}(\\varphi) = \\bigl| \\Set{ w \\in W | \\forall \\mathop{\\Vdash}\\, (w \\Vdash \\varphi) } \\bigr|"; @@ -12,11 +15,8 @@ const validCount =

    Rules

    • - A Kripke frame with 4 worlds is generated: - , where . -
    • -
    • - The game tells you how many accessibility relations are in the frame , but not the exact shape of it. + A Kripke frame with 4 worlds and {relationSize} relation(s) is generated: + , where and .
    • You have a total of 10 moves (). @@ -32,7 +32,7 @@ const validCount =
    • Guess the Kripke frame. - If your frame is equal or isomorphic to the secret frame , you win. + If your frame is equal or isomorphic to , you win.
    diff --git a/apps/web/src/routes/kripke/random/[seed]/+page.svelte b/apps/web/src/routes/kripke/random/[seed]/+page.svelte index fd9b305..f9a8db9 100644 --- a/apps/web/src/routes/kripke/random/[seed]/+page.svelte +++ b/apps/web/src/routes/kripke/random/[seed]/+page.svelte @@ -50,13 +50,13 @@ $effect(() => {

    Random Challenge!

      -
    • The answer of the game is determined by a seed number {@render seedNumber()}, which changes on every reload.
    • +
    • The answer of the game is determined by a seed number {@render seedNumber()}.
    • You can right-click on the seed number to obtain a permalink to this exact game.
    • Unlike Daily Challenge, the progress of the game does not persist.
    • You can also play Daily Challenge, if you have not yet.
    - +