76 lines
1.6 KiB
Python
76 lines
1.6 KiB
Python
from flask import Blueprint, jsonify, render_template, request
|
|
from flask_login import login_required, current_user
|
|
import random
|
|
|
|
main_bp = Blueprint("main", __name__)
|
|
|
|
@main_bp.route("/")
|
|
def home():
|
|
return render_template("index.html")
|
|
|
|
@main_bp.route('/dashboard')
|
|
@login_required
|
|
def dashboard():
|
|
return render_template('dashboard.html', user=current_user)
|
|
|
|
@main_bp.route("/check", methods=["POST"])
|
|
def check():
|
|
data = request.json
|
|
board = data["board"]
|
|
row = data["row"]
|
|
col = data["col"]
|
|
|
|
for r in range(len(board)):
|
|
c = board[r]
|
|
|
|
if c == -1 or r == row:
|
|
continue
|
|
|
|
# gleiche Spalte
|
|
if c == col:
|
|
return jsonify({"valid": False})
|
|
|
|
# gleiche Diagonale
|
|
if abs(c - col) == abs(r - row):
|
|
return jsonify({"valid": False})
|
|
|
|
return jsonify({"valid": True})
|
|
|
|
|
|
@main_bp.route("/solve")
|
|
def solve():
|
|
n = 8
|
|
solutions = []
|
|
board = [-1] * n
|
|
|
|
def is_safe(row, col):
|
|
for r in range(row):
|
|
c = board[r]
|
|
if c == col or abs(c - col) == abs(r - row):
|
|
return False
|
|
return True
|
|
|
|
def backtrack(row):
|
|
if row == n:
|
|
solutions.append(board[:])
|
|
return
|
|
|
|
for col in range(n):
|
|
if is_safe(row, col):
|
|
board[row] = col
|
|
backtrack(row + 1)
|
|
board[row] = -1
|
|
|
|
backtrack(0)
|
|
return jsonify(solutions)
|
|
|
|
@main_bp.route("/solve_rooks")
|
|
def solve_rooks_route():
|
|
return jsonify(solve_rooks(8))
|
|
|
|
def solve_rooks(n=8):
|
|
solution = list(range(n))
|
|
random.shuffle(solution)
|
|
return solution
|
|
|