]>
iEval git - gruntmaster-page.git/blob - gruntmaster-problem
4 use Gruntmaster
::Data qw
/insert_problem remove_problem set_problem_meta problems/;
6 use IO
::Prompter
[ -style
=> 'bold', '-stdio', '-verbatim' ];
7 use File
::Slurp qw
/read_file/;
8 use Term
::ANSIColor qw
/RED RESET/;
10 ##################################################
17 my ($meta, $name, $prefix) = @_;
18 my $filename = prompt
'$prefix filename', -complete
=> 'filenames';
19 $meta->{files
}{$name}{content
} = read_file
$filename;
20 $meta->{files
}{$name}{format
} = prompt
'$prefix format', -menu
=> [keys Gruntmaster
::Page
::Log
::FORMAT_EXTENSION
()];
21 $meta->{files
}{$name}{name
} = prompt
"$prefix filename [$filename]", -default => $filename;
27 my $contest = prompt
'Contest';
28 local $Gruntmaster::Data
::contest
= $contest if $contest;
29 my $name = prompt
'Problem name';
30 my $level = prompt
'Problem level';
31 my $statement = read_file prompt
'File with problem statement', -complete
=> 'filenames';
33 $meta{generator
} = prompt
'Generator', -menu
=> "File\nRun\nUndef";
34 $meta{runner
} = prompt
'Runner', -menu
=> "File\nVerifier\nInteractive";
35 $meta{judge
} = prompt
'Judge', -menu
=> "Absolute\nPoints";
36 $meta{testcnt
} = prompt
'Test count', '-i';
38 if ($meta{generator
} eq 'File') {
39 my $prefix = prompt
'[Generator::File] Input file prefix';
40 $meta{infile
}[$_ - 1] = read_file
"$prefix$_.in" for 1 .. $meta{testcnt
};
43 prompt_file \
%meta, gen
=> '[Generator::Run] Generator' if $meta{generator
} eq 'Run';
45 if ($meta{runner
} eq 'File') {
46 my $prefix = prompt
'[Runner::File] Output file prefix';
47 $meta{okfile
}[$_ - 1] = read_file
"$prefix$_.ok" for 1 .. $meta{testcnt
};
48 $meta{tests
}[$_ - 1] = prompt
"[Runner::File] Score for test ${_} [10]", '-i', -default => 10 for 1 .. $meta{testcnt
};
51 prompt_file \
%meta, ver
=> '[Runner::Verifier] Verifier' if $meta{runner
} eq 'Verifier';
53 if ($meta{runner
} eq 'Interactive') {
54 say RED
, 'WARNING: Runner::Interactive is experimental', RESET
;
55 prompt_file
int => '[Runner::Interactive] Interactive verifier';
58 insert_problem
$id => name
=> $name, level
=> $level, statement
=> $statement;
59 set_problem_meta
$id => \
%meta;
64 local $Gruntmaster::Data
::contest
= $contest if $contest;
73 local $_ = shift or goto &cmd_list
;
76 ##################################################
79 my $cmd = 'cmd_' . shift;
80 cmd_help
unless exists $main::{$cmd};
81 $cmd->(@ARGV) if exists $main::{$cmd};
90 gruntmaster-problem - shell interface to Gruntmaster 6000 problems
94 gruntmaster-problem add problem_id
95 gruntmaster-problem list
96 gruntmaster-problem rm problem_id
97 gruntmaster-problem show problem_id
This page took 0.065174 seconds and 5 git commands to generate.