Tag: Python
Post

SDR #4Pluto+, co to jest?

Przegląd Pluto+: architektura, możliwości, programowanie z Pythona, połączenie po USB i Ethernet, pierwszy chirp.

Post

Algorytm Boyer–Moore

Omawiam algorytm Boyer–Moore: porównywanie wzorca od końca, regułę złego znaku (bad character) oraz regułę dobrego sufiksu (good suffix). Pokazuję, dlaczego BM w typowym przypadku jest sublinearny i kiedy wygrywa, a kiedy przegrywa z KMP.

Post

Falownik Huanyang #7sterowanie RS-485

Krok po kroku przechodzimy przez podłączenie falownika Huanyang do magistrali RS‑485, konfigurację protokołu w falowniku oraz przykładowe skrypty w Pythonie, które pozwalają z poziomu komputera ustawiać obroty, kierunek i odczytywać bieżące parametry pracy.

Post

Zadanie rekrutacyjne #5dynamicznie

Rozwiązuję zadanie „znajdź głębokość największego wąwozu w ciągu wysokości terenu”, pokazując prosty, liniowy algorytm. Krótko omawiam złożoność czasową i pamięciową.

Post

Python - wywołaj tylko raz

Jak wywoływać tylko raz kosztowną funkcje lub metodę i zwracać wynik pierwszego wykonania

Post

Algorytm Knuth–Morris–Pratt

Wprowadzam algorytm Knuth–Morris–Pratt do wyszukiwania wzorca w tekście: intuicja stojąca za funkcją prefix/suffix, konstrukcja tablicy „lps” oraz analiza złożoności. Omawiam też, kiedy KMP ma przewagę nad naiwnym porównywaniem znak po znaku.

Post

Wyszukiwanie tekstu w tekście

Na prostym przykładzie pokazuję klasyczny, naiwny algorytm wyszukiwania podciągu w tekście oraz szczegółowo omawiam jego ograniczenia: złożoność czasową, powtarzane porównania i sytuacje, w których to podejście zaczyna być problematyczne.

Post

Dwa słowa o kartach Mifare

Praktyczne wprowadzenie do ekosystemu kart zbliżeniowych MIFARE, szczegółowo omawiając różnice techniczne między popularnymi modelami Classic oraz Ultralight. Wyjaśnienie standardu ISO/IEC 14443, mapy pamięci układów oraz kluczowe aspekty bezpieczeństwa i ograniczenia obu technologii. Całość uzupełnia instruktaż programistycznej obsługi kart w języku Python, obejmujący konfigurację czytnika ACR122 oraz komunikację za pomocą ramek APDU.

Post

Programowanie dynamiczne #2

Wprowadzam pojęcie programowania dynamicznego i pokazuję, jak zastosować go do rozwiązania problemu Longest Common Subsequence. Przedstawiam koncepcję rozdzielania problemu na mniejsze części i wykorzystywania wyników tych części do uzyskania rozwiązania głównego. Na przykładzie ilustruję, jak wykorzystać wiedzę o najdłuższych wspólnych podciągach do obliczenia najdłuższego wspólnego podciągu dla dwoch ciągów znaków.

Post

Programowanie dynamiczne #1

Wprowadzam pojęcie programowania dynamicznego i pokazuję, jak zastosować go do rozwiązania problemu Longest Increasing Sequence. Przedstawiam koncepcję rozdzielania problemu na mniejsze części i wykorzystywania wyników tych części do uzyskania rozwiązania głównego. Na przykładzie ilustruję, jak wykorzystać wiedzę o najdłuższych podciągach do obliczenia najdłuższego podciągu po dodaniu nowego elementu do ciągu.

Post

Zadanie rekrutacyjne #3

W zadaniu rekrutacyjnym #3 zaimplementowano funkcję, która liczy elementy w liście jednokierunkowej, korzystając z referencji do obiektu. Przedstawiono dwa rozwiązania: jedno z wykorzystaniem odległości do początku i końca listy, a drugie z wykorzystaniem garbage collector'a do znalezienia referencji do obiektu. Opisano również ograniczenia i zastosowania takiego podejścia w praktyce.

Post

Przekierowanie wyjścia [Python]

Wyjaśniam, czym jest stdout w Pythonie i jak działa przekierowanie standardowego wyjścia – zarówno na poziomie systemu, jak i wewnątrz samego Pythona. Na przykładach pokazuję zapis do pliku, przechwytywanie wyjścia oraz integrację z logowaniem.