TI/Programowanie dla Fizyków Medycznych:Ciekawe zadania: Różnice pomiędzy wersjami

Z Brain-wiki
Linia 54: Linia 54:
 
===Zadanie 3===
 
===Zadanie 3===
 
Masz układ n równań liniowych. Rozwiąż go, eliminując kolejne zmienne przez mnożenie stronami i odejmowanie stronami równań.
 
Masz układ n równań liniowych. Rozwiąż go, eliminując kolejne zmienne przez mnożenie stronami i odejmowanie stronami równań.
<math>
+
\\<math>
 
ax+by=c |\cdot d \\
 
ax+by=c |\cdot d \\
 
dx+ey=f |\cdot a \\
 
dx+ey=f |\cdot a \\

Wersja z 12:45, 14 lis 2017

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. [1, 3, 5] jest podciągiem ciągu [0,1,2,3,4,5]
  2. [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.

Działanie programu powinno zostać zwizualizowane - najpierw stan wejściowy, potem stan wyjściowy.

Zadanie 2C

Zbiór punktów stanowiących wierzchołki wielokąta otrzymany w zadaniu 2B przerobić na zbiór trójkątów w taki sposób, by ich krawędzie się nie przecinały.

Powinna zostać zdefiniowana funkcja, która na wejściu ma listę współrzędnych wierzchołków [(xA, yA), ...], a na wyjściu listę trójek współrzędnych [((xA, yA), (xB, yB), (xC, yC)), ...]

Zadanie 3

Masz układ n równań liniowych. Rozwiąż go, eliminując kolejne zmienne przez mnożenie stronami i odejmowanie stronami równań. \\[math] ax+by=c |\cdot d \\ dx+ey=f |\cdot a \\ \\ adx+bdy=cd \\ adx+eay=fa \\ [/math]