Dowód na poprawność wzoru na pole koła - bez słów.
niedziela, 30 października 2016
Fraktale - trójkąt Sierpińskiego
- Zaznacz trzy punkty.
- Postaw kropkę długopisem w dowolnym miejscu.
- Powtarzaj do znudzenia poniższe czynności.
- Wylosuj jeden z trzech punktów.
- Postaw kropkę w połowie drogi od ostatniej kropki do wylosowanego punktu.
Podejrzewam i nie dziwię się, że mogłeś (mogłaś) nie wykonać powyższego przepisu, dlatego poniżej możesz zrobić to jednym kliknięciem w Run.
Kod generujący
# -*- coding: utf-8 -*- """Program rysujacy Trojkat Sierpinskiego na podstawie losowania jednego z trzech punktow trojata rownobocznego.""" import turtle import random def w_polowie_drogi(od, do): x = 0.5 * (od[0] + do[0]) y = 0.5 * (od[1] + do[1]) return x, y def przesun(punkt, wektor): x, y = punkt dx, dy = wektor return (x + dx, y + dy) def pozdrowienia(): turtle.setpos((-170, 90)) turtle.write("Dziekuje i pozdrawiam! Pawel", font=("Arial", 20, "normal")) KROK = 300 # dlugosc boku rysowanego trojkata ILE_KROPEK = 1000 # ile kropek ma byc postawione w trakcie calej animacji OKRES_ODSWIEZENIA = 10 # co ile kropek pokazywac rysunek WIERZCHOLKI = [(0, 0), (KROK, 0), (KROK / 2, KROK / 2 * 3 ** 0.5)] WIERZCHOLKI = map(lambda punkt: przesun(punkt, (-KROK / 2, -KROK * 3 ** 0.5 / 3)), WIERZCHOLKI) def rysuj(): turtle.tracer(0, 0) # wylaczenie animacji co KROK, w celu przyspieszenia turtle.hideturtle() # ukrycie glowki zolwika turtle.penup() # podnosimy zolwia, zeby nie mazal nam linii podczas ruchu ostatnie_rysowanie = 0 # ile kropek temu zostal odrysowany rysunek for i in xrange(ILE_KROPEK): # losujemy wierzcholek do ktorego bedziemy zmierzac do = random.choice(WIERZCHOLKI) # bierzemy nasza aktualna pozycje teraz = turtle.position() # ustawiamy sie w polowie drogi do wierzcholka, ktorego wczesniej obralismy turtle.setpos(w_polowie_drogi(teraz, do)) # stawiamy kropke w nowym miejscu turtle.dot(1) ostatnie_rysowanie += 1 if ostatnie_rysowanie == OKRES_ODSWIEZENIA: # postawilismy na tyle duzo kropek, zeby odswiezyc rysunek turtle.update() ostatnie_rysowanie = 0 pozdrowienia() turtle.update() if __name__ == "__main__": rysuj()
Zagadka o misjonarzach i kanibalach w PyGame
W ramach zabawy z nowo rozpoczętym na studiach przedmiotem nazwanym Sztuczna Inteligencja i Systemy Doradcze postanowiłem zaimplementować przeszukiwanie przestrzeni stanów problemu misjonarzy i kanibali.
Problem brzmi następująco: na brzegu rzeki stoi trzech misjonarzy, trzech kanibali łódka mieszcząca co najwyżej dwie osoby. Wszystkie sześć osób chce przedostać się na drugą stronę rzeki za pomocą łódki, każdy potrafi wiosłować.
Jedyną trudnością jest to, że pozostawienie na którymś brzegu rzeki większej liczby kanibali niż misjonarzy kończy się zjedzeniem misjonarzy.
Jeśli przy którymś brzegu stoi łódka, to liczba kanibali (misjonarzy), przy tym brzegu jest sumą kanibali (misjonarzy) w łodzi i stojących na tym brzegu.
Poniżej zamieszczam kod, który prezentuje rozwiązanie dla dowolnej liczby kanibali, misjonarzy i dowolnej pojemności łódki. Wyjście programu dla opisanego wyżej przypadku wygląda następująco.
https://gist.github.com/samorajp/a182fb22eb59fe89b620#file-misjonarze-py
Dodatkowo napisałem aplikację przy pomocy biblioteki PyGame, która przestawia rozwiązanie interaktywnie.
Kod programu wrzucony na githuba znajduje się poniżej:
https://gist.github.com/samorajp/66bbc1760b854e8ff3f1#file-pygame_vis-py
Problem brzmi następująco: na brzegu rzeki stoi trzech misjonarzy, trzech kanibali łódka mieszcząca co najwyżej dwie osoby. Wszystkie sześć osób chce przedostać się na drugą stronę rzeki za pomocą łódki, każdy potrafi wiosłować.
Jedyną trudnością jest to, że pozostawienie na którymś brzegu rzeki większej liczby kanibali niż misjonarzy kończy się zjedzeniem misjonarzy.
Jeśli przy którymś brzegu stoi łódka, to liczba kanibali (misjonarzy), przy tym brzegu jest sumą kanibali (misjonarzy) w łodzi i stojących na tym brzegu.
Poniżej zamieszczam kod, który prezentuje rozwiązanie dla dowolnej liczby kanibali, misjonarzy i dowolnej pojemności łódki. Wyjście programu dla opisanego wyżej przypadku wygląda następująco.
M M M K K K | M M M K | K K M M M K K | K M M M | K K K M M M K | K K M K | M M K K M M K K | M K K K | M M M K K K K | M M M K | M M M K K M K | M M K K | M M M K K K
https://gist.github.com/samorajp/a182fb22eb59fe89b620#file-misjonarze-py
Dodatkowo napisałem aplikację przy pomocy biblioteki PyGame, która przestawia rozwiązanie interaktywnie.
Kod programu wrzucony na githuba znajduje się poniżej:
https://gist.github.com/samorajp/66bbc1760b854e8ff3f1#file-pygame_vis-py
Do działania powinno wystarczyć posiadanie zainstalowanej biblioteki PyGame oraz umieszczenie w jednym katalogu pliku misjonarze.py i pygame_vis.py.
piątek, 28 października 2016
Four Dimensional Maths: Things to See and Hear in the Fourth Dimension with Matt Parker - YouTube
Poznany przeze mnie parę lat temu na kanale Numberphile (i z tego powodu czasem już nieco dla mnie przewidywalny) Matt Parker prezentuje różne matematyczne rzeczy - i reklamuje swoją książkę.
W skrócie:
- sztuczka z wyliczeniem pierwiastka sześciennego liczby,
- kostka Rubika,
- efektywne sznurowanie butów,
- pierścienie boromejskie i nieco teorii węzłów,
- ciekawe wstawki o przeplataniu się biologii i teorii węzłów (bakterie(?), które minimalizują ilość użytego enzymu do cięcia DNA, które trzeba rozplątać)
- wstęga Möbiusa i jej warianty,
- i najciekawsze w tej prezentacji dla mnie: wizualizacje i intuicja czwartego wymiaru.
[embed]https://www.youtube.com/watch?v=1wAaI_6b9JE[/embed]
W skrócie:
- sztuczka z wyliczeniem pierwiastka sześciennego liczby,
- kostka Rubika,
- efektywne sznurowanie butów,
- pierścienie boromejskie i nieco teorii węzłów,
- ciekawe wstawki o przeplataniu się biologii i teorii węzłów (bakterie(?), które minimalizują ilość użytego enzymu do cięcia DNA, które trzeba rozplątać)
- wstęga Möbiusa i jej warianty,
- i najciekawsze w tej prezentacji dla mnie: wizualizacje i intuicja czwartego wymiaru.
[embed]https://www.youtube.com/watch?v=1wAaI_6b9JE[/embed]
czwartek, 27 października 2016
The Magic of Chemistry - with Andrew Szydlo - YouTube
Pan Zbigniew Szydło prezentuje serię wybuchowych eksperymentów. Polecam.
[embed]https://www.youtube.com/watch?v=0g8lANs6zpQ[/embed]
[embed]https://www.youtube.com/watch?v=0g8lANs6zpQ[/embed]
Subskrybuj:
Posty
(
Atom
)