diff --git a/pstricks/car-bottom/Makefile b/pstricks/car-bottom/Makefile new file mode 100644 index 0000000..20e6c7e --- /dev/null +++ b/pstricks/car-bottom/Makefile @@ -0,0 +1,37 @@ +SOURCE = car-bottom +DELAY = 80 +DENSITY = 300 +WIDTH = 512 + +make: + latex $(SOURCE).tex -output-format=pdf + dvips -D600 $(SOURCE).dvi -o $(SOURCE).ps + ps2pdf $(SOURCE).ps $(SOURCE).pdf + make clean + +clean: + rm -rf $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot *.dvi *.ps + +gif: + pdfcrop $(SOURCE).pdf + convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif + make clean + +png: + make + make svg + inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png + +transparentGif: + convert $(SOURCE).pdf -transparent white result.gif + make clean + +svg: + make + #inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg + pdf2svg $(SOURCE).pdf $(SOURCE).svg + # Necessary, as pdf2svg does not always create valid svgs: + inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg + rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg + inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg + rm $(SOURCE)2.svg diff --git a/pstricks/car-bottom/Readme.md b/pstricks/car-bottom/Readme.md new file mode 100644 index 0000000..3279a26 --- /dev/null +++ b/pstricks/car-bottom/Readme.md @@ -0,0 +1,3 @@ +Compiled example +---------------- +![Example](car-bottom.png) diff --git a/pstricks/car-bottom/car-bottom.png b/pstricks/car-bottom/car-bottom.png new file mode 100644 index 0000000..302ef7a Binary files /dev/null and b/pstricks/car-bottom/car-bottom.png differ diff --git a/pstricks/car-bottom/car-bottom.tex b/pstricks/car-bottom/car-bottom.tex new file mode 100644 index 0000000..2fb8ebd --- /dev/null +++ b/pstricks/car-bottom/car-bottom.tex @@ -0,0 +1,15 @@ +\documentclass{standalone} +\usepackage{pst-solides3d} +\begin{document} +\begin{pspicture}(-4,-2)(3,3) + \psset{viewpoint=80 -60 50,Decran=50} + \psSolid[object=cylindre,h=1,r=1,action=draw*,mode=4,fillcolor=green!20,RotX=90] (+5,+3,0) % Rad vorne rechts + \psSolid[object=cylindre,h=1,r=1,action=draw*,mode=4,fillcolor=green!20,RotX=90] (-5,+3,0) % Rad hinten rechts + \psSolid[object=parallelepiped,a=12,b=3,c=2,action=draw*,fillcolor=yellow!20](0,0,0) % body + \psSolid[object=cylindre,h=1,r=1,action=draw*,mode=4,fillcolor=green!20,RotX=90] (+5,-3,0) % Rad vorne links + \psSolid[object=cylindre,h=1,r=1,action=draw*,mode=4,fillcolor=green!20,RotX=90] (-5,-3,0) % Rad hinten links + \psSolid[object=cylindre,h=6,r=0.1,action=draw*,mode=4,fillcolor=gray!20,RotX=90] (-5,+3,0) % axis back + \psSolid[object=cylindre,h=6,r=0.1,action=draw*,mode=4,fillcolor=gray!20,RotX=90] (+5,+3,0) % axis front + %\axesIIID[showOrigin=false](1,1,1)(3,2,2.5) +\end{pspicture} +\end{document} diff --git a/source-code/Minted-Haskell/Arithmetik.hs b/source-code/Minted-Haskell/Arithmetik.hs new file mode 100644 index 0000000..4382efd --- /dev/null +++ b/source-code/Minted-Haskell/Arithmetik.hs @@ -0,0 +1,49 @@ +module Arithmetik where + + -- Aufgabe 1.1 + -- Berechnung der Potenz durch e-faches multiplizieren von b + -- Benötigt e Rekursionsschritte + pow1 :: Double -> Int -> Double + pow1 b 0 = 1 + pow1 b e = b * (pow1 b (e-1)) + + -- Aufgabe 1.2 + -- Berechnung der Potenz pow2(b,e) = b^e + -- Benötigt O(log_2(e)) Rekursionsschritte + pow2 :: Double -> Int -> Double + pow2 b 0 = 1 + pow2 b e = if odd e + then b * pow2 b (e-1) + else pow2 (b*b) (quot e 2) + + -- Aufgabe 1.3 + -- Berechnung der Potenz pow3(b,e) = b^e mit einer Hilfsfunktion + pow3 :: Double -> Integer -> Double + pow3 b e + | e < 0 = error "Der Exponent muss nicht-negativ sein" + | otherwise = pow3h b e 1 where + pow3h b e acc + | e == 0 = acc + | odd e = pow3h b (e-1) (acc*b) + | otherwise = pow3h (b*b) (quot e 2) acc + + -- Aufgabe 1.4 + -- Suche größte natürliche Zahl x, sodass x^e <= r + -- Prinzipiell könnte e auch Double sein, aber wenn x und e + -- natürliche Zahlen sind, könnte man o.B.d.A r abrunden. + root :: Int -> Int -> Int + root e r = rootH 0 r + where rootH a b + | b-a == 1 = a + | floor (pow1 (fromIntegral(quot (a+b) 2)) e) <= r = rootH (quot (a+b) 2) b + | otherwise = rootH a (quot (a+b) 2) + + -- Aufgabe 1.5: Primzahlcheck + isPrime :: Integer -> Bool + isPrime 0 = False + isPrime 1 = False + isPrime x = not (hasDivisor (root 2 x) 2) + where hasDivisor upperBound i + | i > upperBound = False + | mod x i == 0 = True + | otherwise = hasDivisor upperBound (i+1) diff --git a/source-code/Minted-Haskell/Makefile b/source-code/Minted-Haskell/Makefile new file mode 100644 index 0000000..4dab145 --- /dev/null +++ b/source-code/Minted-Haskell/Makefile @@ -0,0 +1,9 @@ +SOURCE = Minted-Haskell + +make: + pdflatex -shell-escape $(SOURCE).tex -output-format=pdf + pdflatex -shell-escape $(SOURCE).tex -output-format=pdf + make clean + +clean: + rm -rf $(TARGET) *.class *.html *.log *.aux *.out *.glo *.glg *.gls *.ist *.xdy *.1 *.toc *.pyg diff --git a/source-code/Minted-Haskell/Minted-Haskell.tex b/source-code/Minted-Haskell/Minted-Haskell.tex new file mode 100644 index 0000000..78f3502 --- /dev/null +++ b/source-code/Minted-Haskell/Minted-Haskell.tex @@ -0,0 +1,34 @@ +\documentclass[a4paper,12pt]{article} +\usepackage{amssymb} % needed for math +\usepackage{amsmath} % needed for math +\usepackage[utf8]{inputenc} % this is needed for german umlauts +\usepackage[ngerman]{babel} % this is needed for german umlauts +\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf +\usepackage[margin=2cm]{geometry} %layout +\usepackage{minted} % needed for the inclusion of source code + +\usepackage{fancyhdr} +\pagestyle{fancy} +\lhead{Martin Thoma, Tutorium 4} +\rhead{Programmierparadigmen, Blatt 1} + +\begin{document} +\renewcommand{\theFancyVerbLine}{ + \sffamily\textcolor[rgb]{0.5,0.5,0.5}{\scriptsize\arabic{FancyVerbLine}}} +\inputminted[linenos, + numbersep=7pt, + gobble=0, + frame=lines, + framesep=2mm, + label=Arithmetik.hs, + fontsize=\footnotesize, tabsize=4]{haskell}{Arithmetik.hs} +\clearpage +\inputminted[linenos, + numbersep=7pt, + gobble=0, + frame=lines, + framesep=2mm, + label=ColorClassification.java, + fontsize=\footnotesize, tabsize=4]{haskell}{Sort.hs} + +\end{document} diff --git a/source-code/Minted-Haskell/Sort.hs b/source-code/Minted-Haskell/Sort.hs new file mode 100644 index 0000000..6b68ec2 --- /dev/null +++ b/source-code/Minted-Haskell/Sort.hs @@ -0,0 +1,54 @@ +module Sort where + + -- Aufgabe 2 + -- insert list el: sorts an elmenet el into a sorted list + insert :: (Ord t) => [t] -> t -> [t] + insert [] x = [x] + insert [a] x + | x < a = [x, a] + | otherwise = [a, x] + insert (a:b:qs) x + | x < a = [x,a,b] ++ qs + | x < b = [a,x,b] ++ qs + | otherwise = [a,b] ++ insert qs x + + -- sortH q r: Sorts an unsorted list r into a sorted list q + insertH :: (Ord t) => [t] -> [t] -> [t] + insertH q [] = q + insertH q [r] = insert q r + insertH q (r:rest) = insertH (insert q r) rest + + -- insertSort list: sorts list + insertSort :: (Ord t) => [t] -> [t] + insertSort [] = [] + insertSort [a] = [a] + insertSort (a:qs) = insertH [a] qs + + -- Aufgabe 3 + merge :: (Ord t) => [t] -> [t] -> [t] + merge [] x = x + merge x [] = x + merge (x:xs) (y:ys) + | x <= y = x : merge xs (y:ys) + | otherwise = y : merge ys (x:xs) + + mergeSort :: (Ord t) => [t] -> [t] + mergeSort [] = [] + mergeSort [x] = [x] + mergeSort xs = merge (mergeSort top) (mergeSort bottom) where + (top, bottom) = splitAt (div (length xs) 2) xs + + -- Aufgabe 4 + -- Teste + isSorted :: (Ord t) => [t] -> Bool + isSorted [] = True + isSorted [a] = True + isSorted (a:b:xs) + | (a <= b) && isSorted xs = True + | otherwise = False + + insertSortedIsSorted :: (Ord t) => [t] -> Bool + insertSortedIsSorted xs = isSorted(insertSort xs) + + mergeSortedIsSorted :: (Ord t) => [t] -> Bool + mergeSortedIsSorted xs = isSorted(mergeSort xs) diff --git a/tikz/topology-continuous-mapping/Makefile b/tikz/topology-continuous-mapping/Makefile new file mode 100644 index 0000000..46a058e --- /dev/null +++ b/tikz/topology-continuous-mapping/Makefile @@ -0,0 +1,31 @@ +SOURCE = topology-continuous-mapping +DELAY = 80 +DENSITY = 300 +WIDTH = 512 + +make: + pdflatex $(SOURCE).tex -output-format=pdf + make clean + +clean: + rm -rf $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot + +gif: + pdfcrop $(SOURCE).pdf + convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif + make clean + +png: + make + make svg + inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png + +transparentGif: + convert $(SOURCE).pdf -transparent white result.gif + make clean + +svg: + #inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg + pdf2svg $(SOURCE).pdf $(SOURCE).svg + # Necessary, as pdf2svg does not always create valid svgs: + inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg diff --git a/tikz/topology-continuous-mapping/Readme.md b/tikz/topology-continuous-mapping/Readme.md new file mode 100644 index 0000000..d98d2a7 --- /dev/null +++ b/tikz/topology-continuous-mapping/Readme.md @@ -0,0 +1,3 @@ +Compiled example +---------------- +![Example](topology-continuous-mapping.png) diff --git a/tikz/topology-continuous-mapping/topology-continuous-mapping.png b/tikz/topology-continuous-mapping/topology-continuous-mapping.png new file mode 100644 index 0000000..a10304c Binary files /dev/null and b/tikz/topology-continuous-mapping/topology-continuous-mapping.png differ diff --git a/tikz/topology-continuous-mapping/topology-continuous-mapping.tex b/tikz/topology-continuous-mapping/topology-continuous-mapping.tex new file mode 100644 index 0000000..7da8c5a --- /dev/null +++ b/tikz/topology-continuous-mapping/topology-continuous-mapping.tex @@ -0,0 +1,53 @@ +\documentclass[varwidth=true, border=2pt]{standalone} +\usepackage{amsmath,amssymb} +\usepackage{pgfplots} +\usepackage{tikz} +\usepackage{tkz-fct} +\usetikzlibrary{shapes.misc} + +\begin{document} +\tikzset{ + point/.style={ + thick, + draw=gray, + cross out, + inner sep=0pt, + minimum width=4pt, + minimum height=4pt, + }, +} +\begin{tikzpicture} + + \draw[->] (-0.5,0) -- (1.5,0) node [below] {$\mathbb{R}$}; + + \foreach \x in {0,...,1} + \draw (\x,0.1) -- (\x,-0.1) node [below] {\x}; + + + \draw[red] (0.07,0.1) -- (0,0.1) -- (0,-0.1) -- (0.07,-0.1) node [below] {}; + \draw[red] plot [smooth] coordinates{(0.47,0.1) (0.5,0) (0.47,-0.1)}; + + \begin{scope}[shift={(4,0)}] + \draw[thick] (0cm,0cm) circle(1cm); + \draw[thick, red] ([shift={(180:1cm)}]-0.0,0) arc (180:0:1cm); + \draw (0:1cm) node[point, label=right:{$0$}] {}; + %\path node[point, blue, label={[blue,above]{$\overline{a}$}}] (posU) at (-252:1cm) {}; + %\path node[label={[red,left]{$U$}}] at (30:1cm) {}; + \end{scope} + + \coordinate (circleUp) at (2.6, 0.1); + \coordinate (circleDown) at (2.6,-0.1); + \coordinate (numberlineUp) at (1.7, 0.1); + \coordinate (numberlineDown) at (1.7,-0.1); + + \path[->] (numberlineUp) edge [bend left] node[label=$f$] {} (circleUp); + \path[<-] (numberlineDown) edge [bend right] node[label=below:$g$] {} (circleDown); + + %\draw (3.7cm,0cm) node[point, blue, label={[blue,above]{$a$}}] (posA) {}; + %\draw (0.7cm,0cm) node[point, blue, label={[blue,above]{$\pi^{-1}(u)$}}] {}; + %\draw[dashed, blue, thick] plot [smooth] coordinates{(posU) (0.2,-0.8) (2.5,-1) (posA)}; + + %\draw[blue, dashed, thick] (3.7cm,0cm) arc (0:180:1.5 and 0.5); + +\end{tikzpicture} +\end{document}