-
Notifications
You must be signed in to change notification settings - Fork 231
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CS2113-T13-1] MathGenius #22
base: master
Are you sure you want to change the base?
Changes from 113 commits
04910d7
1a757c8
59251be
31e4e12
cd0ec10
6d30892
6f21468
a563082
c755f07
3b68b6a
3161d04
88e5c53
d093f9b
2b4ea98
9f0af63
c71da02
d061e6f
d95be23
6d9861b
fe746f7
0f77729
45b89ae
c945d16
f6b9174
30b9507
ee629bc
fb880a2
1aa0e0b
429d9c1
3e427ed
479257b
98fb1af
4469e1e
b416f4b
590b6b9
a7037e0
4a1f558
e117d1c
a0c578f
f95ed63
5b6f9e1
1ca2f59
982d91d
1ae266d
fa0ea55
40e746c
ac3dcf0
29dd473
5b7fb0e
dd83f61
aa2b9ca
4c8a9c4
83d1958
09d9953
477b1b4
3337e7d
8b1883f
75a1519
2dd468c
d65dbc9
4208c21
4841f2b
01f0bee
fdc18bc
ba74725
73db9be
772b9bb
ecb3b84
3f6cc69
93e9e1d
705d63a
258dc48
0fb890a
de24863
ef85d75
96ed050
d2d0b85
104bd8d
a4e4d94
3d95139
1fde2dc
9bc890d
f4beea1
b8070d1
02b896c
ebc5731
c7b3ddb
229d36a
658f4cd
7b90adb
f318701
026220e
93a6fd8
c00b75f
d30d33e
5cabff3
c68c895
e4b4efe
5b94312
aa2117e
51c112c
17f1677
dcc08fe
c932975
fd996a2
0b08f87
ef3cb7d
c196296
b1e3eea
79549cc
1b9a938
c8f530f
acf4fa8
032ee55
dd074b7
5772cd4
1b3808f
03fcf0c
0710140
8edba22
836eb5b
2f803f7
55ee180
511986f
ae83242
c6a82c4
7a27a77
4527161
84c2251
9c373ad
b76674d
3e1f517
b445e38
68e8a88
d19bb7a
04e791f
3be3a28
c1383be
4fe5cbc
19b6c56
d67eb36
f092e09
a0aae51
8e73deb
4260eba
4bf8c01
be513f1
f123d1b
249fe31
1ac7c97
8caae7e
8f4f753
b84a32e
6926440
1c949b2
e1b854d
e94b0ee
ff00bb3
6ab24d6
0ec7acd
d004d84
e84825e
947dac5
cb00334
31214e5
bd88742
63a7ada
8afae1e
cba315e
1cb1a18
b511499
d063ff3
2c3a8e2
0903df5
0f7bb8f
4a052f6
b8c3c67
48f8349
81028ba
46de330
0e0f1e5
420e7cc
2c5918c
a02a0d0
a7ef363
404ce25
902e8ff
f05e0b3
5ed37d1
44737de
4332a6e
aa39b49
1fb2478
c8d8105
82e4271
0eb41d8
6542e82
f50e41c
a2e46a7
3405db9
ba1d7c6
d31f9c2
27e68ad
4081555
b3278b8
da04d29
edf9d98
7cb298d
da58c8a
1388c67
d85be92
79f4537
0bfbd9e
46c3f78
71fd7cc
47cbce3
ddc27d3
d8cde20
9ed9385
9dfef66
e0965e1
4a871e8
b49a3b7
c969593
07ae11f
597ea41
e87e44e
c08e0fc
b31169b
e9206ab
7a5a52d
cb3ca03
26593e5
0a3daf1
dd8e7aa
756d7aa
2cf4b21
4ef39de
84bc888
08fb2f6
452f780
25e3e45
b3ea06a
5771322
89eed16
f30f30e
d276882
f02bb3a
51c0491
a3e3f88
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,11 @@ | ||
# About us | ||
|
||
Display | Name | Github Profile | Portfolio | ||
--------|:----:|:--------------:|:---------: | ||
 | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
