sliding-cubes-api / compaction.py
quynhanh2610's picture
Update compaction.py
3fba4a5 verified
Raw
History Blame Contribute Delete
1.01 kB
from validator import validate_input
from algorithm_2d_1 import compact_2d_1
from algorithm_3d_1 import compact_3d_exact
def compact(dimension, blocks, max_steps=500):
"""
Main controller function.
It validates input, then routes to 2D or 3D compaction.
"""
error = validate_input(
dimension=dimension,
blocks=blocks,
max_steps=max_steps
)
if error:
return error
if dimension == 2:
return compact_2d_1(
blocks=blocks,
max_steps=max_steps
)
if dimension == 3:
return compact_3d_exact(
blocks=blocks,
max_steps=max_steps
)
return {
"success": False,
"message": "Only dimension 2 and 3 are supported.",
"dimension": dimension,
"algorithm": None,
"initial": None,
"steps": [],
"final": None,
"total_steps": 0,
"status": "invalid_input",
"error_code": "INVALID_DIMENSION"
}