mdpg4 / test_processAlgo.py
Mahiruoshi's picture
Init
689227c verified
def map_commands_to_paths(data):
transformed_commands = data["commands"]
paths = data["path"]
mapped_commands = []
# Initialize variables
non_snap_path_index = 0 # Tracks which path we're on
segment_start = True # Flag to indicate if we are at the start of a new segment
for command in transformed_commands:
if command in ["FW003", "FW002", "BW002"]:
# At the start of a segment that requires a path
if segment_start and non_snap_path_index < len(paths):
mapped_commands.append((command, [paths[non_snap_path_index]]))
non_snap_path_index += 1
else:
mapped_commands.append((command, None))
segment_start = False # Not at the start anymore
elif command in ["FL090", "FR090", "BL090", "BR090"]:
# These commands are continuation of a segment, no path assigned
mapped_commands.append((command, None))
segment_start = False # Still not the start of a new segment
elif command.startswith("SNAP") or command == "FIN":
# SNAP and FIN are treated as their own segments but don't have paths
mapped_commands.append((command, None))
segment_start = True # Next command could be the start of a new segment
else:
# For any command not explicitly handled above, assign the next path if available
if non_snap_path_index < len(paths):
mapped_commands.append((command, [paths[non_snap_path_index]]))
non_snap_path_index += 1
else:
mapped_commands.append((command, []))
segment_start = True # Next command could be the start of a new segment
return mapped_commands
if __name__ == "__main__":
# Provided input data
data = {
"commands": [
"FW090",
"FW003",
"BR090",
"BW002",
"BW020",
"FW003",
"BR090",
"BW002",
"SNAP6_C",
"BW040",
"FW003",
"BL090",
"BW002",
"FW050",
"SNAP1_C",
"BW090",
"FW003",
"BL090",
"BW002",
"FW010",
"SNAP4_C",
"BW020",
"FW003",
"BL090",
"BW002",
"SNAP5_C",
"BW070",
"FW003",
"BR090",
"BW002",
"SNAP2_C",
"BW040",
"FW003",
"BL090",
"BW002",
"FW090",
"FW010",
"FW003",
"FL090",
"FW090",
"FW030",
"FW003",
"BR090",
"BW002",
"FW020",
"SNAP3_C",
"FIN"
],
"distance": 184.0,
"path": [
{
"d": 0,
"s": -1,
"x": 1,
"y": 1
},
{
"d": 0,
"s": -1,
"x": 1,
"y": 10
},
{
"d": 6,
"s": -1,
"x": 3,
"y": 7
},
{
"d": 6,
"s": -1,
"x": 5,
"y": 7
},
{
"d": 4,
"s": 6,
"x": 8,
"y": 9
},
{
"d": 4,
"s": -1,
"x": 8,
"y": 13
},
{
"d": 6,
"s": -1,
"x": 10,
"y": 16
},
{
"d": 6,
"s": 1,
"x": 5,
"y": 16
},
{
"d": 6,
"s": -1,
"x": 14,
"y": 16
},
{
"d": 0,
"s": -1,
"x": 17,
"y": 14
},
{
"d": 0,
"s": 4,
"x": 17,
"y": 15
},
{
"d": 0,
"s": -1,
"x": 17,
"y": 13
},
{
"d": 2,
"s": 5,
"x": 15,
"y": 10
},
{
"d": 2,
"s": -1,
"x": 8,
"y": 10
},
{
"d": 0,
"s": 2,
"x": 5,
"y": 8
},
{
"d": 0,
"s": -1,
"x": 5,
"y": 4
},
{
"d": 2,
"s": -1,
"x": 3,
"y": 1
},
{
"d": 2,
"s": -1,
"x": 12,
"y": 1
},
{
"d": 2,
"s": 6,
"x": 13,
"y": 1
},
{
"d": 0,
"s": -1,
"x": 15,
"y": 4
},
{
"d": 0,
"s": -1,
"x": 15,
"y": 13
},
{
"d": 0,
"s": -1,
"x": 15,
"y": 16
},
{
"d": 6,
"s": -1,
"x": 17,
"y": 13
},
{
"d": 6,
"s": 3,
"x": 15,
"y": 13
}
]
}
# Correct function call
command_path_mapping = map_commands_to_paths(data)
# Output the mapping for review
for mapping in command_path_mapping:
print(mapping)