-
Notifications
You must be signed in to change notification settings - Fork 0
/
problem.d.ts
80 lines (76 loc) · 2 KB
/
problem.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
export const CONFIG_VERSION = 1000;
interface Testcase {
input: string;
answer: string;
}
interface Problem {
/**
* version number of this definition
*
* will add 1000 when making a breaking change
*/
version: number;
/**
* unique id of this problem
*
* separate id using `:` to mark a namespace
*
* recommended to use [a-z0-9/-] only to make a good id
*
* @example etheroj:example/hello-world
* @example etheroj:p1001
*/
id: string;
/** readable name of the problem */
name: string;
/** readable source of the problem */
source?: string;
/**
* description of problem
*
* can be the problem body or a link to the problem body
*/
description?: string;
/**
* time limitation for a single test case run, in milliseconds
* @default 2048
*/
timeLimit?: number;
/**
* space limitation for a single test case run, in MB
* @default 128
*/
spaceLimit?: number;
/**
* path to one or more possible solution files
*
* use key to match languages like `cpp`, `python`
* @example
* {
* "python": "solution.py",
* "cpp": "solution.cpp"
* }
*
* @example "solution.cpp"
*/
solution?: Record<string, string> | string;
testcases?: Testcase[];
/**
* in which environment shall this problem to be used
*
* Add a `!` if you want to disable some defaultly enabled environments
*
* for some environments (that is enabled by default),
* if no theirs flags were defined in target,
* they will simply skip this problem when it does not contain all required
* data, but if you explicitly define their flags, they will fail.
*
* @example ['!test', 'playground'] // skip tests and can run in playground
*/
target?: string[]
/**
* additional data.
*/
config?: Record<string, unknown>;
}
export type { Testcase, Problem };