Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Generator de teste  (Citit de 1939 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
grafconex
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« : Aprilie 13, 2008, 20:50:14 »

spuneti-mi si mie va rog cum se face un generator de teste care sa ruleze progamul de mai multe ori, sa dea teste random si sa verifice prin brute force?
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #1 : Aprilie 13, 2008, 21:13:14 »

pai :

un program de generator de teste random:

dai afisezi numerele random in fisierul .in (sa zicem ca gen este numit gen.exe)

sursa: (sa zicem ca este sursa.exe) care afiseaza raspunsul in nume.out

brute-force-ul care afiseaza in .ok si se numeste bf.exe (il poti baga chiar in generatorul de teste random)

si verificator care compara ok-ul generat de brute-force cu out-ul generat de sursa ta.

si daca esti pe windows(e mai simplu de cat pe linux) faci asa:

creezi un fisier .bat in care scrii asta:

Cod:
@echo off
call gen.exe
call bf.exe
call sursa.exe
call verif.exe
pause

 si il rulezi de cate ori vrei tu
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #2 : Aprilie 14, 2008, 01:14:32 »

si pe linux e la fel de usor, creezi fisierul eval.sh si scrii asta:
Cod:
#/bin/bash

./gen
./brut-force
./sursa
./verif
read a;
./eval.sh

In loc de verif poti sa faci "diff fisier.out fisier.ok".
ca sa il rulezi scrii in consola
Cod:
 sh eval.sh 
Dupa fiecare test dai un enter si trece la urmatorul. Cand vrei sa termini dai Ctrl+C (sau daca nu merge inchizi pur si simplu terminalu, mie imi mai face figuri uneori pe ubuntu 7.10)
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #3 : Aprilie 14, 2008, 08:13:01 »

Ai putea face verificarea si generarea direct in bash... e mai putin de scris decat in C/Pascal

daca de exemplu vrei sa compari fisierele out si ok ignorand spatiile in plus
Cod:
if [ -z "`diff -wB fisier.ok fisier.out`" ]; then
        echo OK;
else
        echo BAD;
fi
(diff nu afiseaza nimic daca fisierele sunt identice, operatoru "-z" verifica daca sirul care urmeaza este vid)

Ca sa generezi N numere random poti face:
Cod:
N=10;
for ((i=0; $i < $N; i++)) do
    echo -n "$(( $RANDOM % 1000 )) " >> fisier.in;
done

devilkind: pe prima linie ai scris deja ca fisierul se ruleaza cu /bin/bash, e de ajuns ./eval.sh ca sa rulezi
Memorat
wickedman
Echipa infoarena
Nu mai tace
*****

Karma: 227
Deconectat Deconectat

Mesaje: 670



Vezi Profilul WWW
« Răspunde #4 : Aprilie 15, 2008, 01:51:43 »

diff nu afiseaza nimic daca fisierele sunt identice

Incearca `diff -qs`
Memorat
piku
Strain


Karma: 6
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #5 : Aprilie 15, 2008, 17:04:47 »

devilkind: pe prima linie ai scris deja ca fisierul se ruleaza cu /bin/bash, e de ajuns ./eval.sh ca sa rulezi
Trebuie sa il faci executabil inainte:
Cod:
chmod +x eval.sh
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines