local component = require("component") local sides = require("sides") local os = require("os") local function main() local dist_sets = {} local input_cands = { sides.east, sides.west } local output_cands = { sides.north, sides.south, sides.up } for addr, type in component.list() do if type == "transposer" then local tp = component.proxy(addr) local input = nil if tp.getInventorySize(input_cands[1]) ~= nil then input = input_cands[1] else input = input_cands[2] local valid_sides = {} for _, cand in pairs(output_cands) do if tp.getInventorySize(cand) ~= nil then table.insert(valid_sides, cand) end end table.insert(dist_sets, { tp = tp, valid_sides = valid_sides }) end end while true do for _, dist_set in pairs(dist_sets) do for _, valid_out in pairs(dist_set.valid_sides) do while tp.getStackInSlot(dist_set.input, 1) == nil do os.sleep(0.1) end while tp.getStackInSlot(valid_out, 1) ~= nil do os.sleep(0.1) end for slot = 1, 2 do tp.transferItem(dist_set.input, dist_set.valid_out, 1, slot, slot) end end end end end main()