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()