INPUT   = ./sample.txt
#INPUT  = ./sample_kurz.txt
#INPUT  = ./sample_mittel.txt
VERIFY  = /etc/passwd

# Ein Directory für Temporäres, kann jederzeit gelöscht werden
TMP     = ./tmp

MEASURE = /usr/bin/time --format "result: %C | %e | %S | %U | %x | %P"
DIFF    = diff
RM      = rm -f
CPP     = g++
COMPRESS=cd ./output/; ls | grep -v .gz | xargs gzip -9

runall: 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 \
       020 022 023 024 025 026 027 028 029 032 033 034 035 036 037 038 039 040 041 \
       042 043 044 045 046 047 048 052 053 054 055 057 058 059 060 061 062 063

dorun: allclean
       ulimit -t 120; make -k runall


allclean:
       $(RM) ./output/*
       $(RM) ./error/*

stat:
       cat error/* | grep "^result" | sed 's/^.*\.\/0/0/;s/\.[^\|]*//' | sort -n -k2 -r

# Programm 001 -- angepasst von: Peter

001:
       $(MEASURE) python ./001.py -a < $(INPUT) > ./output/001.txt 2> ./error/001.txt
       $(COMPRESS)

001-verify:
       $(DIFF) ./output/001.txt $(VERIFY)

001-clean:
       $(RM) ./output/001.txt


# Programm 002 -- Perl -- angepasst von: Nils

002:
       $(MEASURE) ./002.pl < $(INPUT) > ./output/002.txt 2> ./error/002.txt
       $(COMPRESS)

002-verify:
       $(DIFF) ./output/002.txt $(VERIFY)

002-clean:
       $(RM) ./output/002.txt


# Programm 003 -- Perl -- angepasst von: Nils

003:
       $(MEASURE) ./003.pl < $(INPUT) > ./output/003.txt 2> ./error/003.txt
       $(COMPRESS)

003-verify:
       $(DIFF) ./output/003.txt $(VERIFY)

003-clean:
       $(RM) ./output/003.txt


# Programm 004 -- Ruby angepasst von: Nils

004:
       $(MEASURE) ./004.rb $(INPUT) > ./output/004.txt 2> ./error/004.txt
       $(COMPRESS)

004-verify:
       $(DIFF) ./output/004.txt $(VERIFY)

004-clean:
       $(RM) ./output/004.txt


# Programm 005 -- Groovy angepasst von: Nils

005:
       $(MEASURE) groovy ./o005.groovy $(INPUT) > ./output/005.txt 2> ./error/005.txt
       $(COMPRESS)

005-verify:
       $(DIFF) ./output/005.txt $(VERIFY)

005-clean:
       $(RM) ./output/005.txt



# Programm 006 -- Tcl -- angepasst von: Nils und Achim

006:
       $(MEASURE) ./006.tcl $(INPUT) > ./output/006.txt 2> ./error/006.txt
       $(COMPRESS)

006-verify:
       $(DIFF) ./output/006.txt $(VERIFY)

006-clean:
       $(RM) ./output/006.txt


# Programm 007 -- Perl -- angepasst von: Nils

007:
       $(MEASURE) ./007.pl -f $(INPUT) > ./output/007.txt 2> ./error/007.txt
       $(COMPRESS)

007-verify:
       $(DIFF) ./output/007.txt $(VERIFY)

007-clean:
       $(RM) ./output/007.txt


# Programm 009 -- Ruby -- angepasst von: Nils

009:
       $(MEASURE) ruby ./009.rb < $(INPUT) > ./output/009.txt 2> ./error/009.txt
       $(COMPRESS)

009-verify:
       $(DIFF) ./output/009.txt $(VERIFY)

009-clean:
       $(RM) ./output/009.txt


# Programm 010 -- Python -- angepasst von: Nils

010:
       $(MEASURE) ./010.py < $(INPUT) > ./output/010.txt 2> ./error/010.txt

010-verify:
       $(DIFF) ./output/010.txt $(VERIFY)

010-clean:
       $(RM) ./output/010.txt


# Programm 011 -- Python -- angepasst von: Nils

011:
       $(MEASURE) ./011.py $(INPUT) > ./output/011.txt 2> ./error/011.txt

011-verify:
       $(DIFF) ./output/011.txt $(VERIFY)

011-clean:
       $(RM) ./output/011.txt


# Programm 012 -- Python -- angepasst von: Nils

012:
       $(MEASURE) ./012.py < $(INPUT) > ./output/012.txt 2> ./error/012.txt
       $(COMPRESS)

