diff --git a/inventory/routes/index.py b/inventory/routes/index.py index e7d6a3e..58ed4ce 100644 --- a/inventory/routes/index.py +++ b/inventory/routes/index.py @@ -8,10 +8,32 @@ from .. import db from ..models import WorkLog, Inventory from ..utils.load import eager_load_worklog_relationships, eager_load_inventory_relationships +def generate_solvable_matrix(level, seed_clicks=None): + size = level + 3 + matrix = [[True for _ in range(size)] for _ in range(size)] + + def toggle(x, y): + for dx in [-1, 0, 1]: + for dy in [-1, 0, 1]: + nx, ny = x + dx, y + dy + if 0 <= nx < size and 0 <= ny < size: + matrix[nx][ny] = not matrix[nx][ny] + + # Pick a number of random "clicks" + num_clicks = seed_clicks if seed_clicks is not None else random.randint(size, size * 2) + + for _ in range(num_clicks): + x = random.randint(0, size - 1) + y = random.randint(0, size - 1) + toggle(x, y) + + return matrix + + @main.route("/12648243") def coffee(): level = request.args.get('level', 0, int) - matrix = [[random.choice([True, False]) for _ in range(level + 3)] for _ in range(level + 3)] + matrix = generate_solvable_matrix(level) return render_template("coffee.html", matrix=matrix, level=level) @main.route("/")