diff --git a/README.md b/README.md index 439b943..df03f28 100644 --- a/README.md +++ b/README.md @@ -27,97 +27,10 @@ In diesem Repository findet man: ## Code ## -Im Unterordner [`code`](./code) kann man Codeprojekte in Python und Golang finden, in denen verschiedene Algorithmen implementiert werden -(siehe insbes. [`code/python/src/algorithms`](./code/python//src/algorithms) -und [`code/golang/internal/algorithms`](./code/golang/internal/algorithms)). - -Gerne kann man den Code benutzen, in einem eigenen Repository verändern, und mit den im Kurs präsentierten Algorithmen **herumexperimentieren**. - -**HINWEIS:** _Bei meiner Implementierung kann es zu leichten Abweichungen kommen. Bitte **stets** an dem Material im VL-Skript sich orientieren. Der Hauptzweck der Code-Projekte besteht darin, dass Wissbegierige die Algorithmen konkret ausprobieren können. Alle theoretischen Aspekte werden jedoch im Skript und in den Übungen ausführlicher erklärt._ - -### Systemvoraussetzungen ### - -#### Bashscripts #### - -Im Ordner [`scripts`](./scripts) sind mehrere Workflows als Bashscripts kodiert. (Man kann natürlich ohne sie arbeiten, insbesondere dann, wenn man einen guten IDE hat.) - -Zunächst braucht man einen Bashterminal. Das kommt mit OSX (Terminal) und Linux. Für Windows-User braucht man [git-for-windows](https://gitforwindows.org) zu installieren, was auch bash mit installiert. (Und für diejenigen, die VSCode oder andere IDEs benutzen, lässt sich bash als integrierten Terminal im IDE selbst verwenden.) - -Den Bashscripts benötigen Ausfuhrrechte. Hierfür führe man -```bash -chmod +x scripts/*.sh; -``` -aus. Das muss danach nie wiederholt werden. - -Jetzt können wir von dem Hauptordner des Repositorys Befehle wie -```bash -./scripts/build.sh -./scripts/build.sh ---mode setup -``` -usw. in der Bash-Console ausführen. - -#### Für das Python-Projekt #### - -Python version 3.x.x (idealerweise zumindest 3.9.5) plus einige Module (siehe [code/requirements](./code/requirements)). Letztere lassen sich mittels -```bash -# Benutze die Option `--venv true`, um mit virtuellem Env zu arbeiten: -./scripts/build.sh --lang python --mode setup -## oder: -python3 -m pip install -r code/requirements; # linux, osx -py -3 -m pip install -r code/requirements; # Windows -``` -installieren. - -#### Für das Golang-Projekt #### - -Man braucht [go](https://golang.org/dl/) Version **1.17.x**. (Man kann bestimmt bei späteren Releases höhere Versionen benutzen. Man muss lediglich dann in [`./code/golang/go.mod`](./code/golang/go.mod) die Version hochstellen und die Requirements nochmals installieren lassen.) Und einige Packages werden benötigt. Letztere lassen sich mittels -```bash -./scripts/build.sh --lang go --mode setup -``` -installieren. - -### Ausführung ### - -#### Für das Python-Projekt #### - -```bash -pushd code/python/src; ## <- auf Pfad mit main.py wechseln - -## Anzeigen der Hilfsanleitung: -python3 main.py -h; # linux, OSX -py -3 main.py -h; # Windows -## Algorithmus auf Fälle in code/config.yml ausführen: -python3 main.py run [--debug]; # linux, OSX -py -3 main.py run [--debug]; # Windows -## NOTE: --debug = Infos über Schritte zeigen -## NOTE: --colour true/false = schaltet Farbenmodus ein/aus - -popd; ## <- zum vorherigen Pfad zurückwechseln -``` -Oder man erstelle ein bash Skript wie `run.sh`, trage die Befehle da ein und führe -```bash -chmod +x run.sh; # nur einmalig nötig -./run.sh -``` -aus. - -#### Für das Golang-Projekt #### - -Zuerst den Artefakt kompilieren: -```bash -./scripts/build.sh --lang go --mode dist; -## oder: -go build -o "dist/ads" "code/golang/main.go"; -``` -und dann mit dem gebauten Artefakt arbeiten: -```bash -dist/ads # startet Programm im interaktiven Modus -dist/ads help; # zeigt Hilfsanleitung -dist/ads version; # zeigt Version -dist/ads run [--debug]; # Algorithmus auf Fälle in code/config.yml ausführen -dist/ads run [--debug] --it; # startet Programm im interaktiven Modus -## NOTE: --debug = Infos über Schritte zeigen -## NOTE: --colour true/false = schaltet Farbenmodus ein/aus -``` - -**ANMERKUNG.** Ich habe versucht in beiden Projekten alle unnötigen Komplikationen von den Algorithmen auszublenden. Dennoch kann es durchaus der Fall sein, dass die Python-Implementierung wesentlich einfacher zu verstehen ist als die Go-Implementierung. Das Go-Projekt wurde v. a. deshalb entwickelt, da man mit Python mit _Pointers_ (»Zeiger«, siehe Woche 3) nicht arbeiten kann. Dennoch versuche ich, beide Projekten parallel auf einem ähnlichen Stand zu halten. Beide Projekte sind außerdem so konzipiert, dass sie Inputs gleichen Formats (d. h. die **config.yml** Datei) akzeptieren. +In den Unterordnern + [`code/golang`](./code/golang) + und + [`code/python](./code/python) +kann man Codeprojekte finden. +Dort kann man konkrete Implementierung der Algorithmen ansehen +und ggf. auch auf echte Daten austesten. diff --git a/code/golang/README.md b/code/golang/README.md new file mode 100644 index 0000000..810d0c6 --- /dev/null +++ b/code/golang/README.md @@ -0,0 +1,66 @@ +# ADS - Golang-Projekt # + +**Golang** ist einer relativ moderne Programmiersprache, die immer populärer wird, und viele Vorteile anbietet. + +Dieses Projekt ist erneut kein nötiger Bestandteil des Kurses, +sondern nur für Wissbegierige gedacht. +Zunächst bietet sich an, sich die Algorithmen im Unterordner [`internal/algorithms`](./internal/algorithms) anzuschauen, +z. B. [`internal/algorithms/search/binary/binary.go`](./internal/algorithms/search/binary/binary.go) für den Binärsuchalgorithmus, +ohne irgendetwas installieren zu müssen. + +**HINWEIS 1:** _Bei meiner Implementierung kann es zu leichten Abweichungen kommen. Bitte **stets** an dem Material im VL-Skript sich orientieren. Der Hauptzweck der Code-Projekte besteht darin, dass Wissbegierige die Algorithmen konkret ausprobieren können. Alle theoretischen Aspekte werden jedoch im Skript und in den Übungen ausführlicher erklärt._ + +Den Code kann man auch durch die u. s. Anweisungen selber austesten. + +**HINWEIS 2:** _Während hier die Anweisungen ausführlich sind und klappen sollten, +bitte nur auf eigener Gewähr diesen Code benutzen._ + +## Systemvoraussetzungen ## + +- **Bash**. Dies kommt mit OSX (Terminal) und Linux. Für Windows-User braucht man [git-for-windows](https://gitforwindows.org) zu installieren, was auch bash mit installiert. +- [**go**](https://golang.org/dl/) Version **1.17.x**. (Man kann bestimmt bei späteren Releases höhere Versionen benutzen. Man muss lediglich dann in [`go.mod`](./go.mod) die Version hochstellen.) + +## Setup/Kompilieren ## + +1. Requirements (Packages) einmalig mittels + + ```bash + go get $( cat requirement ) + ``` + + installieren. Oder man führe den Befehl + für jede Zeil aus [`requirements`](./requirements) aus, +
+ z. B. `go get github.com/akamensky/argparse@v1.3.1` + installiert eines der Packages. + +2. Codetree mittels + + ```bash + go build -o ads main.go + ``` + + kompilieren. +
+ Statt `-o ads` kann man einen beliebigen Pfad verwenden. +
+ In Unix kann man `-o path/to/folder/ads` verwenden. +
+ In Windows kann man `-o path/to/folder/ads.exe` verwenden. + +## Ausführung ## + +Nach Kompilieren wird ein Artefakt namens `ads` gebaut, +den man per Doppelklick ausführen kann. +Alternativ kann man in der Konsole im Ordner mit dem Artefakt einfach + +```bash +ads +``` + +ausführen. + +## Entwicklung ## + +Gerne kann man den Code benutzen, in einem eigenen Repository weiter entwickeln, +und mit den im Kurs präsentierten Algorithmen und Fällen herumexperimentieren. diff --git a/code/python/README.md b/code/python/README.md new file mode 100644 index 0000000..3b92f8b --- /dev/null +++ b/code/python/README.md @@ -0,0 +1,61 @@ +# ADS - Python-Projekt # + +**Python** ist eine sehr verbreitete Sprache, die eine Riesencommunity hat. +Sie ist sehr populär unter Wissenschaftlern und Ingenieuren. +Ein Vorteil mit Python ist, dass man sehr leicht und schnell Prototypen entwickeln kann. + +Dieses Projekt ist erneut kein nötiger Bestandteil des Kurses, +sondern nur für Wissbegierige gedacht. +Zunächst bietet sich an, sich die Algorithmen im Unterordner [`src/algorithms`](./src/algorithms) anzuschauen, +z. B. [`src/algorithms/search/binary.py`](./src/algorithms/search/binary.py) für den Binärsuchalgorithmus, +ohne irgendetwas installieren zu müssen. + +**HINWEIS 1:** _Bei meiner Implementierung kann es zu leichten Abweichungen kommen. Bitte **stets** an dem Material im VL-Skript sich orientieren. Der Hauptzweck der Code-Projekte besteht darin, dass Wissbegierige die Algorithmen konkret ausprobieren können. Alle theoretischen Aspekte werden jedoch im Skript und in den Übungen ausführlicher erklärt._ + +Den Code kann man auch durch die u. s. Anweisungen selber austesten. + +**HINWEIS 2:** _Während hier die Anweisungen ausführlich sind und klappen sollten, +bitte nur auf eigener Gewähr diesen Code benutzen._ + +### Systemvoraussetzungen ### + +- Python version 3.x.x (idealerweise zumindest 3.9.5) + +## Setup ## + +Requirements (Packages) einmalig mittels + +```bash +python3 -m pip install -r requirements; # linux, osx +py -3 -m pip install -r requirements; # Windows +``` + +installieren lassen. + +## Ausführung ## + +Zum Anzeigen der Hilfsanleitung in einer Konsole folgenden Befehl ausführen + +```bash +python3 src/main.py help; # linux, OSX +py -3 src/main.py help; # Windows +``` + +Zur Ausführung der Algorithmen auf Fälle in der [Config-Datei](./../config.yml) +in einer Konsole folgenden Befehl ausführen + +```bash +python3 src/main.py run; # linux, OSX +py -3 src/main.py run; # Windows +``` + +Mit dem `--debug` Flag werden Infos über Schritte mit angezeigt. +
+Mit dem `--colour true/false` Argument wird der Farbenmodus ein-/ausgeschaltet. +
+Mit dem `--config path/to/config` Argument kann man andere Config-Dateien verwenden. + +## Entwicklung ## + +Gerne kann man den Code benutzen, in einem eigenen Repository weiter entwickeln, +und mit den im Kurs präsentierten Algorithmen und Fällen herumexperimentieren.