012-verify:
       $(DIFF) ./output/012.txt $(VERIFY)

012-clean:
       $(RM) ./output/012.txt


# Programm 013 -- angepasst von: Nils

013:
       $(MEASURE) ./013.py < $(INPUT) > ./output/013.txt 2> ./error/013.txt

013-verify:
       $(DIFF) ./output/013.txt $(VERIFY)

013-clean:
       $(RM) ./output/013.txt


# Programm 014 -- angepasst von: Nils

014:
       $(MEASURE) ./014.pl $(INPUT) > ./output/014.txt 2> ./error/014.txt

014-verify:
       $(DIFF) ./output/014.txt $(VERIFY)

014-clean:
       $(RM) ./output/014.txt


# Programm 015 -- Java angepasst von: Nils

015:
       cp ./015.java ./tmp/FootnoteProcessor.java
       cd ./tmp; javac FootnoteProcessor.java
       cd ./tmp; $(MEASURE) java FootnoteProcessor $(INPUT) > ../output/015.txt 2> ../error/015.txt
       $(COMPRESS)

015-verify:
       $(DIFF) ./output/015.txt $(VERIFY)

015-clean:
       $(RM) ./output/015.txt


# Programm 016 -- angepasst von Peter

016:
       $(MEASURE) python ./016.py $(INPUT) > ./output/016.txt 2> ./error/016.txt

016-verify:
       $(DIFF) ./output/016.txt $(VERIFY)

016-clean:
       $(RM) ./output/016.txt


# Programm 017 -- noch nicht angepasst (bitte entfernen) angepasst von:

017:
       $(MEASURE) ./017.tcl -t $(INPUT) > ./output/017.txt 2> ./error/017.txt

017-verify:
       $(DIFF) ./output/017.txt $(VERIFY)

017-clean:
       $(RM) ./output/017.txt


# Programm 018 -- noch nicht angepasst (bitte entfernen) angepasst von:

018:
       cd ./tmp; unzip -o -q ../018.java-eclipse.zip
       cd ./tmp/BibOrder/dist; $(MEASURE) java -jar BibOrder.jar $(INPUT) > ../../../output/018.txt 2> ../../../error/018.txt

018-verify:
       $(DIFF) ./output/018.txt $(VERIFY)

018-clean:
       $(RM) ./output/018.txt


# Programm 020 -- Java angepasst von: Nils

020:
       cp ./020.java ./tmp/textnumbers.java
       cd ./tmp; javac textnumbers.java
       cd ./tmp; $(MEASURE) java textnumbers $(INPUT) > ../output/020-stdout.txt 2> ../error/020.txt && mv *.neu.txt ./output/020.txt
       $(COMPRESS)

020-verify:
       $(DIFF) ./output/020.txt $(VERIFY)

020-clean:
       $(RM) ./output/020.txt


# Programm 021 -- noch nicht angepasst (bitte entfernen) angepasst von: Nils
# geht aber noch nicht, weil das Tool fest "footnotes.txt" einliest.
# das Programm enthält außer der fehlenden Angabe der Codierung auch noch einen Syntaxfehler in Zeile 44, Peter gedenkt es aus der Wertung rauszuschmeißen!

021:
       $(MEASURE) python ./021.py < $(INPUT) > ./output/021.txt 2> ./error/021.txt

021-verify:
       $(DIFF) ./output/021.txt $(VERIFY)

021-clean:
       $(RM) ./output/021.txt


# Programm 022 -- angepasst von: Nils

022:
       $(MEASURE) ./022.py < $(INPUT) > ./output/022.txt 2> ./error/022.txt

022-verify:
       $(DIFF) ./output/022.txt $(VERIFY)

022-clean:
       $(RM) ./output/022.txt


# Programm 023 -- angepasst von: Nils

023:
       $(MEASURE) ./023.awk < $(INPUT) > ./output/023.txt 2> ./error/023.txt

023-verify:
       $(DIFF) ./output/023.txt $(VERIFY)

023-clean:
       $(RM) ./output/023.txt


# Programm 024 -- noch nicht angepasst (bitte entfernen) angepasst von:

024:
       $(MEASURE) ./024.rb $(INPUT) > ./output/024.txt 2> ./error/024.txt
       $(COMPRESS)

024-verify:
       $(DIFF) ./output/024.txt $(VERIFY)

024-clean:
       $(RM) ./output/024.txt


# Programm 025 -- angepasst von: Peter

