12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import utils.conf
- import utils.getarray
- # 判断能否摆下组件的贴墙边
- from utils import getarray
- # 判断当前边能否放下指定模块
- def canMatch(wallLength, moduleLengths):
- moduleTotalLength = 0;
- for item in moduleLengths:
- moduleTotalLength = moduleTotalLength + item
- return (moduleTotalLength <= wallLength)
- # matchResult = canMatch(3,(1,1,2))
- # print(matchResult)
- # 获取当前位置的所有摆法
- def matchWalls(roomLengths, moduleLengths):
- m = len(roomLengths)
- n = len(moduleLengths)
- a = getarray.getAllPosition(m, n)
- canMatchTop = canMatch(roomLengths[2], moduleLengths)
- if(canMatchTop):
- print("begin to calc top")
- matchTopWall(roomLengths[2],moduleLengths)
- else:
- for item in a:
- matchWall(roomLengths,moduleLengths,a[item])
- # 获取单边墙的模块摆放顺序
- def changeModuleIndex(wallModules, param):
- newIndexModules = []
- print("before changeModuleIndex:",wallModules)
- for index in range(len(param)):
- newIndexModules.append(wallModules[param[index]-1])
- print("after changeModuleIndex:",newIndexModules)
- # 摆放带顺序的单边墙
- def matchSingleWallWithIndex(wallLength, wallModules):
- for item in wallModules:
- pass
- # 摆放单边墙
- def matchSingleWall(wallLength, wallModules,wallIndex):
- print("wallLength",wallLength)
- print("wallModules",wallModules)
- print("wallIndex",wallIndex)
- if(canMatch(wallLength,wallModules)):
- a = getarray.jiechenarray(len(wallModules))
- for item in a:
- changeModuleIndex(wallModules,a[item])
- matchSingleWallWithIndex(wallLength, wallModules)
- else:
- print("this array not match")
- # 摆放所有墙
- def matchWall(roomLengths, moduleLengths, positions):
- m = len(roomLengths)
- n = len(moduleLengths)
- a = getarray.getitemIndexAndPositionArray(positions,m,n)
- for item in a:
- if(a[item][0] == 1):
- position = a[item][1][0]
- wallModules = {};
- wallModules[0] = moduleLengths[position]
- matchSingleWall(roomLengths[position],wallModules,position)
- if(a[item][0] > 1):
- wallModules = {};
- for modulePosition in a[item][1]:
- moduleIndex = a[item][1][modulePosition]
- wallModules[modulePosition] = moduleLengths[moduleIndex]
- matchSingleWall(roomLengths[item],wallModules,a[item][1][0])
- pass
- #一字摆法
- def matchTopWall(roomLengths,moduleLengths):
- matchSingleWall(roomLengths, moduleLengths, "012")
- matchWalls([1,2,3,4],[1,2,1])
- # changeModuleIndex([100,200,313],[2,1,3])
|