static applyMaskPenaltyRule3(matrix) {
			let numPenalties = 0;
			const array = matrix.getArray();
			const width = matrix.getWidth();
			const height = matrix.getHeight();
			for (let y = 0; y < height; y++) {
				for (let x = 0; x < width; x++) {
					const arrayY = array[y]; // We can at least optimize this access
					if (x + 6 < width &&
						arrayY[x] === 1 &&
						arrayY[x + 1] === 0 &&
						arrayY[x + 2] === 1 &&
						arrayY[x + 3] === 1 &&
						arrayY[x + 4] === 1 &&
						arrayY[x + 5] === 0 &&
						arrayY[x + 6] === 1 &&
						(MaskUtil.isWhiteHorizontal(arrayY, x - 4, x) || MaskUtil.isWhiteHorizontal(arrayY, x + 7, x + 11))) {
						numPenalties++;
					}
					if (y + 6 < height &&
						array[y][x] === 1 &&
						array[y + 1][x] === 0 &&
						array[y + 2][x] === 1 &&
						array[y + 3][x] === 1 &&
						array[y + 4][x] === 1 &&
						array[y + 5][x] === 0 &&
						array[y + 6][x] === 1 &&
						(MaskUtil.isWhiteVertical(array, x, y - 4, y) || MaskUtil.isWhiteVertical(array, x, y + 7, y + 11))) {
						numPenalties++;
					}
				}
			}
			return numPenalties * MaskUtil.N3;
		}
Apply mask penalty rule 3 and return the penalty. Find consecutive runs of 1:1:3:1:1:4
starting with black, or 4:1:1:3:1:1 starting with white, and give penalty to them.  If we
find patterns like 000010111010000, we give penalty once.