<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects on grzenow</title><link>http://www.grzenow.com/pl/projects/</link><description>Recent content in Projects on grzenow</description><generator>Hugo</generator><language>pl</language><lastBuildDate>Wed, 15 Jan 2025 00:00:00 +0000</lastBuildDate><atom:link href="http://www.grzenow.com/pl/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>Projekty z Głębokich Sieci Neuronowych</title><link>http://www.grzenow.com/pl/projects/deep-neural-networks/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/deep-neural-networks/</guid><description>&lt;p&gt;Jest to zbiór projektów zrealizowanych w ramach przedmiotu Głebokie Sieci Neuronowe, obejmujący:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Perceptrony wielowarstwowe&lt;/strong&gt;:&#10;&lt;ul&gt;&#10;&lt;li&gt;Implementacja algorytmu &lt;em&gt;ProxyProp&lt;/em&gt; (Proximal Backpropagation), opisanego w tej &lt;a href="https://arxiv.org/pdf/1706.04638v3" class="external-link" target="_blank" rel="noopener"&gt;pracy&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Rozpoznawanie obrazów&lt;/strong&gt;:&#10;&lt;ul&gt;&#10;&lt;li&gt;Implementacja kilku transformacji oraz metod &lt;a href="https://arxiv.org/pdf/1911.09665" class="external-link" target="_blank" rel="noopener"&gt;&lt;em&gt;AdvProp&lt;/em&gt;&lt;/a&gt; i &lt;a href="https://openreview.net/pdf?id=QzcZb3fWmW" class="external-link" target="_blank" rel="noopener"&gt;&lt;em&gt;SparseTopK&lt;/em&gt;&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Przetwarzanie języka naturalnego&lt;/strong&gt;:&#10;&lt;ul&gt;&#10;&lt;li&gt;Implementacja &lt;a href="https://arxiv.org/pdf/2002.05202v1" class="external-link" target="_blank" rel="noopener"&gt;&lt;em&gt;SwiGLU&lt;/em&gt;&lt;/a&gt; i &lt;a href="https://arxiv.org/pdf/2410.05258" class="external-link" target="_blank" rel="noopener"&gt;&lt;em&gt;Differential Attention&lt;/em&gt;&lt;/a&gt; dla architektury Transformera opartego wyłącznie na dekoderze.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Uczenie ze wzmocnieniem&lt;/strong&gt;:&#10;&lt;ul&gt;&#10;&lt;li&gt;Implementacja &lt;em&gt;Proximal Policy Optimization&lt;/em&gt; (PPO) oraz &lt;em&gt;Random Network Distillation&lt;/em&gt; (RND) dla środowisk &lt;a href="https://github.com/facebookresearch/minihack" class="external-link" target="_blank" rel="noopener"&gt;MiniHack&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/DNN" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Allezon</title><link>http://www.grzenow.com/pl/projects/allezon/</link><pubDate>Mon, 09 Sep 2024 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/allezon/</guid><description>&lt;p&gt;&lt;strong&gt;Allezon&lt;/strong&gt; to platforma do zbierania i analizy danych, stworzona w dwuosobowym zespole, zdolna do obsługi 1000 zapytań na sekundę dla milionów użytkowników i produktów.&lt;/p&gt;&#10;&lt;p&gt;Moją rolą było wdrożenie aplikacji, implementacja architektury rozproszonej z zastosowaniem load balancingu oraz zapewnienie skalowalności, aby efektywnie obsługiwać duży ruch na stronie.&lt;/p&gt;&#10;&lt;p&gt;Szczegółowy opis znajduje się &lt;a href="https://github.com/grzenow4/PARSR/blob/main/TaskDescription.md" class="external-link" target="_blank" rel="noopener"&gt;tutaj&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/PARSR" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Projekty z obliczeń superkomputerowych</title><link>http://www.grzenow.com/pl/projects/hpc-projects/</link><pubDate>Tue, 25 Jun 2024 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/hpc-projects/</guid><description>&lt;p&gt;Podczas pierwszego roku studiów magisterskich uczęszczałem na przedmiot &amp;ldquo;Obliczenia superkomputerowe&amp;rdquo;, podczas którego napisałem dwa ciekawe projekty: jeden z wykorzystaniem CUDA, a drugi z użyciem MPI.&lt;/p&gt;&#10;&lt;h3 id="dopasowywanie-w-bazie-danych-wariantów-genomowych"&gt;&#10; Dopasowywanie w bazie danych wariantów genomowych&#10; &lt;a class="heading-link" href="#dopasowywanie-w-bazie-danych-wariant%c3%b3w-genomowych"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;Celem było stworzenie systemu dopasowywania wariantów genomowych z pliku do bazy danych (dbNSFP). Rozwiązanie składa się z dwóch etapów: indeksowania bazy danych i dopasowywania, przy czym dopasowywanie zostało zoptymalizowane za pomocą CUDA.&lt;/p&gt;</description></item><item><title>Logic in Computer Science</title><link>http://www.grzenow.com/pl/projects/logic-in-computer-science/</link><pubDate>Fri, 24 May 2024 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/logic-in-computer-science/</guid><description>&lt;p&gt;Jest to zbiór projektów zrealizowanych w ramach przedmiotu Logika dla Informatyków, obejmujący:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Logikę zdaniową w Haskellu (Część 1):&#10;&lt;ul&gt;&#10;&lt;li&gt;Spełnialność formuł, tautologie, dysjunkcyjna postać normalna (DNF), SAT solver oparty na DNF.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Logikę zdaniową w Haskellu (Część 2):&#10;&lt;ul&gt;&#10;&lt;li&gt;Koniunkcyjna postać normalna (CNF), równoważnie spełnialna CNF (ECNF), SAT solver oparty na algorytmie Davisa-Putnama.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Rozwiązywanie SAT za pomocą biblioteki Z3 w Pythonie (Część 1):&#10;&lt;ul&gt;&#10;&lt;li&gt;Generowanie wszystkich spełniających przypisań, formuły kamyczkowe, problem hetmanów.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Rozwiązywanie SAT za pomocą biblioteki Z3 w Pythonie (Część 2):&#10;&lt;ul&gt;&#10;&lt;li&gt;Problem najkrótszego wspólnego nadciągu (SCS), przejścia fazowe dla problemu k-SAT.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Rozwiązywanie SMT za pomocą Z3 w Pythonie:&#10;&lt;ul&gt;&#10;&lt;li&gt;Twierdzenie Łosia, funkcja 91, Sudoku solver.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Intuicycjonistyczna logika zdaniowa w Agdzie:&#10;&lt;ul&gt;&#10;&lt;li&gt;Dowody dla koniunkcji i alternatywy, prawa de Morgana, słabe prawo Pierce&amp;rsquo;a.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Intuicycjonistyczna logika pierwszego rzędu w Agdzie:&#10;&lt;ul&gt;&#10;&lt;li&gt;Dowody dla kwantyfikatorów ogólnych i egzystencjalnych, relacje.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/LDI-lab" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kompilator Latte</title><link>http://www.grzenow.com/pl/projects/latte-compiler/</link><pubDate>Sun, 21 Jan 2024 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/latte-compiler/</guid><description>&lt;p&gt;Jednym z większych projektów na pierwszym roku studiów magisterskich było stworzenie kompilatora dla języka &lt;a href="https://www.mimuw.edu.pl/~ben/Zajecia/Mrj2022/Latte/" class="external-link" target="_blank" rel="noopener"&gt;Latte&lt;/a&gt;, rozszerzonego o takie funkcjonalności jak tablice, struktury oraz obiekty z pojedynczym dziedziczeniem. Kod w języku Latte jest parsowany przy użyciu narzędzia &lt;a href="https://hackage.haskell.org/package/BNFC" class="external-link" target="_blank" rel="noopener"&gt;BNFC&lt;/a&gt; i kompilowany do architektury x86 asemblera.&lt;/p&gt;&#10;&lt;p&gt;Kompilator reprezentuje monada &lt;code&gt;Reader-Writer-State&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-haskell" data-lang="haskell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;data&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Reader&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Rd&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { func &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;TType&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , clss &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;ClassEnv&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;type&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Writer&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; [&lt;span style="color:#ff7b72"&gt;AsmInstr&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;data&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;State&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;St&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { nextlab &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Int&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , newloc &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Int&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , env &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; (&lt;span style="color:#ff7b72"&gt;TType&lt;/span&gt;, &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , rodata &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , rspOff &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Int&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;gdzie&lt;/p&gt;</description></item><item><title>Kompilator Instant</title><link>http://www.grzenow.com/pl/projects/instant-compiler/</link><pubDate>Sat, 28 Oct 2023 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/instant-compiler/</guid><description>&lt;p&gt;&lt;strong&gt;Instant&lt;/strong&gt; to język programowania, który obsługuje dwa typy instrukcji:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;wyrażenie&lt;/code&gt; - wypisuje wartość &lt;code&gt;wyrażenie&lt;/code&gt; na standardowe wyjście,&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;zmienna = wyrażenie&lt;/code&gt; - przypisuje wartość &lt;code&gt;wyrażenie&lt;/code&gt; do zmiennej &lt;code&gt;zmienna&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Wyrażenia mogą składać się z liczb całkowitych, zmiennych oraz operacji arytmetycznych między nimi.&lt;/p&gt;&#10;&lt;p&gt;Celem projektu było stworzenie kompilatora do języka &lt;strong&gt;Instant&lt;/strong&gt; generującego kod dla architektur JVM i LLVM.&lt;/p&gt;&#10;&lt;p&gt;Szczegółowy opis znajduje się &lt;a href="https://github.com/grzenow4/MRJP-Instant-Compiler/blob/main/Instant.md" class="external-link" target="_blank" rel="noopener"&gt;tutaj&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/MRJP-Instant-Compiler" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Interpreter Latte</title><link>http://www.grzenow.com/pl/projects/latte-interpreter/</link><pubDate>Wed, 10 May 2023 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/latte-interpreter/</guid><description>&lt;p&gt;Jednym z większych projektów, które zrobiłem podczas studiów licencjackich, jest niewątpliwie interpreter prostego języka programowania &lt;a href="https://www.mimuw.edu.pl/~ben/Zajecia/Mrj2022/Latte/" class="external-link" target="_blank" rel="noopener"&gt;Latte&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Interpreter napisałem w Haskellu, a grmatyka jest parsowana do tego języka za pomocną narzędzia &lt;a href="https://hackage.haskell.org/package/BNFC" class="external-link" target="_blank" rel="noopener"&gt;BNFC&lt;/a&gt;. Zaimplementowane funkcjonalności są szczegółowo opisane na GitHubie (odnośnik na dole) wraz z dużą liczbą przykładów, więc tutaj przedstawiam skrótowy opis szczegółów implementacji.&lt;/p&gt;&#10;&lt;p&gt;Kod języka Latte jest automatycznie parsowany przez BNFC, a następnie przekazany do statycznej analizy typów. Monada reprezentująca stan TypeCheckera wygląda następująco:&lt;/p&gt;</description></item><item><title>Egzekutor</title><link>http://www.grzenow.com/pl/projects/executor/</link><pubDate>Sat, 11 Feb 2023 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/executor/</guid><description>&lt;p&gt;&lt;strong&gt;Egzekutor&lt;/strong&gt; to projekt z zakresu programowania współbieżnego. Jest to program, który wykonuje zadania, monitoruje ich ostatnie wypisane wyjścia (w trakcie działania), a także ubija je.&lt;/p&gt;&#10;&lt;p&gt;Obsługa procesów została zsynchronizowana w taki sposób, aby Egzekutor od razu informował o zakończeniu zadania oraz na bieżąco usuwał kończące się procesy lub wątki, które tworzy. Wszystko to odbywa się bez stosowania aktywnego oczekiwania, by nie marnować zasobów CPU.&lt;/p&gt;&#10;&lt;p&gt;Szczegółowy opis projektu można znaleźć pod poniższym linkiem.&lt;/p&gt;</description></item><item><title>Sokoban</title><link>http://www.grzenow.com/pl/projects/sokoban/</link><pubDate>Thu, 08 Dec 2022 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/sokoban/</guid><description>&lt;p&gt;&lt;strong&gt;Sokoban&lt;/strong&gt; to gra logiczna napisana w ramach kursu programowania funkcyjnego w Haskellu.&lt;/p&gt;&#10;&lt;p&gt;Gra została zaimplementowana w Haskellu na platformie &lt;a href="https://code.world/" class="external-link" target="_blank" rel="noopener"&gt;CodeWorld&lt;/a&gt;, gdzie można ją uruchomić klikając w ten &lt;a href="https://code.world/haskell#Plg7ON0XRfShvcgT0D7DElw" class="external-link" target="_blank" rel="noopener"&gt;link&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Sterowanie:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Spacja&lt;/strong&gt; - rozpoczęcie gry&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;WSAD / Strzałki&lt;/strong&gt; - poruszanie się&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;U&lt;/strong&gt; - cofnięcie ruchu&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;B&lt;/strong&gt; - poprzedni poziom&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;N&lt;/strong&gt; - następny poziom&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;R&lt;/strong&gt; - reset poziomu&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Esc&lt;/strong&gt; - reset gry&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/Sokoban" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Polynomial degree</title><link>http://www.grzenow.com/pl/projects/polynomial-degree/</link><pubDate>Tue, 10 May 2022 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/polynomial-degree/</guid><description>&lt;p&gt;&lt;strong&gt;Polynomial degree&lt;/strong&gt; to projekt napisany w czystym asemblerze. Polega on na zaimplementowaniu funckji&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;int&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;polynomial_degree&lt;/span&gt;(&lt;span style="color:#ff7b72"&gt;int&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;const&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;*&lt;/span&gt;y, &lt;span style="color:#ff7b72"&gt;size_t&lt;/span&gt; n);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Argumentami funkcji są wskaźnik &lt;code&gt;y&lt;/code&gt; na tablicę liczb całkowitych $y_0,y_1,\ldots,y_{n-1}$ i &lt;code&gt;n&lt;/code&gt; zawierający długość tej tablicy. Wynikiem funkcji jest najmniejszy stopień wielomianu $w(x)$ jednej zmiennej o współczynnikach rzeczywistych, takiego że&#10;$w(x+k\cdot r)=y_k$&#10;dla pewnej liczby rzeczywistej $x$, pewnej niezerowej liczby rzeczywistej $r$ oraz $k=0,1,\ldots,n-1$.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Przykłady:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Dla $y=[-3,0,3]$, wynikiem będzie wielomian stopnia 1.&lt;/li&gt;&#10;&lt;li&gt;Dla $y=[1,4,9,16]$, wynikiem będzie wielomian stopnia 2.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/polynomial-degree" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Pacman Rivals</title><link>http://www.grzenow.com/pl/projects/pacman-rivals/</link><pubDate>Fri, 14 Jan 2022 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/pacman-rivals/</guid><description>&lt;p&gt;&lt;strong&gt;Pacman Rivals&lt;/strong&gt; jest grą wieloosobową napisaną w 4-osobowym zespole. Jest to klasyczna gra Pac-Man wzbogacona o tryb wieloosobowy oraz mechanikę PvP.&lt;/p&gt;&#10;&lt;p&gt;Gra polega na zebraniu jak największej liczby monet oraz unikaniu kontaktu z duszkami chodzącymi po mapie. Co jakiś czas na mapie pojawiają się różne bonusy zapewniające graczowi więcej punktów za monety, przenikanie przez ściany, nieśmiertelność i wiele innych.&lt;/p&gt;&#10;&lt;p&gt;Projekt został napisany w C++ za pomocą biblioteki &lt;a href="https://www.sfml-dev.org/" class="external-link" target="_blank" rel="noopener"&gt;SFML&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/pacman-rivals" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Wielomiany Rzadkie Wielu Zmiennych</title><link>http://www.grzenow.com/pl/projects/ipp-polynomials/</link><pubDate>Mon, 21 Jun 2021 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/ipp-polynomials/</guid><description>&lt;p&gt;Jest to rozbudowany projekt napisany w języku C, którego celem jest implementacja podstawowych operacji na wielomianach rzadkich wielu zmiennych, takich jak dodawanie, odejmowanie, mnożenie oraz potęgowanie.&lt;/p&gt;&#10;&lt;p&gt;Drugą część projektu stanowi kalkulator wielomianów wykorzystujący odwrotną notację polską. Umożliwia on wykonywanie operacji arytmetycznych oraz wypisywanie aktualnego wielomianu znajdującego się na stosie.&lt;/p&gt;&#10;&lt;p&gt;Implementacja została zoptymalizowana pod kątem efektywnej alokacji dynamicznej, minimalizując zbędne alokacje i kopiowanie pamięci. Ponadto, program zapewnia pełne zwalnianie zaalokowanej pamięci, zapobiegając jej wyciekom. Całość została udokumentowana w formacie Doxygen.&lt;/p&gt;</description></item><item><title>Pętlik</title><link>http://www.grzenow.com/pl/projects/petlik/</link><pubDate>Tue, 19 Jan 2021 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/petlik/</guid><description>&lt;p&gt;&lt;strong&gt;Pętlik&lt;/strong&gt; to mały język programowania, którego składnię opisuje gramatyka z symbolem początkowym &lt;code&gt;Program&lt;/code&gt;:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;Program → CiągInstrukcji&#10;CiągInstrukcji → ε | CiągInstrukcji Instrukcja&#10;Instrukcja → Zwiększ | Powtarzaj&#10;Zwiększ → Zmienna&#10;Powtarzaj → &amp;#39;(&amp;#39; Zmienna CiągInstrukcji &amp;#39;)&amp;#39;&#10;Zmienna → &amp;#39;a&amp;#39; | ... | &amp;#39;z&amp;#39;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Instrukcje:&lt;/strong&gt;:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Zwiększ&lt;/code&gt;: równoważna instrukcji &lt;code&gt;++zmienna&lt;/code&gt; języka C.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Powtarzaj&lt;/code&gt;: równoważna instrukcji języka C:&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;while&lt;/span&gt; (zmienna &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;--&lt;/span&gt;zmienna;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Projekt składa się z dwóch części:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Kompilatora optymalizującego, generującego kod na maszynę wirtualną.&lt;/li&gt;&#10;&lt;li&gt;Interpretera kodu tej maszyny.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;strong&gt;Instrukcje maszynowe:&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>