## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize the score in a math contest by answering algebra and calculus questions. The contest has the following constraints:

- Each algebra question is worth 1 point.
- Each calculus question is worth 3 points.
- The maximum number of questions that can be answered is 25.
- At least 10 algebra questions must be answered.
- At least 6 calculus questions must be answered.
- No more than 15 questions of either type can be answered.

## Symbolic Representation

Let's denote:
- \(A\) as the number of algebra questions answered.
- \(C\) as the number of calculus questions answered.

The objective function to maximize the score is:
\[ \text{Maximize:} \quad A + 3C \]

Subject to the constraints:
1. \( A + C \leq 25 \) (at most 25 questions in total)
2. \( A \geq 10 \) (at least 10 algebra questions)
3. \( C \geq 6 \) (at least 6 calculus questions)
4. \( A \leq 15 \) (no more than 15 algebra questions)
5. \( C \leq 15 \) (no more than 15 calculus questions)
6. \( A, C \geq 0 \) and are integers (non-negativity and integrality constraints)

## Gurobi Code

```python
import gurobi

def solve_contest_problem():
    # Create a new model
    model = gurobi.Model()

    # Define variables
    A = model.addVar(lb=0, ub=15, vtype=gurobi.GRB.INTEGER, name="Algebra")
    C = model.addVar(lb=0, ub=15, vtype=gurobi.GRB.INTEGER, name="Calculus")

    # Objective function: Maximize A + 3C
    model.setObjective(A + 3*C, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(A + C <= 25, name="Total_Questions")
    model.addConstr(A >= 10, name="Min_Algebra")
    model.addConstr(C >= 6, name="Min_Calculus")
    model.addConstr(A <= 15, name="Max_Algebra")
    model.addConstr(C <= 15, name="Max_Calculus")

    # Update model
    model.update()

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal Solution: Algebra = {A.varValue}, Calculus = {C.varValue}")
        print(f"Maximum Score: {model.objVal}")
    else:
        print("The model is infeasible")

solve_contest_problem()
```