025:
       $(MEASURE) python ./025.py  $(INPUT) > ./output/025.txt 2> ./error/025.txt

025-verify:
       $(DIFF) ./output/025.txt $(VERIFY)

025-clean:
       $(RM) ./output/025.txt



# Programm 026 -- angepasst von: Nils

026:
       $(MEASURE) ./026.rb $(INPUT) > ./output/026.txt 2> ./error/026.txt

026-verify:
       $(DIFF) ./output/026.txt $(VERIFY)

026-clean:
       $(RM) ./output/026.txt


# Programm 027 -- angepasst von: Peter

027:
       $(MEASURE) ./027.awk < $(INPUT) > ./output/027.txt 2> ./error/027.txt
       $(COMPRESS)

027-verify:
       $(DIFF) ./output/027.txt $(VERIFY)

027-clean:
       $(RM) ./output/027.txt


# Programm 028 -- angepasst von: Peter

028:
       $(MEASURE) ./028.sh < $(INPUT) > ./output/028.txt 2> ./error/028.txt

028-verify:
       $(DIFF) ./output/028.txt $(VERIFY)

028-clean:
       $(RM) ./output/028.txt


# Programm 029 -- noch nicht angepasst (bitte entfernen) angepasst von:

029:
       $(MEASURE) ./029.tcl $(INPUT) > ./output/029.txt 2> ./error/029.txt

029-verify:
       $(DIFF) ./output/029.txt $(VERIFY)

029-clean:
       $(RM) ./output/029.txt


# Programm 031 -- bricht bei mir mit 3 Compilation-Errors ab: Peter

031:
       $(MEASURE) ./031.pl < $(INPUT) > ./output/031.txt 2> ./error/031.txt

031-verify:
       $(DIFF) ./output/031.txt $(VERIFY)

031-clean:
       $(RM) ./output/031.txt


# Programm 032 -- angepasst von: Peter

032:
       $(MEASURE) python ./032.py $(INPUT) > ./output/032.txt 2> ./error/032.txt
       $(COMPRESS)

032-verify:
       $(DIFF) ./output/032.txt $(VERIFY)

032-clean:
       $(RM) ./output/032.txt


# Programm 033 -- angepasst von: Nils

033:
       $(MEASURE) ./033.pl $(INPUT) > ./output/033.txt 2> ./error/033.txt

033-verify:
       $(DIFF) ./output/033.txt $(VERIFY)

033-clean:
       $(RM) ./output/033.txt


# Programm 034 -- noch nicht angepasst (bitte entfernen) angepasst von:

034:
       $(MEASURE) ./034.pl < $(INPUT) > ./output/034.txt 2> ./error/034.txt

034-verify:
       $(DIFF) ./output/034.txt $(VERIFY)

034-clean:
       $(RM) ./output/034.txt


# Programm 035 -- angepasst von: Peter

035:
       $(MEASURE) ./035.pl $(INPUT) > ./output/035.txt 2> ./error/035.txt
       $(COMPRESS)

035-verify:
       $(DIFF) ./output/035.txt $(VERIFY)

035-clean:
       $(RM) ./output/035.txt


# Programm 036 -- angepasst von: Peter

036:
       $(MEASURE) ./036.x86 < $(INPUT) > ./output/036.txt 2> ./error/036.txt

036-verify:
       $(DIFF) ./output/036.txt $(VERIFY)

036-clean:
       $(RM) ./output/036.txt


# Programm 037 -- angepasst von: Nils

037:
       ghc -o 037.bin -Wall -O2 --make 037.hs
       $(MEASURE) ./037.bin $(INPUT) > ./output/037.txt 2> ./error/037.txt

037-verify:
       $(DIFF) ./output/037.txt $(VERIFY)

037-clean:
       $(RM) ./output/037.txt



# Programm 039 -- angepasst von: Peter

039:
       $(MEASURE) ./039.awk < $(INPUT) > ./output/039.txt 2> ./error/039.txt
       $(COMPRESS)

039-verify:
       $(DIFF) ./output/039.txt $(VERIFY)

039-clean:
       $(RM) ./output/039.txt


# Programm 040 -- noch nicht angepasst (bitte entfernen) angepasst von:

040:
       $(MEASURE) ./040.py $(INPUT) > ./output/040.txt 2> ./error/040.txt

040-verify:
       $(DIFF) ./output/040.txt $(VERIFY)

040-clean:
       $(RM) ./output/040.txt


# Programm 041 -- angepasst von: Peter

