Draft: The Workbench
This is a draft, not a proposal. I solicit comments.
The Workbench is a 10x10 grid of 100 positions, numbered consecutively from 1 to 100. Position #1 is in the lower left hand corner and the positions are numbered in increasing order from left to right and from the lowest row of the grid to the highest row, with the upper right hand corner of the grid being Position # 100.
Positions are considered “adjacent” if their positions in the Workbench grid are adjacent. For example, position #12 is adjacent to positions #2, 11, 13 and 22, but not adjacent to any other positions. By way of further example, position 10 (being in the lower right hand corner of the grid) is not adjacent to position #1 or #11, but is adjacent to #9 and #20.
Each Part on the Machine is assigned to exactly one position on the Workbench. Unless a rule provides otherwise, a new Part on the Machine is assigned to the position with a number one more than the highest numbered position that then contains a Part (even if a lowered number position is then vacant). For example, if there are Parts at positions 1, 2, 3 and 5, then the next Part will be placed at position 6.
If a position becomes vacant and there is a Part in the position above it, then that Part moves to the vacant position. For example, if there are Parts at all positions 1 through 30, but position 4 becomes vacant, then the Part at position 14 slides down to position 4, then the Part at position 24 slides down to position 14, then the Part at position 24 slides down to position 14.
Hix:
Don’t overload “position”.
I would explicitly provide means for tracking Part locations.