Something like h-index?
This commit is contained in:
parent
2f3ce704b2
commit
d9393152c5
@ -381,3 +381,39 @@ def collect_min_jumps_from_board(board: list[int]) -> list[int]:
|
|||||||
range_end = range_begin + val + 1
|
range_end = range_begin + val + 1
|
||||||
|
|
||||||
return jumps + [len(board) - 1]
|
return jumps + [len(board) - 1]
|
||||||
|
|
||||||
|
|
||||||
|
def collect_scored_citations(citations: list[int]) -> list[int]:
|
||||||
|
return [
|
||||||
|
i for i, v in enumerate(list(sorted(citations, reverse=True))) if v >= (i + 1)
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def collect_h_index_qualified_citations(citations: list[int]) -> set[int]:
|
||||||
|
census: dict[int, int] = collect_h_index_census_from_citations(citations)
|
||||||
|
return {k for k, v in census.items() if v >= k}
|
||||||
|
|
||||||
|
|
||||||
|
def collect_h_index_census_from_citations(citations: list[int]) -> dict[int, int]:
|
||||||
|
census: dict[int, int] = {}
|
||||||
|
|
||||||
|
for n in set(citations):
|
||||||
|
census.setdefault(n, 0)
|
||||||
|
|
||||||
|
for paper in citations:
|
||||||
|
if paper >= n:
|
||||||
|
census[n] += 1
|
||||||
|
|
||||||
|
return census
|
||||||
|
|
||||||
|
|
||||||
|
def h_index(citations: list[int]) -> int:
|
||||||
|
last_qualified = None
|
||||||
|
|
||||||
|
for i, citation in enumerate(list(sorted(citations, reverse=True))):
|
||||||
|
if citation >= i + 1:
|
||||||
|
last_qualified = i + 1
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
|
return last_qualified or 0
|
||||||
|
@ -310,3 +310,24 @@ def test_collect_complete_jump_paths_from_board(
|
|||||||
)
|
)
|
||||||
def test_count_min_jumps_from_board(board: list[int], expected: int):
|
def test_count_min_jumps_from_board(board: list[int], expected: int):
|
||||||
assert stuff.count_min_jumps_from_board(board) == expected
|
assert stuff.count_min_jumps_from_board(board) == expected
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
("citations", "expected"),
|
||||||
|
[
|
||||||
|
(
|
||||||
|
[3, 0, 6, 1, 5],
|
||||||
|
3,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
[1, 3, 1],
|
||||||
|
1,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
[100],
|
||||||
|
1,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def test_h_index(citations: list[int], expected: int):
|
||||||
|
assert stuff.h_index(citations) == expected
|
||||||
|
Loading…
Reference in New Issue
Block a user