From 9e529bd31fb306e9ccaeb57016f10bd9462188bf Mon Sep 17 00:00:00 2001 From: Kepka Date: Fri, 15 Apr 2022 13:38:08 +0200 Subject: [PATCH 1/8] aktualizacja zadania --- Alek/zadanie1.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Alek/zadanie1.py diff --git a/Alek/zadanie1.py b/Alek/zadanie1.py new file mode 100644 index 0000000..f03c4cd --- /dev/null +++ b/Alek/zadanie1.py @@ -0,0 +1,40 @@ +# DHT22 + + +# 0 - 1054 <--- opornosc +# -20 - 100 <--- temperatura + + +# co sekundę otrzymuejmy odczyt z czujnika i chcemy przedstawić userowi temeraturę + + +# [600 632 680 690 600 632 680 690 600 632 680 690 0 0 700 690 600 632 680 690 1054 700 690 720 720 750 760 770 740 ] # 1hz + + +# 1. czegos co generuje nam dane +# a) Jesli uruchomimy program to będzie dzialal do momentu az go zatrzymamy (while True) +# b) podaje ten zestaw [600 632 680 690 600 632 680 690 600 632 680 690 0 0 700 690 600 632 680 690 1054 700 690 720 720 750 760 770 740 ] +# (poczatkowo po tych 20 elementach moze sie program konczyc) +# c) wyprintuj przeskalowaną opronosc (z 600 na temperature) + +from time import sleep +from statistics import mean +from numpy import interp + +input_data = [600, 632, 680, 690, 600, 632, 680, 690, 600, 632, 680, 690, 0, 0, 700, 690, 600, 632, 680, 690, 1054, 700, + 690, 720, 720, 750, 760, 770, 740] +avg_list = [] + +#Mediany + +# def median +# def sortujaca + + +for index, value in enumerate(input_data): + avg_list = input_data[max(0, index - 4):index + 1] # pierwszy krok jest spoko + output_value = round( + interp((mean(avg_list)), [0, 1054], [-20, 100])) # TO jest spoko ale mean bym zamienii na median i rozbi to + # znalexc jak sobie rondowac cos do 2 miejsca z intem i przy princie + print(f'średnia z ostatnich {len(avg_list)} sek.: {output_value}') + sleep(1) From 980d42ee822fad8a51f553897db3906017dd7e9b Mon Sep 17 00:00:00 2001 From: Kepka Date: Wed, 27 Apr 2022 14:26:04 +0200 Subject: [PATCH 2/8] rozwiazanie zadania --- Alek/zadanie1.py | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/Alek/zadanie1.py b/Alek/zadanie1.py index f03c4cd..47bfb79 100644 --- a/Alek/zadanie1.py +++ b/Alek/zadanie1.py @@ -18,23 +18,54 @@ # c) wyprintuj przeskalowaną opronosc (z 600 na temperature) from time import sleep -from statistics import mean +from statistics import median from numpy import interp input_data = [600, 632, 680, 690, 600, 632, 680, 690, 600, 632, 680, 690, 0, 0, 700, 690, 600, 632, 680, 690, 1054, 700, 690, 720, 720, 750, 760, 770, 740] +input_range = [0, 1054] +output_range = [-20, 100] avg_list = [] -#Mediany +# Mediany # def median # def sortujaca +def sortujaca(array): + + array_length = len(array) + for x in range(array_length): + for y in range(0, array_length - x - 1): + if array[y] > array[y + 1]: + temp = array[y] + array[y] = array[y + 1] + array[y + 1] = temp + return array + + +def mediana(data): + """ + Return median value for provided data + + :param data: list of values + :return: + """ + sorted_args = sortujaca(data) + if len(sorted_args) % 2 == 0: + n1 = sorted_args[len(sorted_args) // 2 - 1] + n2 = sorted_args[len(sorted_args) // 2] + result = (n1 + n2) / 2 + else: + result = sorted_args[len(sorted_args) // 2] + return result + + for index, value in enumerate(input_data): - avg_list = input_data[max(0, index - 4):index + 1] # pierwszy krok jest spoko - output_value = round( - interp((mean(avg_list)), [0, 1054], [-20, 100])) # TO jest spoko ale mean bym zamienii na median i rozbi to + sample_list = input_data[max(0, index - 4):index + 1] # pierwszy krok jest spoko + median_value = mediana(sample_list) + mapped_value = interp(median_value, input_range, output_range) # TO jest spoko ale mean bym zamienii na median i rozbi to # znalexc jak sobie rondowac cos do 2 miejsca z intem i przy princie - print(f'średnia z ostatnich {len(avg_list)} sek.: {output_value}') + print(f'Mediana z ostatnich {len(sample_list)} sek.: {mapped_value:.2f}') sleep(1) From 8de5f4926710c9e0bb463c7a8909aa942627961c Mon Sep 17 00:00:00 2001 From: Kepka Date: Thu, 5 May 2022 09:24:03 +0200 Subject: [PATCH 3/8] =?UTF-8?q?pocz=C4=85tek=20zadania=20z=20liczeniem=20d?= =?UTF-8?q?=C5=82ugo=C5=9Bci=20rzeki?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Alek/listy_i_inne.py | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Alek/listy_i_inne.py diff --git a/Alek/listy_i_inne.py b/Alek/listy_i_inne.py new file mode 100644 index 0000000..0d37894 --- /dev/null +++ b/Alek/listy_i_inne.py @@ -0,0 +1,4 @@ +macierz = [[0, 0, 1, 0, 0], [1, 0, 0, 0, 0], [1, 1, 0, 1, 1], [0, 0, 1, 0, 0], [0, 0, 1, 1, 1]] + + +# macierz[nr_wiersza][nr_kolumny] \ No newline at end of file From de7e31eb6cecd95d4dbfeede573f47fbf6d839ab Mon Sep 17 00:00:00 2001 From: Kepka Date: Wed, 11 May 2022 15:12:14 +0200 Subject: [PATCH 4/8] chodzenie po rzekach kolumny i wiersze --- Alek/listy_i_inne.py | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/Alek/listy_i_inne.py b/Alek/listy_i_inne.py index 0d37894..eac4759 100644 --- a/Alek/listy_i_inne.py +++ b/Alek/listy_i_inne.py @@ -1,4 +1,46 @@ macierz = [[0, 0, 1, 0, 0], [1, 0, 0, 0, 0], [1, 1, 0, 1, 1], [0, 0, 1, 0, 0], [0, 0, 1, 1, 1]] +for row in macierz: + for element in row: + print(element) -# macierz[nr_wiersza][nr_kolumny] \ No newline at end of file +for i in range(len(macierz)): + row = macierz[i] + for j in range(len(row)): + element = row[j] + print(element) + +print("---------------------------------------") + +dlugosc = len(macierz[0]) +wszystkie_mokre_miejsca = set() # pojedyncze punkty +wszystkie_rzeki = set() # cale rzeki +for i in range(dlugosc): + for j in range(len(macierz)): + element = macierz[j][i] + pozycja = (j,i) + if element == 1 and pozycja not in wszystkie_mokre_miejsca: + wszystkie_mokre_miejsca.add(pozycja) + + + # aktualna_rzeka = {} + + # dodaj te 1 do aktualnej rzeki + # sprawdz sąsiada, ale tylko takiego, ktrego nie mamy w mokrych_miejscach + +# macierz[nr_wiersza][nr_kolumny] + +# Kolumnowo +macierz[0][ + 0] # j=max 4 czyli dlugosz listy macierzy czyli ilosc wierszy i=ilosc kolumn czyli, czli 4 czyli len(macierz[0]) +macierz[1][0] +macierz[2][0] +macierz[3][0] +macierz[4][0] +macierz[0][1] + +# Wierszowo +macierz[0][0] +... +macierz[0][5] +macierz[1][0] From 3059207efb1c751b72d0e7177a8d1dc1b098b48e Mon Sep 17 00:00:00 2001 From: Kepka Date: Thu, 19 May 2022 09:16:24 +0200 Subject: [PATCH 5/8] =?UTF-8?q?pr=C3=B3ba=20sprawdzenia=20s=C4=85siad?= =?UTF-8?q?=C3=B3w=20rekurencyjnie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Alek/listy_i_inne.py | 82 +++++++++++++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/Alek/listy_i_inne.py b/Alek/listy_i_inne.py index eac4759..eafadd5 100644 --- a/Alek/listy_i_inne.py +++ b/Alek/listy_i_inne.py @@ -1,46 +1,72 @@ macierz = [[0, 0, 1, 0, 0], [1, 0, 0, 0, 0], [1, 1, 0, 1, 1], [0, 0, 1, 0, 0], [0, 0, 1, 1, 1]] -for row in macierz: - for element in row: - print(element) - -for i in range(len(macierz)): - row = macierz[i] - for j in range(len(row)): - element = row[j] - print(element) +# for row in macierz: +# for element in row: +# print(element) +# +# for i in range(len(macierz)): +# row = macierz[i] +# for j in range(len(row)): +# element = row[j] +# print(element) print("---------------------------------------") +def szukaj_rekurencyjnie(row, col): + if col > 0: + element = macierz[row][col-1] + pozycja = (row, col-1) + if element == 1 and pozycja not in wszystkie_mokre_miejsca: + wszystkie_mokre_miejsca.add(pozycja) + szukaj_rekurencyjnie(pozycja[0], pozycja[1]) + + if row < len(macierz) - 1: + element = macierz[row + 1][col] + pozycja = (row + 1, col) + if element == 1 and pozycja not in wszystkie_mokre_miejsca: + wszystkie_mokre_miejsca.add(pozycja) + szukaj_rekurencyjnie(pozycja[0], pozycja[1]) + + if col < len(macierz[0]) - 1: + element = macierz[row][col + 1] + pozycja = (row, col + 1) + if element == 1 and pozycja not in wszystkie_mokre_miejsca: + wszystkie_mokre_miejsca.add(pozycja) + szukaj_rekurencyjnie(pozycja[0], pozycja[1]) + + if row > 0: + element = macierz[row - 1][col] + pozycja = (row - 1, col) + if element == 1 and pozycja not in wszystkie_mokre_miejsca: + wszystkie_mokre_miejsca.add(pozycja) + szukaj_rekurencyjnie(pozycja[0], pozycja[1]) + + return ... + dlugosc = len(macierz[0]) wszystkie_mokre_miejsca = set() # pojedyncze punkty wszystkie_rzeki = set() # cale rzeki + for i in range(dlugosc): for j in range(len(macierz)): element = macierz[j][i] - pozycja = (j,i) + pozycja = (j, i) if element == 1 and pozycja not in wszystkie_mokre_miejsca: + aktualna_rzeka = set() wszystkie_mokre_miejsca.add(pozycja) + szukaj_rekurencyjnie(j, i) + wszystkie_rzeki.add(tuple(aktualna_rzeka)) +print(wszystkie_rzeki) +print(wszystkie_mokre_miejsca) - # aktualna_rzeka = {} - - # dodaj te 1 do aktualnej rzeki - # sprawdz sąsiada, ale tylko takiego, ktrego nie mamy w mokrych_miejscach -# macierz[nr_wiersza][nr_kolumny] +x = [1,2,3] -# Kolumnowo -macierz[0][ - 0] # j=max 4 czyli dlugosz listy macierzy czyli ilosc wierszy i=ilosc kolumn czyli, czli 4 czyli len(macierz[0]) -macierz[1][0] -macierz[2][0] -macierz[3][0] -macierz[4][0] -macierz[0][1] +def a(b): + b.append(1) + print(x) -# Wierszowo -macierz[0][0] -... -macierz[0][5] -macierz[1][0] +print(x) +a(x) +print(x) \ No newline at end of file From 983b6eccde1f37cbf088cef6481aca046c2f0964 Mon Sep 17 00:00:00 2001 From: Kepka Date: Tue, 24 May 2022 09:11:10 +0200 Subject: [PATCH 6/8] rzeki rozwiazane --- Alek/listy_i_inne.py | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/Alek/listy_i_inne.py b/Alek/listy_i_inne.py index eafadd5..594ecb4 100644 --- a/Alek/listy_i_inne.py +++ b/Alek/listy_i_inne.py @@ -12,36 +12,36 @@ print("---------------------------------------") -def szukaj_rekurencyjnie(row, col): + +def szukaj_rekurencyjnie(row, col, rzeka): + + wszystkie_mokre_miejsca.add((row, col)) + rzeka.add((row, col)) if col > 0: element = macierz[row][col-1] pozycja = (row, col-1) if element == 1 and pozycja not in wszystkie_mokre_miejsca: - wszystkie_mokre_miejsca.add(pozycja) - szukaj_rekurencyjnie(pozycja[0], pozycja[1]) + szukaj_rekurencyjnie(pozycja[0], pozycja[1], rzeka) if row < len(macierz) - 1: element = macierz[row + 1][col] pozycja = (row + 1, col) if element == 1 and pozycja not in wszystkie_mokre_miejsca: - wszystkie_mokre_miejsca.add(pozycja) - szukaj_rekurencyjnie(pozycja[0], pozycja[1]) + szukaj_rekurencyjnie(pozycja[0], pozycja[1], rzeka) if col < len(macierz[0]) - 1: element = macierz[row][col + 1] pozycja = (row, col + 1) if element == 1 and pozycja not in wszystkie_mokre_miejsca: - wszystkie_mokre_miejsca.add(pozycja) - szukaj_rekurencyjnie(pozycja[0], pozycja[1]) + szukaj_rekurencyjnie(pozycja[0], pozycja[1], rzeka) if row > 0: element = macierz[row - 1][col] pozycja = (row - 1, col) if element == 1 and pozycja not in wszystkie_mokre_miejsca: - wszystkie_mokre_miejsca.add(pozycja) - szukaj_rekurencyjnie(pozycja[0], pozycja[1]) + szukaj_rekurencyjnie(pozycja[0], pozycja[1], rzeka) + - return ... dlugosc = len(macierz[0]) wszystkie_mokre_miejsca = set() # pojedyncze punkty @@ -53,20 +53,11 @@ def szukaj_rekurencyjnie(row, col): pozycja = (j, i) if element == 1 and pozycja not in wszystkie_mokre_miejsca: aktualna_rzeka = set() - wszystkie_mokre_miejsca.add(pozycja) - szukaj_rekurencyjnie(j, i) + szukaj_rekurencyjnie(j, i, aktualna_rzeka) wszystkie_rzeki.add(tuple(aktualna_rzeka)) -print(wszystkie_rzeki) -print(wszystkie_mokre_miejsca) - - -x = [1,2,3] - -def a(b): - b.append(1) - print(x) - -print(x) -a(x) -print(x) \ No newline at end of file +# print(wszystkie_rzeki) +for x in wszystkie_rzeki: + print(f"{x} dlugosc: {len(x)}") +print("---------------------------------------") +print(len(max(wszystkie_rzeki))) From 79a03df85a92e406da096b8de2579de6aec9d8a2 Mon Sep 17 00:00:00 2001 From: Kepka Date: Tue, 24 May 2022 09:50:33 +0200 Subject: [PATCH 7/8] notatki --- Alek/listy_i_inne.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Alek/listy_i_inne.py b/Alek/listy_i_inne.py index 594ecb4..2b574bf 100644 --- a/Alek/listy_i_inne.py +++ b/Alek/listy_i_inne.py @@ -61,3 +61,5 @@ def szukaj_rekurencyjnie(row, col, rzeka): print(f"{x} dlugosc: {len(x)}") print("---------------------------------------") print(len(max(wszystkie_rzeki))) + +# doniczka > kompozycja z klas roślina i czujnik \ No newline at end of file From cf7dd315a631f04b2ba6c2b70a7ee7b483b7de96 Mon Sep 17 00:00:00 2001 From: 777Samael Date: Mon, 20 Jun 2022 09:26:49 +0200 Subject: [PATCH 8/8] nowe obiekty dodane --- Alek/doniczka/src/czujnik.py | 7 +++++ Alek/doniczka/src/doniczka.py | 57 +++++++++++++++++++++++++++++++++++ Alek/doniczka/src/roslina.py | 18 +++++++++++ 3 files changed, 82 insertions(+) create mode 100644 Alek/doniczka/src/czujnik.py create mode 100644 Alek/doniczka/src/doniczka.py create mode 100644 Alek/doniczka/src/roslina.py diff --git a/Alek/doniczka/src/czujnik.py b/Alek/doniczka/src/czujnik.py new file mode 100644 index 0000000..e592a90 --- /dev/null +++ b/Alek/doniczka/src/czujnik.py @@ -0,0 +1,7 @@ +class Czujnik: + + def __init__(self, name): + self.name = name + + def pomiar(self): + ... diff --git a/Alek/doniczka/src/doniczka.py b/Alek/doniczka/src/doniczka.py new file mode 100644 index 0000000..769fe24 --- /dev/null +++ b/Alek/doniczka/src/doniczka.py @@ -0,0 +1,57 @@ +from czujnik import Czujnik +from roslina import Roslina + + +class Doniczka: + + def __init__(self, a: Roslina, b: Czujnik): + self.a = a + self.b = b + + def podlej(self): + ... + + def czy_podlac(self) -> bool: + return self.b.pomiar() > self.a.zapotrzebowanie + + +# rozrysować strukturę działania doniczki +# zależności między elementami i co się powinno dziać +# moze dodać typ rośliny żeby nadać ine ilości zapotrzebowania na wodę +# zapotrzebowanie -> {"nazwa_rosliny": ["ilosc_wody", "interwal_podlewania", "docelowa_wilgotnosc"]} +# START +# | +# doniczka: wybierz rosline z listy +# --------------------------------- +# | | +# | (jest na liście) | (brak na liście) +# | | +# doniczka: doniczka: +# pobierz parametry z bazy pobierz parametry od usera +# | | +# --------------------------------- +# | +# czujnik: +# pomiar +# | +# doniczka: +# czy_podlac +# | +# --------------------- +# t| n| +# doniczka: doniczka: +# czy jest woda czekaj interwal +# --------------- +# t| n| +# doniczka: doniczka: +# podlej powiadom usera +# | +# doniczka: +# czekaj interwal +# +# dodać zapisywanie do bazy stanu aktualnego, żeby dało się wznowić pracę po przerwaniu + + + + + diff --git a/Alek/doniczka/src/roslina.py b/Alek/doniczka/src/roslina.py new file mode 100644 index 0000000..9b6e43a --- /dev/null +++ b/Alek/doniczka/src/roslina.py @@ -0,0 +1,18 @@ +class Roslina: + + def __init__(self, name: str, water_required=1000): + self.water_required = water_required + self.name = name + + + + + +a = Roslina(656) + + + + + +def a(x=1000): + print(x) \ No newline at end of file