Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # To jest sprawdzarka.sh
- # Wersja 2.3 (by Stanisław Szcześniak)
- # Żeby uruchomić, wpisz w konsoli sprawdzarka.sh i postępuj zgodnie z instrukcjami z ekranu
- # Jeżeli twój program nazywa się pro.cpp, to testy muszą być z prefkisem pro (np. pro1b.in i por1b.out) i kończyć się na na .in i .out
- # Testy muszą być w katalogu, w którym odpalasz sprawdzarkę.
- # Instalacja :
- # Windows : nie działa
- # Linux : zapisz ten plik w /usr/local/bin, następnie nadaj mu prawa do wykonywania :
- # cp sprawdzarka.sh /usr/local/bin/
- # chmod +x /usr/local/bin/sprawdzarka.sh
- # oprócz tego byłoby dobrze mieć jakiegoś Makefilea w katalogu domowym (~)
- # Można też odpalać sprawdzarkę : sprawdzarka.sh prog
- string="NULL"
- if [ "$#" -ne 1 ]; then
- echo -n -e "\e[36mWpisz skrtótową nazwę zadania (np. mro dla mro.cpp i mro-wykonywalny) "
- read string
- echo -n -e "\e[0m"
- else
- string=$1
- echo -e "\e[33mWczytano program $string \e[0m!"
- fi
- if [ ! -f "$string.cpp" ]; then
- echo "!Plik $string.cpp nie istnieje w tym katalogu -->> a to oznacza, że chyba pomyliłeś programy :)"
- exit
- fi
- echo -n -e "\e[36m"
- FILE=~/Makefile;
- if test -f $FILE; then
- make -f ~/Makefile $string
- else
- echo "Plik ~/Makefile nie istnieje, więc skompiluję jakoś inaczej :)"
- g++ -o $string -O2 -Wall $string.cpp
- fi
- echo -n -e "\e[36mCzy pokazywać czasy wykonania na poszczególnych testach ?(0/1) :: \e[0m"
- read czy
- b=1
- testy=0
- zrobione_testy=0
- brak_outow=0
- testy_z_wa=""
- for var in $string*.in
- do
- czlon=${#var}
- czlon=$[czlon-3]
- if [ ! -f "${var:0:$czlon}.out" ]; then
- echo -n -e "\e[95m"
- echo -n $var
- echo -n " :: "
- echo -e "RE -->> nie ma odpowiedzi do tego testu\e[0m"
- ((brak_outow++))
- continue
- fi
- if (($czy == 0))
- then ./$string < $var > .temporary
- else
- echo -n -e "\e[36m"
- /usr/bin/time -f '%U' ./$string < $var > .temporary | echo -n
- echo -n -e "\e[36m"
- fi
- testy=$[testy + 1]
- diff -w -q .temporary ${var:0:$czlon}.out >& /dev/null
- b=$?
- if (($b == 0))
- then
- echo -n -e "\e[32m"
- echo -n $var
- echo -n " :: "
- echo -e "OK\e[0m"
- zrobione_testy=$[zrobione_testy+1]
- else
- if (($testy!=$[zrobione_testy+1]))
- then
- testy_z_wa="$testy_z_wa, $var"
- else
- testy_z_wa="$testy_z_wa $var"
- fi
- echo -n -e "\e[31m"
- echo -n $var
- echo -n " :: "
- echo -e "WA\e[0m"
- #echo -e "\e[33mWzorcówka:"
- #cat .temporary
- #echo -n -e "\e[0m"
- #echo -e "\e[34mBrut:"
- #cat ${var:0:$a}.out
- #echo -n -e "\e[0m"
- fi
- done
- echo -n -e "\e[36m"
- echo -n "Udało się zrobić ::"
- echo -n $zrobione_testy
- echo -n "/"
- echo $testy
- if (($testy!=$zrobione_testy))
- then
- echo -n -e "\e[31mTwój program dostał WA na :: "
- echo $testy_z_wa
- echo -e -n "\e[0m"
- fi
- if (($brak_outow != 0))
- then
- echo Ale nie bylo też outów do $brak_outow testów
- fi
- echo -n -e "\e[0m"
- exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement