TI/Programowanie dla Fizyków Medycznych:Ciekawe zadania: Różnice pomiędzy wersjami
Linia 22: | Linia 22: | ||
import matplotlib.pyplot as plt | import matplotlib.pyplot as plt | ||
− | Wierzcholki=[(1,2),(2,3),(4,2)] | + | Wierzcholki=[(1,2),(2,3),(4,2)] #lista wierzchołków trójkąta |
− | P=(7,8) | + | P=(7,8) #współrzędne punktu do sprawdzenia |
+ | #rysowanie wierzchołków | ||
+ | #lista krotek zostaje zamieniona na dwie listy współrzędnych x i y: [1,2,4] i [2,3,2] | ||
plt.plot([I[0] for I in Wierzcholki], [I[1] for I in Wierzcholki], "*k") | plt.plot([I[0] for I in Wierzcholki], [I[1] for I in Wierzcholki], "*k") | ||
− | plt.plot([I[0] for I in Wierzcholki]+Wierzcholki[0][0], [I[1] for I in Wierzcholki]+Wierzcholki[0][1], "-k") | + | |
+ | #rysowanie krawędzi | ||
+ | #do list współrzędnych dodano pierwszy punkt, żeby trójkąt się zamknął | ||
+ | plt.plot([I[0] for I in Wierzcholki]+[Wierzcholki[0][0]], [I[1] for I in Wierzcholki]+[Wierzcholki[0][1]], "-k") | ||
plt.plot(P[0], P[1], "*r") | plt.plot(P[0], P[1], "*r") | ||
+ | |||
+ | #ustawianie granic widocznej części obrazu | ||
+ | plt.xlim(0,10) | ||
+ | plt.ylim(0,10) | ||
</source> | </source> |
Wersja z 12:30, 14 lis 2017
Spis treści
Ciekawe zadania
powrót: Programowanie dla fizyków medycznych
Zadanie 1
Masz kilka ciągów w formie list. Podciągiem nazwiemy dowolny podzbiór elementów wyjętych z ciągu, ułożonych w tej samej co wcześniej kolejności. Np.
- [1, 3, 5] jest podciągiem ciągu [0,1,2,3,4,5]
- [1, 2, 1] jest podciągiem ciągu [0,1,2,3,2,1,0].
Zadnie polega na znalezieniu najdłuższego wspólnego podciągu danych ciągów.
Powinna zostać zdefiniowana funkcja, która na wejściu dostaje po przecinkach jako parametry podane ciągi, a zwraca wartość int, odpowiadającą długości najdłuższego podciągu.
Zadanie 2A
Masz współrzędne trzech punktów A, B, C wyznaczających wierzchołki trójkąta oraz współrzędne punktu P. Zadanie polega na sprawdzeniu, czy punkt P znajduje się wewnątrz trójkąta (lub na jego krawędzi).
Powinna zostać zdefiniowana funkcja, która na wejściu dostaje cztery krotki (xA, yA), (xB, yB), (xC, yC), (xP, yP) i zwraca True, jeśli punkt P spełnia powyższy warunek.
Aby sprawdzić, czy zadanie dobrze zostało rozwiązane, zwizualizujmy je z pomocą biblioteki matplotlib.pyplot:
import matplotlib.pyplot as plt
Wierzcholki=[(1,2),(2,3),(4,2)] #lista wierzchołków trójkąta
P=(7,8) #współrzędne punktu do sprawdzenia
#rysowanie wierzchołków
#lista krotek zostaje zamieniona na dwie listy współrzędnych x i y: [1,2,4] i [2,3,2]
plt.plot([I[0] for I in Wierzcholki], [I[1] for I in Wierzcholki], "*k")
#rysowanie krawędzi
#do list współrzędnych dodano pierwszy punkt, żeby trójkąt się zamknął
plt.plot([I[0] for I in Wierzcholki]+[Wierzcholki[0][0]], [I[1] for I in Wierzcholki]+[Wierzcholki[0][1]], "-k")
plt.plot(P[0], P[1], "*r")
#ustawianie granic widocznej części obrazu
plt.xlim(0,10)
plt.ylim(0,10)
Zadanie 2B
Masz zbiór punktów, z których część wyznacza krawędzie wypukłego wielokąta, a pozostałe znajdują się wewnątrz wielokąta. Sprawdź które to punkty.
Powinna zostać zdefiniowana funkcja, która na wejściu otrzyma listę krotek wyznaczających punkty [(xA, yA), ...], a na wyjściu zwraca listę krotek wyznaczających tylko punkty wyznaczające krawędzie zewnętrznego wypukłego wielokąta.