Hilfe bei Python Programm

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
__blackjack__
User
Beiträge: 14069
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Das Ergebnis hatte ich doch auch für das Beispiel.

Hier ist mein Python-Programm ohne externe Abhängigkeiten und ohne die Optimierung aus dem BASIC-Programm:

Code: Alles auswählen

#!/usr/bin/env python3


def get_date_count(preference_table):
    return len(preference_table[0]) if preference_table else 0


def parse_lines(lines):
    rows = (list(map(int, line.split())) for line in lines)

    (member_count, date_count), *preference_table = rows

    if len(preference_table) != member_count or not all(
        len(row) == date_count for row in preference_table
    ):
        raise ValueError("mismatch between counts and table size")

    return preference_table


def has_swap(ratings, date_index):
    current_rating = ratings[date_index]
    return any(rating < current_rating for rating in ratings)


def calculate_swap_count(preference_table, date_index):
    return sum(has_swap(ratings, date_index) for ratings in preference_table)


def calculate_swap_counts(preference_table):
    return [
        calculate_swap_count(preference_table, date_index)
        for date_index in range(get_date_count(preference_table))
    ]


def get_result(swap_counts):
    return min(
        (swap_count, date_number)
        for date_number, swap_count in enumerate(swap_counts, 1)
    )


def main():
    for i in range(6):
        with open(f"praeferenzen{i}.txt", encoding="ascii") as lines:
            preference_table = parse_lines(lines)

        swap_counts = calculate_swap_counts(preference_table)
        swap_count, date_number = get_result(swap_counts)
        print(
            f"{i}: An Termin Nr. {date_number}"
            f" war{'' if swap_count == 1 else 'en'} {swap_count} Wechsel"
            f" notwendig."
        )


if __name__ == "__main__":
    main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten