예제 #1
0
파일: plan.go 프로젝트: umisama/procon26
func (plan *Plan) canPutStone(x, y int, stone *materials.Stone) bool {
	for stoneX := 0; stoneX < stone.Width(); stoneX++ {
		for stoneY := 0; stoneY < stone.Height(); stoneY++ {
			if !stone.Get(stoneX, stoneY) {
				continue
			}
			if plan.Get(x+stoneX, y+stoneY) {
				return false
			}
		}
	}
	return true
}
예제 #2
0
파일: plan.go 프로젝트: umisama/procon26
func (plan *Plan) isExistRelatedStone(x, y int, stone *materials.Stone) bool {
	for stoneX := 0; stoneX < stone.Width(); stoneX++ {
		for stoneY := 0; stoneY < stone.Height(); stoneY++ {
			if !stone.Get(stoneX, stoneY) {
				continue
			}
			if plan.GetStoneDot(stoneX+x-1, stoneY+y) ||
				plan.GetStoneDot(stoneX+x, stoneY+y-1) ||
				plan.GetStoneDot(stoneX+x+1, stoneY+y) ||
				plan.GetStoneDot(stoneX+x, stoneY+y+1) {
				return true
			}
		}
	}
	return false
}