Add best score calculation to coffee route and template

This commit is contained in:
Yaro Kasear 2025-08-18 09:06:39 -05:00
parent 247b167377
commit 6b4f61879b
3 changed files with 17 additions and 4 deletions

View file

@ -34,7 +34,8 @@ def generate_solvable_matrix(level, seed_clicks=None):
def coffee():
level = request.args.get('level', 0, int)
matrix, clicked = generate_solvable_matrix(level)
return render_template("coffee.html", matrix=matrix, level=level, clicked=clicked)
best_score = len([x for x in clicked if not (len(clicked) % 2)])
return render_template("coffee.html", matrix=matrix, level=level, clicked=clicked, best_score=best_score)
@main.route("/playground")
def playground():

View file

@ -6,6 +6,10 @@
}
{% endblock %}
{% block precontent %}
<div id="best_score"></div>
{% endblock %}
{% block content %}
<div class="container border border-black bg-success-subtle">
{% for x in range(level + 3) %}
@ -27,14 +31,22 @@
var clickOrder = {};
var clickCounter = 0;
updateLights(); // fine, whatever that does
updateLights();
{{ clicked | tojson }}.forEach(([x, y]) => {
clickCounter++;
const key = `${x}-${y}`;
(clickOrder[key] ??= []).push(clickCounter); // initialize if missing, then push
(clickOrder[key] ??= []).push(clickCounter);
});
const bestScore = Object.values(clickOrder)
.reduce((n, arr) => n + (arr.length & 1), 0);
document.getElementById('best_score').textContent = `Best Score: ${bestScore}`;
console.log(clickOrder, bestScore);
Object.entries(clickOrder).forEach(([key, value]) => {
const light = document.querySelector(`#light-${key}`);
// light.innerHTML += value;

View file

@ -2,7 +2,7 @@ from flask import Blueprint, request, render_template, jsonify, abort
from sqlalchemy.engine import ScalarResult
from sqlalchemy.exc import IntegrityError
from sqlalchemy.sql import Select
from typing import Any, Optional, List, cast, Type, Iterable
from typing import Any, List, cast
from .defaults import (
default_query, default_create, default_update, default_delete, default_serialize