Skip to content

D - Reto para el 28 de mayo 2024 #7

@delimitry

Description

@delimitry
from typing import Sequence


def calcular_entropia(seq_a: Sequence, seq_b: Sequence) -> float:
    """Calcular la entropia entre dos listas, o sea, lo desordenada que esté una lista de números.

    :param Sequence seq_a: Secuencia a.
    :param Sequence seq_b: Secuencia b.

    :return: El valor de la entropía (en un rango entre 0.0 y 1.0).
    :rtype: float
    """
    len_a = len(seq_a)
    len_b = len(seq_b)
    assert len_a == len_b, 'La longitud de dos listas debe ser igual'
    assert len_a, 'La lista no debe estar vacía'
    diff = 0
    for (x, y) in zip(seq_a, seq_b):
        if x != y:
            diff += 1
    return diff / len_a


assert calcular_entropia([1], [1]) == 0.0
assert calcular_entropia([1, 2, 1, 1, 1], [2, 2, 2, 2, 2]) == 0.8
assert calcular_entropia([1, 1, 1], [2, 2, 2]) == 1.0
assert calcular_entropia([1, 2, 3], [4, 5, 6]) == 1.0
assert calcular_entropia([1, 2, 3], [1, 2, 3]) == 0.0
assert calcular_entropia([1, 1, 8, 8], [1, 1, 1, 1]) == 0.5

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions