Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def first(): // deklaracja 1 fukncji (zad 4.1)
- res_array = [] // tablica do zapisania wyniku
- f = open('liczby.txt', 'r') // otworzenie pliku liczby.txt
- for x in f: // pentla for, wykonuje sie dla kazdej linijki z pliku
- h = int(x) // przypisanie pod h wartosci z 'x' i skonwertowanie do int
- while h % 3 == 0: // pentla while wykonuje sie dopoki reszta z dzielenia h/3 jest 0
- h = h / 3
- if h == 1: //warunek ktory sprawdza czy liczba jest potega liczby 3 po dzieleniu z resztą
- res_array.append(x) //dopisanie tej liczby
- f.close() // zamyka plik
- return res_array // zwraca tablice wynikow
- def second(): // deklaracja 2 fukncji (zad 4.2)
- res_array = []
- f = open('liczby.txt', 'r') // otworzenie pliku liczby.txt
- for x in f:
- res = 0
- for i in x:
- if not i == '\n':
- res = res + factorial(int(i)) // FUNKCJA FACTORIAL jest pozniej zaimplementowana i jest to silnia()
- if int(res) == int(x):
- res_array.append(x) // dopisuje do tablicy wynikow
- f.close() // zamyka plik
- return res_array // zwraca tablice wynikow
- def third(): // deklaracja 3 fukncji (zad 4.3)
- f = open('liczby.txt', 'r')
- biggest_counter = 0
- last_pos = 0
- loop_counter = 0
- actual_counter = 0
- gcd_memory = 0
- biggest_gcd = 0
- y = int(f.readline())
- for x in f:
- loop_counter += 1
- if gcd(x, y) == gcd_memory: // Funkcja GCD to NWD i jest zaimplementowana nizej w kodzie
- actual_counter += 1
- else:
- if actual_counter > biggest_counter:
- biggest_counter = actual_counter
- last_pos = loop_counter
- biggest_gcd = gcd_memory
- actual_counter = 0
- gcd_memory = gcd(x, y)
- y = x
- res_array = [last_pos + 1, biggest_counter, biggest_gcd] // zapis do tablicy wynikow
- f.close()
- return res_array
- def factorial(x): // Funkcja rekurencyjna Sinlii
- if x == 1:
- return x
- elif x > 1:
- return factorial(x - 1) * x
- else:
- return 0
- def gcd(x, y): // FUNKCJA NWD(X,Y)
- rest = int(x) % int(y)
- last_rest = rest
- while not rest == 0:
- x = y
- y = rest
- rest = int(x) % int(y)
- if not rest == 0:
- last_rest = rest
- return int(last_rest)
- def main(): // Funkcja głowna która się wykonuje i zapisuje wyniki z wszystkich funkcji
- f = open('wynik4.txt', 'a')
- ex_first = first()
- ex_second = second()
- ex_third = third()
- f.write("Zad 4.1\n")
- for x in ex_first:
- f.write(x)
- f.write("Zad 4.2\n")
- for x in ex_second:
- f.write(x)
- f.write("Zad 4.3\n")
- for x in ex_third:
- f.write(str(x) + "\n")
- f.close()
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement