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

