コード例 #1
0
def count_health_in_node_value(valueItems, firstIndex, lastIndex):
    startIndexForCount = binary_search(
        valueItems, lambda value, i: is_insert_index(DataItem(firstIndex, 0),
                                                     valueItems, i))

    endIndexForCount = binary_search(
        valueItems, lambda value, i: is_insert_index(
            DataItem(lastIndex, 0), valueItems, i, insert_after=True)) - 1

    if startIndexForCount == -1 or endIndexForCount == -1:
        return 0

    value_to_substract = 0 if startIndexForCount == 0 else valueItems[
        startIndexForCount - 1].sum

    total_sum = valueItems[-1].sum if endIndexForCount == - \
        2 else valueItems[endIndexForCount].sum

    return total_sum - value_to_substract
コード例 #2
0
def add_health_to_gene_trie(gene_trie, health, index):
    if gene_trie.value == None:
        gene_trie.value = [DataItem(index, health)]
        return

    items = gene_trie.value
    insert_index = binary_search(
        items, lambda value, i: is_insert_index(DataItem(index, 0), items, i))

    insert_item = None
    if insert_index == -1:
        insert_item = DataItem(index, health + items[-1].sum)
        items.append(insert_item)
        return

    previous_sum = 0 if insert_index == 0 else items[insert_index - 1].sum
    insert_item = DataItem(index, health + previous_sum)
    items.insert(insert_index, insert_item)
    for i in range(insert_index + 1, len(items)):
        items[i].sum += health
コード例 #3
0
def test_should_return_minus_one_when_no_found():
    assert binary_search(fakeSmall, lambda a, _: 6 - a) == -1
コード例 #4
0
def test_inserting_strict_index_and_insert_at_start():
    assert binary_search(
        fakeSmallOdd, lambda item, index: is_insert_index(
            1, fakeSmallOdd, index, insert_after=True)) == 1
コード例 #5
0
def test_find_best_index_to_insert_insert_at_start_with_equal_and_four_items():
    assert binary_search(
        fakeSmall,
        lambda item, index: is_insert_index(1, fakeSmall, index)) == 0
コード例 #6
0
def test_find_best_index_to_insert_at_the_end_should_be_minus_one():
    assert binary_search(
        fakeTwo, lambda item, index: is_insert_index(20, fakeTwo, index)) == -1
コード例 #7
0
def test_find_best_index_to_insert_should_be_0():
    assert binary_search(
        fakeTwo, lambda item, index: is_insert_index(3, fakeTwo, index)) == 0
コード例 #8
0
def test_find_best_index_to_insert():
    assert binary_search(
        fakeTwo, lambda item, index: is_insert_index(7, fakeTwo, index)) == 1
コード例 #9
0
def test_should_return_empty():
    assert binary_search([], lambda a, _: 11 - a) == -1
コード例 #10
0
def test_when_only_one_should_return_minus_one_up():
    assert binary_search(fakeOne, lambda a, _: 12 - a) == -1
コード例 #11
0
def test_when_only_one_should_return_0():
    assert binary_search(fakeOne, lambda a, _: 11 - a) == 0
コード例 #12
0
def test_should_return_item_11():
    assert binary_search(fakeTwo, lambda a, _: 11 - a) == 1
コード例 #13
0
def test_should_return_the_of_item_in_the_middle():
    assert binary_search(fakeSmallOdd, lambda a, _: 5 - a) == 1
コード例 #14
0
def test_should_return_the_index_of_the_found_item():
    assert binary_search(fakeSmall, lambda a, _: 11 - a) == 2
コード例 #15
0
def test_should_no_found_lower():
    assert binary_search(fakeSmall, lambda a, _: 0 - a) == -1