Display | Name | Github Profile | Portfolio | ||
--------|:-----------:|:--------------:|:---------: | ||
 | Yuhao ZHANG | [Github](https://github.com/yzhanglp) | [Portfolio](https://yzhanglp.com) | ||
 | Yao Chenguang|[Github](https://github.com/classskipper351)| | ||
 | Yung Ka Shing | [Github](https://github.com/andy123qq4) | [Portfolio](https://google.com) | ||
 | Huang Maodian | [Github](https://github.com/Geinzit) | [Portfolio](../docs/team/heinzhuang.md) | ||
 | LIN Siyan | [Github](https://github.com/Celineyaa) | [Portfolio](docs/team/johndoe.md) | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,33 +6,230 @@ | |
|
||
## Design & implementation | ||
|
||
{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} | ||
### The Overall UML Diagram: | ||
|
||
 | ||
|
||
|
||
### The overall Sequence Diagram: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
 | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please remove these extraneous empty liens |
||
|
||
|
||
### problemGenerator Component | ||
API: [ProblemGenerator.java](../src/main/java/seedu/duke/ProblemGenerator.java) | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
the main idea in the design of problemGenerator is that it take 4 parameters and generate a test which include some number of problems | ||
|
||
|
||
when the gengerator is triggered, users enter a command like this: | ||
|
||
generate -t [operators] -n [number] -d [maximum digit] -l[length] | ||
for example , user can enter: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. wrong display? the "for example, user can enter: " part is inside the code blocks |
||
|
||
generate -t +-*/ -n 10 -d 2 -l 3 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could you perhaps include output for this sample input? |
||
|
||
in which case the parseCommand() will take the command and pass the parameters to generete(). | ||
|
||
generate() function will choose 3 random operand with max digits of 2, take a random operation from the operation set of $+,-,*,/$ to form a single problem ,and loop the execution for 10 times to form a test | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not sure if the dollar signs in |
||
|
||
if user missed some parameters ,defaultOptions() function will use pre-set default options and invoke UI to print a message for every missing parameter | ||
|
||
the answer of the problem is calculated by calculator class while generating a problem, answer is stored in the problem class | ||
|
||
### Checker Component | ||
**API:[Checker.java](../src/main/java/seedu/duke/Checker.java)** | ||
**How the `Checker` work:** | ||
1. Every `Checker` was created with a `Test` class. | ||
2. The `Checker` will ask user's input and compare the answer up to 2 decimal tolerance. | ||
3. If the user input is not a number, the answer will automatically viewed as a incorrect answer. | ||
4. The accuracy and the user's answers will be stored for UI or other class to access with the specific function. | ||
5. The checker will also store the times that user use to caculate for the problemset. | ||
6. The checker will also store the questions that user gave a wrong answer as well as the wrong answer. | ||
|
||
**`Pseudo code` for reference:** | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good inclusion of pseudo code to make DG more understantable! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Really like your idea of including pseudo-code, making it much clear and easy to understand. |
||
``` | ||
# the brief pseudo code for how to check the answer | ||
|
||
correct = 0 | ||
isCorrect = [] | ||
wrongProblem = [] | ||
wrongAnswer = [] | ||
for problem in problem set: | ||
UI.PrintProblem | ||
answer <- user_input | ||
if answer - problem.answer < teleranceRange | ||
correct <- correct+1 | ||
isCorrect.append("1") | ||
else | ||
isCorrect.append("0") | ||
wrongProblem.append(problem) | ||
wrongAnswer.append(userInput) | ||
continue | ||
|
||
``` | ||
**next to be added for `Checker.java`:** | ||
1. Support check on more types of problems (i.e Quadratic equation of one variable) | ||
2. Give some explanation of the math problems. | ||
3. Store the answer in array format to hand the function and matrix answer. | ||
|
||
* To be added | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could this be a redundant line? Maybe you can consider deleting it. |
||
### Record Component - Design | ||
|
||
API: [Record.java](../src/main/java/seedu/duke/Record.java) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
The Record component: | ||
|
||
- a snapshot of a completed problem sets, including the individual problems, the date it was solved, the time taken to solve the problem set, and the accuracy of the attempt. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, probably it is better if you can add some snapshots to explain |
||
- records the specifics of each problem, the unique ID(created using Java's default hashcode) of the problem set, for organized or filtered viewing of past records. | ||
- For the viewing of a record, users may choose whether to display the problem set specifics or not using the `showProbDetails` parameter. | ||
- When writing a record to external file, it's written into a single line in the format of "/dateTime(format:yyyy-MM-dd HH:mm:ss) /speed /accuracy /problemSetID /problems". For problems, each problem is separated by a space and is formatted in "/problemDescription,/problemAnswer" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. it would be good to give an example for reference |
||
|
||
### Record Component - Implementation | ||
|
||
- Store in each Record object an ArrayList of Problems objects for storing specifics of the attempted Problem Set. | ||
- When a problemSet solving is saved to a record **for the first time**, the corresponding Record object will create a unique ID for the problem set using Java's built-in hashCode method. When loading this record in the future and re-saving the data, the same ID will be used and no new IDs will be generated. This is achieved by using two different constructors for these two different situations. | ||
|
||
**Code Snippet** | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider replacing the code snippets with a sequence diagram of the record component to help with visualization |
||
``` | ||
// the two different constructors | ||
public Record(LocalDateTime dateTime, double speed, double accuracy, ArrayList<Problem> probSet) { | ||
setSpeed(speed); | ||
setAccuracy(accuracy); | ||
setDateTime(dateTime); | ||
setProbSet(probSet); | ||
psIndex = probSet.hashCode(); | ||
} | ||
|
||
public Record(LocalDateTime dateTime, double speed, double accuracy, ArrayList<Problem> probSet, int psIndex) { | ||
setSpeed(speed); | ||
setAccuracy(accuracy); | ||
setDateTime(dateTime); | ||
setProbSet(probSet); | ||
setPsIndex(psIndex); | ||
} | ||
|
||
``` | ||
- the `writeLine` method is used when writing a record to the external file, and the `print` method is used by the UI component when displaying a record to the user. | ||
|
||
### Storage Component - Design | ||
|
||
API: [Storage.java](../src/main/java/seedu/duke/Storage.java) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think the link to the code is working here |
||
|
||
The Storage Component: | ||
|
||
- Read / Write to external file at appropriate runtime to enable data persistence throughout multiple usages of the software. | ||
- a unique and strict format for external file formatting for proper loading data as well as input file corruption detection. | ||
- incorporate the UI, Parser component for proper user feedback regarding the save/load process. | ||
- stores a list of Record objects for reading / writing, each Record is stored on a single, separate line. Formatting of each line is explained in the Record section. | ||
- The record list can be sorted by multiple parameters, including dateTime, speed, accuracy, problem set ID. This is used by the UI component to display users' past records in any order they desire. | ||
|
||
### Storage Component - Implementation | ||
|
||
- Uses a list of Record objects to store all past attempts | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Probably it is better if you can include the code of Record class here |
||
- Uses Java's built-in BufferedReader, FileReader, BufferedWriter, FileWriter to write / read properly all information of all problem sets | ||
- sortRecords method sorts the Record list based on 4 different parameters(each representing sort by datetime, speed, accuracy, problemSet ID). each parameter have 3 different values: 0, 1, 2. 0 means to not sort by this parameter, 1 means to sort(decreasing order), 2 means to sort in reverse(increasing order). These 4 parameters are determined by the user input, and interpreted by the Parser component. | ||
|
||
### Testcase Component | ||
|
||
# Proposed Implementation | ||
The proposed test mechanism is facilitated by ProblemGeneratorTest, CheckerTest. It check the correctness of the generated problemsets' types, | ||
number of questions and max digits, by comparing the generated output to the user input. | ||
|
||
ProblemGeneratorTest#operatorTest() — Test if the input operator type is align with the generated one. | ||
ProblemGeneratorTest#numberTest() — Test if the input number of questions is align with the generated number of questions. | ||
ProblemGeneratorTest#digitTest() — Test if the input max digits is align with the generated one. | ||
ProblemGeneratorTest#parseCommand() — parse the input command to fit in the program. | ||
ProblemGeneratorTest#parseNumber() — parse out the operands from a given problem. | ||
|
||
Given below is an example usage scenario and how the test behaves. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe you can add some snapshots here to help your illustration |
||
|
||
Step 1. The user launch the ProblemGeneratorTest and run the operator testcase. The ProblemGeneratorTest#operatorTest() will loop through all the | ||
commands in the data member "commands" and allocate each commands to its corresponding test case. During this process, a ProblemGenerator pb is | ||
generated, and the problem sets it generates by calling ProblemGenerator#typeChoose will be store in variable #test#, then the problem set will be | ||
extracted using Test#getProblem(). After that, for every problem in the generated problem set, the assertTrue will check if the type of these problem | ||
matches with the user input type. If all of them matches, it will successfully output the generated dataset, else, it will output the problem with | ||
incorrect format. | ||
|
||
Step 2. The user launch the ProblemGeneratorTest and run the number testcase. The ProblemGeneratorTest#numberTest() will loop through all the commands | ||
in the data member #commands# and call ProblemGeneratorTest#parseCommand to parse the input command to get a hashmap with the input type, number and digits | ||
information. Then generate a new ProblemGenerator and use ProblemGenerator#typeChoose to collect the generated problem, then use assertEquals to compare | ||
the user input number with the generated number of questions. | ||
|
||
Step 3. The user launch the ProblemGeneratorTest and run the digit testcase. The ProblemGeneratorTest#digitTest() will loop through all the commands | ||
in the data member #commands# and call ProblemGeneratorTest#parseCommand to parse the input command to get a hashmap with the input type, number and digits | ||
information. Then generate a new ProblemGenerator and use ProblemGenerator#typeChoose to collect the generated problem,then for every problem, call | ||
ProblemGeneratorTest#parseNumbers to extract the digits in the problem, then use assertTrue to verify if the input max digit is greater or equal to the digits | ||
of every operands in the generated problems. | ||
|
||
The features going to be implement: | ||
testcases for generating long problem sets questions and check answer, as well as the testcases for UI, Checker, and Storage. | ||
|
||
Details for implementation: | ||
1. Testcases for generating long problem sets questions: | ||
implement specific input and call assertTrue to verify if the generated long problem sets has the desired format. | ||
2. Testcases for checker : | ||
provide answer to sample testcases and verify if the checker output the accurate correctness. | ||
3. Testcases for UI: | ||
verify the UI output's correctness. | ||
4. Storage: | ||
verify if the record file is created, and the content in the file is correct. | ||
|
||
## Product scope | ||
### Target user profile | ||
|
||
{Describe the target user profile} | ||
* The student who wish to practise their mathematical problem solving ability. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. change to students to be more in line with the next statement? |
||
* The teachers who wish to provide students with some math problems and check their performance. | ||
|
||
### Value proposition | ||
|
||
{Describe the value proposition: what problem does it solve?} | ||
The product automates the generation of mathematical problems and their corresponding answers, thereby reducing the effort required by students to find practice problems. | ||
|
||
## User Stories | ||
|
||
|Version| As a ... | I want to ... | So that I can ...| | ||
|--------|----------|---------------|------------------| | ||
|v1.0|new user|see usage instructions|refer to them when I forget how to use the application| | ||
|v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| | ||
|v1.0|student who just started learning quadratic equations|use MathGenius to specifically generate problem sets|gain specialized practice on this topic| | ||
|v1.0|a student who’s unfamiliar with mathematics terms|watch explanations and introductions to unfamiliar terms|strengthen understanding| | ||
|v1.0|primary school teacher|wcreate course or topic-specific arithmetic questions for students|teaching student more effortlessly| | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is |
||
|v2.0|student who want to pracise solving foumula|generate various kinds of formula|practise the ability of solving math formula| | ||
|
||
## Non-Functional Requirements | ||
|
||
{Give non-functional requirements} | ||
1. Should work on any mainstream OS as long as it has Java 11 or above installed. | ||
2. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. | ||
|
||
**{More to be add}** | ||
|
||
## Glossary | ||
|
||
* *glossary item* - Definition | ||
* Mainstream OS: Windows, Linux, Unix, MacOS | ||
* Private contact detail: A contact detail that is not meant to be shared with others | ||
|
||
## Instructions for manual testing | ||
|
||
{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing} | ||
## Launch and Shutdown | ||
1. initial launch: | ||
1. Download the jar file and copy into an empty folder | ||
2. run the jar file use command '_java -jar tp.main.jar_' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It might be more readable to use markdown code block for 'java -jar tp.main.jar' |
||
2. Saving window preferences | ||
|
||
1. Resize the window to an optimum size. Move the window to a different location. Close the window. | ||
|
||
2. Re-launch the app by double-clicking the jar file. | ||
Expected: The most recent window size and location is retained. | ||
3. Shutdown | ||
1. input command '_exit_' in the terminal after launch the program. | ||
## Generate ProblemSet | ||
1. generate expected problem set by input its type('+ or - or * or /'), number of problems(integer) and | ||
the maximum digits. | ||
1. the example input: 'generate -t + -n 2 -d 3', which means generate a problem set, who has 2 problems, | ||
all of their operator is '+', and the maximum digit of their operands is 3 digits. | ||
2. input the answer: after all problems are generated, every problem will show on the terminal again, | ||
user can type his answer on the blank. Then the next problem will show as follows. After user type in | ||
all the answers, the accuracy of his performance and his speed will be shown as follows, e.g. | ||
'Acc: 0.0 | ||
Spend Time: 121s' . | ||
2. after shut down the program, user can view his performance report in a .txt file called 'recordList.txt' | ||
with the complete date and accuracy inside. | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,83 @@ | ||
# User Guide | ||
# User Guide of MathGenius | ||
|
||
## Introduction | ||
|
||
{Give a product intro} | ||
**`MathGenius`** is a user-friendly application that provides a platform to enhance your equation-solving abilities. Whether you're a student learning calculation, a math enthusiast looking to sharpen your skills, or a teacher preparing for exams/lessons, this application is here to support you. | ||
|
||
## Quick Start | ||
## Get Started: | ||
|
||
{Give steps to get started quickly} | ||
Run `java mathGenius.java` to get started | ||
|
||
1. Ensure that you have Java 11 or above installed. | ||
1. Down the latest version of `Duke` from [here](http://link.to/duke). | ||
Type the command in the command box and press Enter to execute it. | ||
|
||
## Features | ||
e.g. typing help and pressing Enter will get the help message. | ||
|
||
{Give detailed description of each feature} | ||
Some example commands you can try: | ||
1. `generate`: generate problem set | ||
2. `pressing Enter/Return`: submit your answer | ||
3. `exit`: exit the main program | ||
4. `records`: view the past problem solving sessions you did, including the date you finished the set, your speed, accuracy, and the problems details etc. | ||
|
||
### Adding a todo: `todo` | ||
Adds a new item to the list of todo items. | ||
## Feature: | ||
|
||
Format: `todo n/TODO_NAME d/DEADLINE` | ||
### Show the Help: `help` | ||
|
||
* The `DEADLINE` can be in a natural language format. | ||
* The `TODO_NAME` cannot contain punctuation. | ||
Show the message about the command you can use and the standard input format (e.g. input should be in fraction or in decimal form). | ||
|
||
Example of usage: | ||
**Format:** `help COMMAND_NAME` | ||
- The `COMMAND_NAME` can be commands like `generate`, `records`, `exit` | ||
|
||
*Example of usage:* | ||
``` | ||
help generate | ||
|
||
`todo n/Write the rest of the User Guide d/next week` | ||
help exit | ||
``` | ||
### generate problem set: `generate` | ||
Generate the problem based on series of parameters. For example, what operators you wish to include in the set (+-*/), the number of problems in the set etc. And as you enter the answer in order, the program will auto check your answers for correction. | ||
|
||
`todo n/Refactor the User Guide to remove passive voice d/13/04/2020` | ||
**Format:** `generate -t OPERATOR -n NUMBER_OF_PROBLEMS -d MAXIMUM_DIGITS` | ||
|
||
## FAQ | ||
- `OPERATOR` can be `+-*/` or any combinations of these 4 operators | ||
- `NUMBER_OF_PROBLEMS` can be any integers | ||
- `MAXIMUM_DIGITS` can be any integers | ||
|
||
**Q**: How do I transfer my data to another computer? | ||
*Example of usage:* | ||
|
||
**A**: {your answer here} | ||
``` | ||
generate -t + -n 1 -d 1 | ||
generate -t */ -n 5 -d 3 | ||
``` | ||
|
||
## Command Summary | ||
### Autosaving/Loading past answers | ||
|
||
{Give a 'cheat sheet' of commands here} | ||
Each time you finish a problem set, you results will be automatically stored in an external file `recordList.txt`. And each time you restart the application, the data from the file will be automatically loaded. | ||
|
||
* Add todo `todo n/TODO_NAME d/DEADLINE` | ||
Please do not manually change the file unless you're sure of what you're doing(Improper editing of the file could lead to data corruption/loss). | ||
|
||
### View past records: `records` | ||
|
||
View the records of your past problem solving sessions. Each record information including the date the problem set was solved, the time spent(in seconds) to solve the problem set, and the accuracy(measured in percentage), as well as the details of the problem set(including the problem set's unique ID, and each individual problem if you desire so). | ||
|
||
**Format:** `records -sortByDate -sortBySpeed -sortByAccuracy -sortByProblemID -showProblemDetails` | ||
|
||
- all parameters are optional | ||
- `sortByDATE` can be d(increasing order) or dr(decreasing order). | ||
- `sortBySpeed` can be s(increasing order) or sr(decreasing order). | ||
- `sortByAccuracy` can be a(increasing order) or ar(decreasing order). | ||
- `sortByProblemID` can be p(increasing order) or pr(decreasing order). | ||
- `showProblemDetails` can be details. Which shows each individual problem's description in the problem set. | ||
|
||
### Submit Answer: `ENTER/RETURN` | ||
|
||
type the answer in the terminal and press ENTER/RETURN | ||
|
||
### Judge Answer: *NA* | ||
|
||
After finishing all the problem sets, the program will automate judged the correctness and output the accuracy and speed. | ||
|
||
### Exit: `exit` | ||
|
||
User can use this to exit the program. | ||
|
||
**Format:** `exit` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Heinz Huang | ||
|
||
github username: Geinzit | ||
|
||
Professional Gamer. Amateur Coder. |
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.