algorytm.org

Implementacja w Python



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Wyznaczanie dominanty – mody - Implementacja w Python
Ocena użytkownikóww: *****  / 0
SłabyŚwietny
Nadesłany przez Dariusz Rorat, 19 października 2014 20:53
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

dominanta.py:
#!/usr/bin/env python

# Python 2.6

# lub None jesli nie znaleziono
# Algorytm wyszukiwania dominanty dla 
# www.algorytm.org
# Autor: Dariusz Rorat

# pomocnicza funkcja indexof(a, A)
# zwraca index wystapienia a = A lub -1 jesli nie wystepuje

def indexof(a, A):
    for i in range(len(A)):
        if A[i] == a:
            return i
    return -1

# funkcja mode(A)
# zwraca: [dominanta, liczba_wystapien] jesli znaleziono

def mode(A):
    numbers = []
    occurrences = []

    for a in A:
        index = indexof(a, numbers)
        if index >= 0:
            occurrences[index] += 1
        else:
            numbers.append(a)
            occurrences.append(1)

    _mode = 0
    count = 0
    for i in range(len(occurrences)):
        if occurrences[i] > occurrences[_mode]:
            _mode = i
            count = 1
        elif occurrences[i] == occurrences[_mode]:
            count += 1

    if count == 1:
        return [numbers[_mode], occurrences[_mode]]
    else:
        return None


def main():
    #test dominanty dla zbioru w ktorym wystepuje
    A = [5, 7, 9, 5, 3, 7, 5, 3, 9, 5, 6, 8, 5]
    print A
    m = mode(A)
    if m != None:
        print "Dominanta: %d, wystapien: %d" % (m[0], m[1])
    else:
        print "Nie znaleziono dominanty"

    #test dominanty dla zbioru w ktorym nie wystepuje zadna dominanta
    B = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    print B
    m = mode(B)
    if m != None:
        print "Dominanta: %d, wystapien: %d" % (m[0], m[1])
    else:
        print "Nie znaleziono dominanty"

    #test dominanty dla zbioru pustego
    C = []
    print C
    m = mode(C)
    if m != None:
        print "Dominanta: %d, wystapien: %d" % (m[0], m[1])
    else:
        print "Nie znaleziono dominanty"


if __name__ == "__main__":
    main()
Dodaj komentarz