diff options
Diffstat (limited to 'de-de')
| -rw-r--r-- | de-de/LOLCODE-de.html.markdown | 2 | ||||
| -rw-r--r-- | de-de/dynamic-programming-de.html.markdown | 77 | ||||
| -rw-r--r-- | de-de/go-de.html.markdown | 2 | ||||
| -rw-r--r-- | de-de/make-de.html.markdown | 7 | ||||
| -rw-r--r-- | de-de/markdown-de.html.markdown | 4 | ||||
| -rw-r--r-- | de-de/nix-de.html.markdown | 28 | ||||
| -rw-r--r-- | de-de/python3-de.html.markdown | 14 | 
7 files changed, 106 insertions, 28 deletions
| diff --git a/de-de/LOLCODE-de.html.markdown b/de-de/LOLCODE-de.html.markdown index 155c5657..57eb0ff8 100644 --- a/de-de/LOLCODE-de.html.markdown +++ b/de-de/LOLCODE-de.html.markdown @@ -1,6 +1,6 @@  ---  language: LOLCODE -filename: learnLOLCODE.lol +filename: learnLOLCODE-de.lol  contributors:      - ["abactel", "https://github.com/abactel"]  translators: diff --git a/de-de/dynamic-programming-de.html.markdown b/de-de/dynamic-programming-de.html.markdown new file mode 100644 index 00000000..801d2514 --- /dev/null +++ b/de-de/dynamic-programming-de.html.markdown @@ -0,0 +1,77 @@ +--- +category: Algorithms & Data Structures +name: Dynamic Programming +contributors: +    - ["Akashdeep Goel", "http://github.com/akashdeepgoel"] +translators: +    - ["Henrik Jürges", "http://github.com/santifa"] +lang: de-de +--- + +# Dynamische Programmierung + +## Einführung +Dynamische Programmierung ist eine leistungsfähige Technik, die zur Lösung +einer bestimmten Klasse von Problemen verwendet wird. +Die Idee ist sehr einfach, wenn Sie ein Problem mit der gegebenen Eingabe +gelöst haben, dann speichern Sie das Ergebnis für die spätere Referenz, um zu +vermeiden, das gleiche Problem noch einmal zu lösen. + +Denken Sie immer daran! +"Diejenigen, die sich nicht an die Vergangenheit erinnern können,  +sind dazu verdammt, sie zu wiederholen." + +## Wege zur Lösung solcher Probleme + +1. *Top-Down*: Lösen Sie das gegebene Problem, indem Sie es aufteilen. +Wenn Sie sehen, dass das Problem bereits gelöst ist, geben Sie einfach die +gespeicherte Antwort zurück. Wenn es nicht gelöst wurde, lösen Sie es und +speichern Sie die Antwort. Dieser Ansatz ist leicht zu verfolgen und sehr +intuitiv. Er wird als Memoization bezeichnet. + +2. *Bottom-Up*: Analysieren Sie das Problem und beobachten Sie, in welcher +Reihenfolge die Teilprobleme gelöst werden können. Beginnen Sie mit der +Lösung vom trivialen Teilproblem bis zum gegebenen Problem. Dabei wird +sichergestellt, dass die Teilprobleme vor der Problemlösung gelöst werden. +Dies wird als Dynamische Programmierung bezeichnet. + +## Ein Beispiel für Dynamische Programmierung + +Das Problem mit der längsten ansteigenden Subsequenz besteht darin, +die längste ansteigende Subsequenz einer gegebenen Sequenz zu finden. +Gegeben die Sequenz `S= {a1, a2, a3, a3, a4,..............., an-1, an }`, +müssen wir die größte Teilmenge finden, so daß für alle `j` und `i`, `j<i` +in der Teilmenge `aj<ai` gilt. +Zuerst müssen wir bei jedem Index i den Wert der längsten Subsequenzen (LSi) +finden, wobei das letzte Element der Sequenz ai ist. Dann wäre die größte LSi +die längste Subsequenz in der gegebenen Sequenz. Am Anfang wird der LSi mit +eins belegt, da ai ein Element der Sequenz (Letztes Element) ist. +Dann ist für alle `j` mit  `j<i` und `aj<ai`, so dass wir den größten LSj finden +und zum LSi hinzufügen. Der Algorithmus hat eine Laufzeit von *O(n2)*. + +Pseudocode zur Bestimmung der Länge der am längsten ansteigenden Subsequenz: +Die Komplexität des Algorithmus könnte durch eine bessere Datenstruktur anstelle +von Arrays reduziert werden. Das Speichern von Vorgänger-Array's und Variablen +wie `largest_sequences_so_far` und dessen Index würde eine Menge Zeit sparen. + +Ein ähnliches Konzept könnte auch bei der Suche nach dem längsten Weg +in gerichteten azyklischen Graphen angewandt werden. +```python +for i=0 to n-1 +    LS[i]=1 +    for j=0 to i-1 +        if (a[i] >  a[j] and LS[i]<LS[j]) +            LS[i] = LS[j]+1 +for i=0 to n-1 +    if (largest < LS[i]) +``` + +### Einige bekannte DP Probleme + +- Floyd Warshall Algorithm - [Tutorial and C Program source code](http://www.thelearningpoint.net/computer-science/algorithms-all-to-all-shortest-paths-in-graphs---floyd-warshall-algorithm-with-c-program-source-code) +- Integer Knapsack Problem - [Tutorial and C Program source code](http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---the-integer-knapsack-problem) +- Longest Common Subsequence - [Tutorial and C Program source code](http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---longest-common-subsequence) + +## Online Ressourcen + +* [codechef](https://www.codechef.com/wiki/tutorial-dynamic-programming) diff --git a/de-de/go-de.html.markdown b/de-de/go-de.html.markdown index 817cb4ae..9409e181 100644 --- a/de-de/go-de.html.markdown +++ b/de-de/go-de.html.markdown @@ -94,7 +94,7 @@ Zeilenumbrüche beinhalten.` // Selber Zeichenketten-Typ      // Arrays haben bei Kompile-Zeit festgelegte Größen      var a4 [4]int           // Ein Array mit 4 ints, alle mit Initialwert 0 -    a3 := [...]int{3, 1, 5} // Ein Array mit 4 ints, Initialwerte wie angezeigt +    a3 := [...]int{3, 1, 5} // Ein Array mit 3 ints, Initialwerte wie angezeigt      // "slices" haben eine dynamische Größe. Arrays und Slices haben beide ihre      // Vorzüge, aber slices werden viel häufiger verwendet diff --git a/de-de/make-de.html.markdown b/de-de/make-de.html.markdown index 22c14a69..bc5c7bcb 100644 --- a/de-de/make-de.html.markdown +++ b/de-de/make-de.html.markdown @@ -2,6 +2,7 @@  language: make
  contributors:
      - ["Robert Steed", "https://github.com/robochat"]
 +    - ["Stephan Fuhrmann", "https://github.com/sfuhrm"]
  translators:
    - ["Martin Schimandl", "https://github.com/Git-Jiro"]
  filename: Makefile-de
 @@ -58,7 +59,7 @@ file2.txt file3.txt: file0.txt file1.txt  	touch file3.txt
  # Make wird sich beschweren wenn es mehrere Rezepte für die gleiche Regel gibt.
 -# Leere Rezepte zählen nicht und können dazu verwendet werden weitere 
 +# Leere Rezepte zählen nicht und können dazu verwendet werden weitere
  # Voraussetzungen hinzuzufügen.
  #-----------------------------------------------------------------------
 @@ -182,9 +183,9 @@ echo: name2 = Sara # Wahr innerhalb der passenden Regel und auch innerhalb  # Ein paar Variablen die von Make automatisch definiert werden.
  echo_inbuilt:
  	echo $(CC)
 -	echo ${CXX)}
 +	echo ${CXX}
  	echo $(FC)
 -	echo ${CFLAGS)}
 +	echo ${CFLAGS}
  	echo $(CPPFLAGS)
  	echo ${CXXFLAGS}
  	echo $(LDFLAGS)
 diff --git a/de-de/markdown-de.html.markdown b/de-de/markdown-de.html.markdown index 2c838660..cccf5e68 100644 --- a/de-de/markdown-de.html.markdown +++ b/de-de/markdown-de.html.markdown @@ -14,7 +14,7 @@ Syntax, in der sich Dokumente leicht schreiben *und* lesen lassen. Außerdem  sollte Markdown sich leicht nach HTML (und in andere Formate) konvertieren  lassen. -```markdown +```md  <!-- Markdown ist eine Obermenge von HTML - jede valide HTML-Datei ist also  automatisch valides Markdown - was heisst dass wir jedes HTML-Element (also auch  Kommentare) in Markdown benutzen können, ohne dass der Parser sie verändert. @@ -253,4 +253,4 @@ Ganz schön hässlich | vielleicht doch lieber | wieder aufhören  Mehr Informationen gibt es in [John Gruber's offiziellem Blog-Post](http://daringfireball.net/projects/markdown/syntax)  und bei Adam Pritchards [grandiosem Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet). -Infos zu GitHub Flavored Markdown [gibt es hier](https://help.github.com/articles/github-flavored-markdown).
\ No newline at end of file +Infos zu GitHub Flavored Markdown [gibt es hier](https://help.github.com/articles/github-flavored-markdown). diff --git a/de-de/nix-de.html.markdown b/de-de/nix-de.html.markdown index 8c78ffbc..79b60d20 100644 --- a/de-de/nix-de.html.markdown +++ b/de-de/nix-de.html.markdown @@ -58,7 +58,7 @@ with builtins; [    #  Strings    #========================================= -  "String Literale sind in Gänsefüßchen." +  "String Literale sind in Anführungszeichen."    "      String Literale können mehrere  @@ -87,7 +87,7 @@ with builtins; [    #  Paths    #========================================= -  # Nix besitzt einen primitven Datentyp für Pfade +  # Nix besitzt einen primitiven Datentyp für Pfade    /tmp/tutorials/learn.nix    # Ein relativer Pfad wird beim Parsing zu einem absoluten Pfad aufgelöst, @@ -170,7 +170,7 @@ with builtins; [    #  Listen    #========================================= -  # Listen werden durck eckige Klammern gekennzeichnet. +  # Listen werden durch eckige Klammern gekennzeichnet.    (length [1 2 3 "x"])    #=> 4 @@ -218,18 +218,18 @@ with builtins; [    ({ a = 1; } // { b = 2; })    #=> { a = 1; b = 2; } -  # Werte auf der rechten Seite überschrieben die Werte auf der linken Seite. +  # Werte auf der rechten Seite überschreiben die Werte auf der linken Seite.    ({ a = 1; b = 2; } // { a = 3; c = 4; })    #=> { a = 3; b = 2; c = 4; } -  # Das Schlüsselwort rec bezeichenet ein "rekursives Set", in der sich Attribute +  # Das Schlüsselwort rec bezeichenet ein "rekursives Set", in dem sich Attribute    # aufeinander beziehen können.    (let a = 1; in     { a = 2; b = a; }.b)    #=> 1    (let a = 1; in rec { a = 2; b = a; }.b)    #=> 2 -  # Verschachetelte Sets können stückweise definiert werden. +  # Verschachtelte Sets können stückweise definiert werden.    {      a.b   = 1;      a.c.d = 2; @@ -238,7 +238,7 @@ with builtins; [    #=> { d = 2; e = 3; }    # Die Nachkommen eines Attributs können in diesem Feld nicht zugeordnet werden, wenn -  # das Attribut selbst nicht zugeweisen wurde.  +  # das Attribut selbst nicht zugewiesen wurde.     {      a = { b = 1; };      a.c = 2; @@ -249,7 +249,7 @@ with builtins; [    #  With    #========================================= -  # Der Körper eines Sets Blocks wird mit der Zurodnung eines Satzes an die Variablen gebunden. +  # Der Körper eines Sets Blocks wird mit der Zuordnung eines Satzes an die Variablen gebunden.    (with { a = 1; b = 2; };      a + b)    # => 3 @@ -263,7 +263,7 @@ with builtins; [    # Die erste Linie diese Tutorials startet mit "with builtins;",    # weil builtins ein Set mit allen eingebauten     # Funktionen (length, head, tail, filter, etc.) umfasst. -  # Das erspart uns beispielseweise "builtins.length" zu schreiben,  +  # Das erspart uns beispielsweise "builtins.length" zu schreiben,     # anstatt nur "length". @@ -318,10 +318,10 @@ with builtins; [    #  Impurity    #========================================= -  # Da die Wiederholbarkeit von Builds für den Nix Packetmangager entscheidend ist, +  # Da die Wiederholbarkeit von Builds für den Nix Packetmanager entscheidend ist,    # werden in der Nix Sprache reine funktionale Elemente betont. Es gibt aber ein paar     # unreine Elemente. -  # Du kannst auf Umgebungsvarialben verweisen. +  # Du kannst auf Umgebungsvariablen verweisen.    (getEnv "HOME")    #=> "/home/alice" @@ -331,7 +331,7 @@ with builtins; [    #=> trace: 1    #=> 2 -  # Du kannst Dateien in den Nix store schreiben. Obwohl unrein, kannst du dir relativ sicher sein, +  # Du kannst Dateien in den Nix Store schreiben. Obwohl unrein, kannst du dir relativ sicher sein,    # dass es sicher ist, da der Dateiname aus dem Hash des Inhalts abgeleitet wird.    # Du kannst Dateien von überall lesen. In diesem Beispiel schreiben wir Dateien in den Store    # und lesen wieder davon. @@ -339,14 +339,14 @@ with builtins; [      [filename (builtins.readFile filename)])    #=> [ "/nix/store/ayh05aay2anx135prqp0cy34h891247x-foo.txt" "hello!" ] -  # Außerdem können wir Dateien in den Nix Store downloaden. +  # Außerdem können wir Dateien in den Nix Store herunterladen.    (fetchurl "https://example.com/package-1.2.3.tgz")    #=> "/nix/store/2drvlh8r57f19s9il42zg89rdr33m2rm-package-1.2.3.tgz"  ]  ``` -### Weitere Resourcen +### Weitere Ressourcen  * [Nix Manual - Nix expression language]    (https://nixos.org/nix/manual/#ch-expression-language) diff --git a/de-de/python3-de.html.markdown b/de-de/python3-de.html.markdown index 33897225..b313727c 100644 --- a/de-de/python3-de.html.markdown +++ b/de-de/python3-de.html.markdown @@ -152,7 +152,7 @@ print("Ich bin Python. Schön, dich kennenzulernen!")  some_var = 5    # kleinschreibung_mit_unterstrichen entspricht der Norm  some_var #=> 5 -# Das Ansprechen einer noch nicht deklarierte Variable löst eine Exception aus. +# Das Ansprechen einer noch nicht deklarierten Variable löst eine Exception aus.  # Unter "Kontrollstruktur" kann noch mehr über  # Ausnahmebehandlung erfahren werden.  some_unknown_var  # Löst einen NameError aus @@ -225,7 +225,7 @@ a, b, c = (1, 2, 3)     # a ist jetzt 1, b ist jetzt 2 und c ist jetzt 3  # Tupel werden standardmäßig erstellt, wenn wir uns die Klammern sparen  d, e, f = 4, 5, 6  # Es ist kinderleicht zwei Werte zu tauschen -e, d = d, e     # d is now 5 and e is now 4 +e, d = d, e     # d ist nun 5 und e ist nun 4  # Dictionarys (Wörterbucher) speichern Schlüssel-Werte-Paare @@ -379,8 +379,8 @@ with open("meineDatei.txt") as f:          print(line)  # Python bietet ein fundamentales Konzept der Iteration. -# Das Objekt, auf das die Interation, also die Wiederholung einer Methode angewandt wird heißt auf Englisch "iterable". -# Die range Method gibt ein solches Objekt aus. +# Das Objekt, auf das die Iteration, also die Wiederholung einer Methode angewandt wird heißt auf Englisch "iterable". +# Die range Methode gibt ein solches Objekt aus.  filled_dict = {"one": 1, "two": 2, "three": 3}  our_iterable = filled_dict.keys() @@ -396,8 +396,8 @@ our_iterable[1]  # TypeError  # Ein iterable ist ein Objekt, das weiß wie es einen Iteratoren erschafft.  our_iterator = iter(our_iterable) -# Unser Iterator ist ein Objekt, das sich merkt, welchen Status es geraden hat während wir durch es gehen. -# Das jeweeils nächste Objekt bekommen wir mit "next()" +# Unser Iterator ist ein Objekt, das sich merkt, welchen Status es gerade hat während wir durch es gehen. +# Das jeweils nächste Objekt bekommen wir mit "next()"  next(our_iterator)  #=> "one"  # Es hält den vorherigen Status @@ -442,7 +442,7 @@ def keyword_args(**kwargs):  # Rufen wir es mal auf, um zu sehen, was passiert  keyword_args(big="foot", loch="ness") #=> {"big": "foot", "loch": "ness"} -# Wir können beides gleichzeitig machem, wenn wir wollen +# Wir können beides gleichzeitig machen, wenn wir wollen  def all_the_args(*args, **kwargs):      print(args)      print(kwargs) | 
