Logo Simon Knott Software Developer, DJ & Producer

Der Binärbaum ist eine nicht lineare Datenstruktur. Er ist eine Unterform des Baumes und somit auch des gerichteten Graphen. Zu Beginn sollten einige grundlegende Begriffe des Baumes geklärt werden.

Beispiel BinärBaum

Read more...

Die Liste ist die letzte dynamische Datenstruktur der Reihe. Im Gegensatz zu Stack und Queue kann man in ihr an jeder Stelle einfügen, entfernen und lesen.

Die Liste stellt dafür ein aktuelles Element bereit, welches entweder zum Beginn, zum Ende oder zum nächsten Element verschieben kann.

Read more...

Die Queue ist eine weitere Dynamische Listenstruktur.
Sie ist nach einer Menschenschlange modelliert und befolgt deshalb das Prinzip First in, First Out (FIFO): Möchte man ein neues Element anfügen, wird dieses hinten angehängt.
Entfernt man ein Element weg, so entfernt man immer das vorderste.
So kommt der Mensch, der sich zuerst anstellt, auch zuerst dran.

Queue

Read more...

Der Stack, zu deutsch Stapel, ist eine dynamische Listenstruktur. Vorstellen kann man sich dies ganz gut wie einen Stapel Klausuren:
Ich kann nur die oberste sehen, sie entfernen, ich kann weitere Klausuren darauf legen und ich kann sehen, ob der Stapel leer ist.
Ich weiß nicht, wie viele Klausuren im Stapel enthalten sind.

Wenn ich eine Klausur auf den Stapel auflege, wird diese schneller aus dem Stapel entfernt werden als die, die unter ihr liegt. Dieses Konzept nennt sich “Last in, First out” (“LIFO”) und charakterisiert den Stapel.

LIFO

Read more...

Der Bundeswettbewerb Informatik ist ein Jugendwettbewerb des gleichnamigen Vereins mit Sitz in Bonn. Der BWInf stellt den Wettbewerb für die eher fortgeschrittenen Schüler dar, die durch den Informatik Biber Interesse an Informatik gewonnen haben.

Die erste Runde kann man wie jedes Jahr in Gruppen bearbeiten, ich habe Aufgabe 3 übernommen.

Zu den Aufgaben
Die gesamte Dokumentation kann man sich hier anschauen.
Der Quellcode wurde auf Github zur Verfügung gestellt.

Aufgabenstellung

Dreiecke

Read more...

Backtracking ist eine mit der Rekursion verwandte Problemlösungsstrategie.

Beim Backtracking probiert man jede mögliche Lösung aus, überprüft allerdings mit jedem Schritt die Abbruchbedingungen des Problems. Ist eine der Abbruchbedingungen gegeben, wird dieser “Pfad” nicht weiter verfolgt. Dabei ist der Algorithmus immer sehr ähnlich aufgebaut:

Pseudocode

backtrack()
  WENN Problem gelöst
    GIB Lösung ZURÜCK
  
  Finde Element im Ursprungszustand
  DURCHLAUFE jeden Zustand
    WENN Zustand zulässig
      Setze Zustand um

      WENN backtrack() Lösung findet
        GIB Lösung ZURÜCK
      
      Mache Zustand Rückgängig
  
  GIB keine Lösung ZURÜCK

Read more...

magMerge is a small tool aimed at magazine publishers. It converts PDF files to double-paged images, so you can use them for your website or social media.

The tool is written in both Java and Kotlin - GUI is done by Java, Image Processing is done by Kotlin.
You can find the source code at GitHub.com/Skn0tt/magMerge.

magMerge Logo

Read more...

Das Damen-Problem spielt sich auf einem Schachfeld der Abmessungen NNN*N ab. Wir möchten auf diesem Schachfeld NN Damen so platzieren, dass keine Bedrohung vorliegt.

Beispiel 4 Damen

Read more...
See all Posts