def j_for_one(x, y, d, matrix=readFile.getArray()):
    d += 1
    n = len(matrix[0])  # szerokosc x
    m = len(matrix)  # szerokosc y

    blocked_ranges = []
    if_forbidden = False

    if matrix[y][x] == 1 or matrix[y][x] == 2:
        if_forbidden = True

    for i in range(d):

        if y-i < 0 or y-i >= m:
            break
        for ii in range(2*i + 1):
            if 0 <= x-i+ii < n and matrix[y - i][x - i + ii] == 0:
                if not if_in_ranges(blocked_ranges, get_coords(2*i + 1, ii)):
                    matrix[y-i][x-i+ii] = 4
                else:
                    matrix[y - i][x - i + ii] = 0

            elif 0 <= x-i+ii < n and matrix[y - i][x - i + ii] == 1:
                blocked_ranges = add_range(blocked_ranges, get_coords((2*i + 1), ii))

    return matrix, if_forbidden
def J_return_forbidden(x, y, alpha, dep):
    table = readFile.getArray()
    no_0 = seen_counter_for_0(table)

    n = dekoder.n()  # szerokosc x
    m = dekoder.m()  # szerokosc y
    is_forbidden = False

    for k in range(len(x)):

        # print(alpha[k])
        # print(m)

        table = angel_change(alpha[k], table)
        temp_x = x[k]
        x[k] = change_x(alpha[k], x[k], y[k], n, m)
        y[k] = change_y(alpha[k], temp_x, y[k], n, m)

        # print(x[k])
        # print(y[k])

        temp = j_for_one(x[k], y[k], dep, table)
        table = temp[0]
        if temp[1]:
            is_forbidden = True
        table = angel_change_back(alpha[k], table)
        # print_matrix(table)

    if is_forbidden:
        return None
    else:
        return round((seen_counter(table) / no_0), 4)
示例#3
0
    def test10(self):
        matrix = readFile.getArray(
            os.path.dirname(os.path.abspath(__file__)) + '/arrays/data10.txt')
        result = adaptationFunction.Jx(matrix, [2, 6, 2], [7, 6, 7], [0, 0, 0],
                                       3)

        self.assertEqual(result, 0.3086, 'should fill up array correctly')
示例#4
0
    def test1(self):
        matrix = readFile.getArray(
            os.path.dirname(os.path.abspath(__file__)) + '/arrays/data.txt')
        result = adaptationFunction.J(matrix, [3, 3, 3], [4, 4, 4], [0, 0, 0],
                                      3)

        self.assertEqual(result, 0.1975, 'should fill up array correctly')
示例#5
0
def min_value(d):
    max_area_per_sensor = 0
    for i in range(d + 1):
        max_area_per_sensor += 2 * i + 1
    table = readFile.getArray()
    n = len(table[0])
    m = len(table)
    area = 0.9 * m * n
    return math.floor(area / max_area_per_sensor)
def n():
    table = readFile.getArray()
    return len(table[0])
def m():
    table = readFile.getArray()
    return len(table)
示例#8
0
def max_value():
    table = readFile.getArray()
    return afunction.seen_counter_for_0(table)
示例#9
0
    def test8(self):
        matrix = readFile.getArray(
            os.path.dirname(os.path.abspath(__file__)) + '/arrays/data7.txt')
        result = adaptationFunction.J(matrix, [0], [10], [0], 100)

        self.assertEqual(result, 0.7, 'should fill up array correctly')