From 6a645ad80d3865afe68926e2263a69cd913d5d14 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Mon, 4 Nov 2013 12:32:07 +0100 Subject: [PATCH] misc --- pstricks/car-bottom/Makefile | 37 ++++++++++++ pstricks/car-bottom/Readme.md | 3 + pstricks/car-bottom/car-bottom.png | Bin 0 -> 46387 bytes pstricks/car-bottom/car-bottom.tex | 15 +++++ source-code/Minted-Haskell/Arithmetik.hs | 49 ++++++++++++++++ source-code/Minted-Haskell/Makefile | 9 +++ source-code/Minted-Haskell/Minted-Haskell.tex | 34 +++++++++++ source-code/Minted-Haskell/Sort.hs | 54 ++++++++++++++++++ tikz/topology-continuous-mapping/Makefile | 31 ++++++++++ tikz/topology-continuous-mapping/Readme.md | 3 + .../topology-continuous-mapping.png | Bin 0 -> 11427 bytes .../topology-continuous-mapping.tex | 53 +++++++++++++++++ 12 files changed, 288 insertions(+) create mode 100644 pstricks/car-bottom/Makefile create mode 100644 pstricks/car-bottom/Readme.md create mode 100644 pstricks/car-bottom/car-bottom.png create mode 100644 pstricks/car-bottom/car-bottom.tex create mode 100644 source-code/Minted-Haskell/Arithmetik.hs create mode 100644 source-code/Minted-Haskell/Makefile create mode 100644 source-code/Minted-Haskell/Minted-Haskell.tex create mode 100644 source-code/Minted-Haskell/Sort.hs create mode 100644 tikz/topology-continuous-mapping/Makefile create mode 100644 tikz/topology-continuous-mapping/Readme.md create mode 100644 tikz/topology-continuous-mapping/topology-continuous-mapping.png create mode 100644 tikz/topology-continuous-mapping/topology-continuous-mapping.tex 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 0000000000000000000000000000000000000000..302ef7ac21f644d7731f86a859684ac1e35dc197 GIT binary patch literal 46387 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 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 0000000000000000000000000000000000000000..a10304c6b04779d9c20de0fabd01a1cc1de5e19c GIT binary patch literal 11427 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 literal 0 HcmV?d00001 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}