041:
       $(MEASURE) ./041.pl < $(INPUT) > ./output/041.txt 2> ./error/041.txt

041-verify:
       $(DIFF) ./output/041.txt $(VERIFY)

041-clean:
       $(RM) ./output/041.txt


# Programm 042 -- angepasst von: Peter und Nils

042:
       cp ./042.main.cs ./042.class.cs ./tmp
       cd ./tmp; gmcs ./042.main.cs ./042.class.cs; mv 042.main.exe ..
       $(MEASURE) mono ./042.main.exe $(INPUT) > ./output/042.txt 2> ./error/042.txt

042-verify:
       $(DIFF) ./output/042.txt $(VERIFY)

042-clean:
       $(RM) ./output/042.txt



# Programm 045 -- angepasst von: Peter

045:
       $(MEASURE) ./045.py < $(INPUT) > ./output/045.txt 2> ./error/045.txt

045-verify:
       $(DIFF) ./output/045.txt $(VERIFY)

045-clean:
       $(RM) ./output/045.txt


# Programm 046 -- angepasst von: Peter

046:
       $(MEASURE) ./046.py $(INPUT) > ./output/046.txt 2> ./error/046.txt
       $(COMPRESS)

046-verify:
       $(DIFF) ./output/046.txt $(VERIFY)

046-clean:
       $(RM) ./output/046.txt


# Programm 047 -- angepasst von: Peter

047:
       $(MEASURE) ./047.py  $(INPUT) > ./output/047.txt 2> ./error/047.txt

047-verify:
       $(DIFF) ./output/047.txt $(VERIFY)

047-clean:
       $(RM) ./output/047.txt


# Programm 051 -- Java angepasst von: Nils
# compiled nicht ...

051:
       cp ./051.java ./tmp/Indexer.java
       cd ./tmp; javac Indexer.java
       cd ./tmp; $(MEASURE) java Indexer ../$(INPUT) > ../output/051.txt 2> ../error/051.txt

051-verify:
       $(DIFF) ./output/051.txt $(VERIFY)

051-clean:
       $(RM) ./output/051.txt


# Programm 054 -- angepasst von: Peter

054:
       $(MEASURE) ./054.pl  $(INPUT)  ./output/054.txt ./output/054b.txt 2> ./error/054.txt

054-verify:
       $(DIFF) ./output/054.txt $(VERIFY)

054-clean:
       $(RM) ./output/054.txt


# Programm 055 -- angepasst von: Peter

055:
       $(MEASURE) python ./055.py  $(INPUT) > ./output/055.txt 2> ./error/055.txt
       $(COMPRESS)

055-verify:
       $(DIFF) ./output/055.txt $(VERIFY)

055-clean:
       $(RM) ./output/055.txt


# Programm 057 -- noch nicht angepasst (bitte entfernen) angepasst von:

057:
       $(MEASURE) ruby ./057.rb < $(INPUT) > ./output/057.txt 2> ./error/057.txt

057-verify:
       $(DIFF) ./output/057.txt $(VERIFY)

057-clean:
       $(RM) ./output/057.txt


# Programm 058 -- angepasst von: Nils

058:
       $(MEASURE) ./058.rb $(INPUT) > ./output/058.txt 2> ./error/058.txt

058-verify:
       $(DIFF) ./output/058.txt $(VERIFY)

058-clean:
       $(RM) ./output/058.txt


# Programm 059 -- angepasst von: Peter

059:
       $(MEASURE) ./059.pl $(INPUT) > ./output/059.txt 2> ./error/059.txt
       $(COMPRESS)

059-verify:
       $(DIFF) ./output/059.txt $(VERIFY)

059-clean:
       $(RM) ./output/059.txt


# Programm 060 -- angepasst von: Peter

060:
       $(MEASURE) ./060.pl $(INPUT) > ./output/060.txt 2> ./error/060.txt

060-verify:
       $(DIFF) ./output/060.txt $(VERIFY)

060-clean:
       $(RM) ./output/060.txt


# Programm 061 -- ngepasst von: Peter

061:
       $(MEASURE) ./061.pl $(INPUT) > ./output/061.txt 2> ./error/061.txt
       $(COMPRESS)

061-verify:
       $(DIFF) ./output/061.txt $(VERIFY)

061-clean:
       $(RM) ./output/061.txt


# Programm 062 -- angepasst von: Peter

062:
       $(MEASURE) ./062.pl $(INPUT) > ./output/062.txt 2> ./error/062.txt

