From: Peter Schaefer Date: Thu, 31 May 2012 21:15:58 +0000 (+0200) Subject: +python testSkript X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=e889afe1eb06c2ef6ba45575da5f9d1ffb3cf623;p=zahlenTA.git +python testSkript --- diff --git a/.gitignore b/.gitignore index 1cb5a9a..13b2522 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ *.ind *.ilg *.backup +*.py.?.* diff --git a/UE/python/09.py b/UE/python/09.py new file mode 100644 index 0000000..9be1ccd --- /dev/null +++ b/UE/python/09.py @@ -0,0 +1,15 @@ + +def f(x,m=120): + return (2*x**3-3*x**2+5*x+6)%m + +for i in range(3): + print i, + print f(i,3) + +for i in range(5): + print i, + print f(i,5) + +for i in range(8): + print i, + print f(i,8) \ No newline at end of file diff --git a/UE/python/latex.py b/UE/python/latex.py new file mode 100644 index 0000000..43ae622 --- /dev/null +++ b/UE/python/latex.py @@ -0,0 +1 @@ +jobname="test" diff --git a/UE/python/lib.py b/UE/python/lib.py new file mode 100644 index 0000000..894e6e5 --- /dev/null +++ b/UE/python/lib.py @@ -0,0 +1,107 @@ +import math + +# Berechnet die Summe aller vielfachen von base bis max +def summandial(m,base=1): + m = int(m/base)*base + return m*(m+base)/(2*base) + +# Gibt die naechst kleine Fib zu max zurueck +def fib(m): + a,b = 1,2 + while b < m: + a,b = b,a+b + return a + +# Gibt die Liste aller Fib zur naechst kleineren Fib von max zurueck +def fibV(m): + a = [1, 2] + i = 1; + while a[i] < m: + a.append(a[i] + a[i-1]) + i = i+1 + return a + +# Gibt die Summe aller d-fachen Fib zu max zurueck (d=2) +def fibS(m,d=2): + a,b = 1,2 + s = 0 + while b < m: + a,b = b,a+b + if a%d == 0: + s = s +a + return s + +# Gibt alle Primzahlen bis n zurueck +def primes(n): + if n < 2: + return 0 + p = range(1,n+1,2) + q = len(p); + p[0] = 2; + for k in range(3,int(n**.5+1),2): + if p[(k-1)/2]: + for i in range(((k*k-1)/2),q,k): + p[i] = 0 + return filter(lambda x:x>0,p) + +# Gibt alle Primfaktoren von n zurueck +def factor(n): + if n<4: + return [n] + p = primes(int(n**.5+1)) + f = [] + while n>1: + p = filter(lambda x:n%x==0,p) + if(p==[]): + f.append(n) + break + f[len(f):] = p + n = n/prod(p) + f.sort() + return f + +# Gibt alle Primfaktoren von n als vektor mit Vielfachheit zurueck +def factorD(n): + if n<4: + return {n:1} + p = primes(int(n**.5+1)) + f = {} + while n>1: + p = filter(lambda x:n%x==0,p) + if(p==[]): + f[n] = 1 + break + for i in range(len(p)): + if(p[i] in f): + f[p[i]]=f[p[i]]+1 + else: + f[p[i]]=1 + n = n/prod(p) +# f.sort() + return f + +# Multipliziert alle Werte aus Liste seq auf +def prod(seq): + return reduce(lambda x,y:x*y, seq, 1) + +# generiert Pyth tripel +def pythtrip(u,v): + return [u*u-v*v, 2*u*v, u*u+v*v] + +#Binomial Koeffizient +def binomial(n,k): + return math.factorial(n)/(math.factorial(k)*math.factorial(n-k)) + +def ebinomial(seq): + vek = [1, 0] + for i in seq: + for j in range(len(vek)-1,0,-1): + vek[j] = vek[j]+vek[j-1]*i + vek[len(vek):]=[0] + + return vek[:len(vek)-1] + +#Anzahl der Teiler +def divisors(num): + test = factorD(num) + return sum(ebinomial(map(lambda x:test[x],test.keys()))[1:])+1 \ No newline at end of file diff --git a/UE/python/python.sty b/UE/python/python.sty new file mode 100644 index 0000000..1183d0f --- /dev/null +++ b/UE/python/python.sty @@ -0,0 +1,105 @@ +%% This program is free software; you can redistribute it and/or +%% modify it under the terms of the GNU General Public License +%% as published by the Free Software Foundation; either version 2 +%% of the License, or (at your option) any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program; if not, write to the Free Software +%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +%% +%% Author: Martin R. Ehmsen, ehmsen@imada.sdu.dk. +%% Department of Mathematics and Computer Science, +%% University of Southern Denmark, DK +%% +%% You can find an online copy of the GPL at +%% http://www.gnu.org/copyleft/gpl.html . +%% +%% Note: shell-escape needs to be activated for this to work. +%% This can either be done by passing -shell-escape as an option to +%% latex or by adding/changing "shell_escape = t" in your texmf.cnf . + +% 0.2 -> 0.21: Moved \newwrite\@module from \@writemodule and out, since +% no more than 15 \newwrites are allowed (and the previous version created a new +% every time \@writemodule was called. + +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesPackage{python}[2007/06/07 v0.21 Python in LaTeX] + +\newwrite\@out +\newwrite\@module + +\begingroup \catcode `|=0 \catcode `[=1 +\catcode`]=2 \catcode `\{=12 \catcode `\}=12 +\catcode`\\=12 |gdef|@xpython#1\end{python}[|immediate|write|@out[#1]|end[python]] +|endgroup + +\def\python{\kernel@ifnextchar [{\@python}{\@python[]}} + + +\newcounter{py@codenum} +\def\@python[#1]{% +\stepcounter{py@codenum} +\gdef\@pythoninclude{#1} +\immediate\openout\@out=\jobname.py +\newlinechar='15 +\begingroup \catcode`\^^M=12 % +\let\do\@makeother\dospecials\obeyspaces% +\@xpython} + +\def\endpython{% +\endgroup +\immediate\closeout\@out +\@writemodule +\immediate\write18{python\space\jobname.py > \jobname.py.\thepy@codenum.out 2> \jobname.py.\thepy@codenum.err} +\immediate\input\jobname.py.\thepy@codenum.out} + + + +% \def\@python[#1]{% +% \gdef\@pythoninclude{#1} +% \immediate\openout\@out=\jobname.py +% \newlinechar='15 +% \begingroup \catcode`\^^M=12 % +% \let\do\@makeother\dospecials\obeyspaces% +% \@xpython} +% +% \def\endpython{% +% \endgroup +% \immediate\closeout\@out +% \@writemodule +% \immediate\write18{cat \@pythoninclude\space\jobname.py | python > \jobname.py.out 2> \jobname.py.err} +% \immediate\input\jobname.py.out} +% %\immediate\write{\begin{verbatim}} +% %\immediate\input\jobname.py.err +% %\immediate\write{\end{verbatim}}} + +\def\@writemodule{% +\immediate\openout\@module=latex.py +\immediate\write\@module{jobname="\jobname"} +\immediate\closeout\@module} + +% BUGS: +% 1. If anything gets send to stderr then it should be included +% in \begin{verbatim}...\end{verbatim} to be properly displayed +% +% \immediate\write18{cat \@pythoninclude\space\jobname.py | python > \jobname.py.out 2>\jobname.py.err} +% +% 2. Watch out for indentation done by aucTeX in Emacs +% +% 3. Let the package accept a "final version" option, such +% that the output of each python run is saved such that it can be +% inserted into the document by hand +% (conference, journals are not likely to compile with +% shell_escape or have python). +% +% \gdef\@prepython{} +% \def\prepython#1{% +% \gdef\@prepython{#1} +% } +% sed -e 's/^ //g' cluster.py +% \immediate\write18{\@prepython\space\jobname.py > \ \ No newline at end of file diff --git a/UE/python/test.pdf b/UE/python/test.pdf new file mode 100644 index 0000000..f85be3c Binary files /dev/null and b/UE/python/test.pdf differ diff --git a/UE/python/test.tex b/UE/python/test.tex new file mode 100644 index 0000000..e5af741 --- /dev/null +++ b/UE/python/test.tex @@ -0,0 +1,16 @@ +%& -shell-escape +\documentclass[a4paper,10pt,fleqn]{article} +\usepackage{template} +\usepackage{python} + +\begin{document} + \begin{python} + print "hello" + \end{python} + + \begin{python} + print "hello2" + \end{python} + +\end{document} +