062-verify:
       $(DIFF) ./output/062.txt $(VERIFY)

062-clean:
       $(RM) ./output/062.txt


# Programm 063 -- angepasst von: Nils

063:
       $(MEASURE) ./063.rb $(INPUT) > ./output/063.txt 2> ./error/063.txt
       $(COMPRESS)

063-verify:
       $(DIFF) ./output/063.txt $(VERIFY)

063-clean:
       $(RM) ./output/063.txt


# ------------------------------------------


# groovy:
005:


# Programm 008 -- angepasst von: Nils
008:
       $(CPP) -o 008.bin 008.cpp
       $(MEASURE) ./008.bin $(INPUT) > ./output/008.txt 2> ./error/008.txt
       $(COMPRESS)

008-verify:
       $(DIFF) ./output/008.txt $(VERIFY)

008-clean:
       $(RM) ./output/008.txt


# Programm 019 -- angepasst von: Nils
019:
       $(CPP) -O2 -lpcrecpp 019.cpp -o 019.bin
       $(MEASURE) ./019.bin $(INPUT) > ./output/019.txt 2> ./error/019.txt

019-verify:
       $(DIFF) ./output/019.txt $(VERIFY)

019-clean:
       $(RM) ./output/019.txt


# Programm 030 -- angepasst von: Nils
# Offenbar braucht man dazu boost-1.35
030:
       $(CPP) -lboost_filesystem -lboost_program_options -o 030.bin 030.cpp
       $(MEASURE) ./030.bin $(INPUT) > ./output/030.txt 2> ./error/030.txt
       $(COMPRESS)

030-verify:
       $(DIFF) ./output/030.txt $(VERIFY)

030-clean:
       $(RM) ./output/030.txt


# Programm 038 -- angepasst von: Nils
038:
       $(CPP) -o 038.bin 038.cpp -lboost_regex
       $(MEASURE) ./038.bin $(INPUT) > ./output/038.txt 2> ./error/038.txt

038-verify:
       $(DIFF) ./output/038.txt $(VERIFY)

038-clean:
       $(RM) ./output/038.txt


# Programm 043 -- angepasst von: Nils
043:
       flex -o 043.cpp 043.f
       $(CPP) -o 043.bin 043.cpp -lstdc++ -lfl
       $(MEASURE) ./043.bin $(INPUT) > ./output/043.txt 2> ./error/043.txt
       $(COMPRESS)

043-verify:
       $(DIFF) ./output/043.txt $(VERIFY)

043-clean:
       $(RM) ./output/043.txt


# Programm 044 -- angepasst von: Nils
044:
       flex 044.ll && mv ./footnotes.cpp 044.cpp
       $(CPP) -O2 -pipe -o 044.bin 044.cpp
       $(MEASURE) ./044.bin < $(INPUT) > ./output/044.txt 2> ./error/044.txt
       $(COMPRESS)

044-verify:
       $(DIFF) ./output/044.txt $(VERIFY)

044-clean:
       $(RM) ./output/044.txt


# Programm 048 -- angepasst von: Nils
048:
       $(CPP) -o 048.bin 048.cpp
       $(MEASURE) ./048.bin $(INPUT) > ./output/048.txt 2> ./error/048.txt

048-verify:
       $(DIFF) ./output/048.txt $(VERIFY)

048-clean:
       $(RM) ./output/048.txt


# Programm 050 -- angepasst von: Nils
050:
       ocamlopt -o ./050.bin str.cmxa 050.ml
       $(MEASURE) ./050.bin $(INPUT) > ./output/050.txt 2> ./error/050.txt
       $(COMPRESS)

050-verify:
       $(DIFF) ./output/050.txt $(VERIFY)

050-clean:
       $(RM) ./output/050.txt


# Programm 052 -- angepasst von: Nils
052:
       $(CPP) -Wall -O2 -o 052.bin 052.cpp -lboost_regex-mt
       $(MEASURE) ./052.bin $(INPUT) > ./output/052.txt 2> ./error/052.txt

052-verify:
       $(DIFF) ./output/052.txt $(VERIFY)

052-clean:
       $(RM) ./output/052.txt


# Programm 053 -- angepasst von: Nils
053:
       $(CPP) -o 053.bin 053.cpp
       $(MEASURE) ./053.bin -f $(INPUT) > ./output/053.txt 2> ./error/053.txt
       $(COMPRESS)

053-verify:
       $(DIFF) ./output/053.txt $(VERIFY)

053-clean:
       $(RM) ./output/053.txt