equetzal / neosaris Goto Github PK
View Code? Open in Web Editor NEWOnline ICPC standings resolver with compat with Codeforces, Vjudge and S4RiS StanD
Home Page: https://neosaris.huronos.org
License: GNU General Public License v2.0
Online ICPC standings resolver with compat with Codeforces, Vjudge and S4RiS StanD
Home Page: https://neosaris.huronos.org
License: GNU General Public License v2.0
Currently, the inherited Saris implementation uses React classes instead of functional components and react hooks.
Moving this implementation to the current standard will help with readability and maintenance.
So, vJudge does not have an public API but it's frontend actually make API requests to get some internal data, for example, the following call provides the status of a public contest:
https://vjudge.net/status/data?draw=1&contestId=541330&inContest=true&length=20&un&num=-&res=1&language&start=0
But the major problem is that none API provides the number indexes of the problems as the codeforces API provides. And it still unknown how to access private contests.
Adding the commands (to reveal, unfroze, etc...) in the page will facilitate finding the available commands and then allowing users to use this tool without having to navigate to another site (GitHub).
Currently the Saris resolver is working with pure Javascript which can lead to unexpected bugs, so migrating the project to typescript should help to minimize the errors.
The current JSON specification is inherited from the old SarisByAlgoritmiaESCOM with very few modifications. Although this format works, it is not as scalable as it could be, so that adding future fuctionalities such as IOI-like contests support, awards mentions or presenter hints can require modifications to the current object that might result in a incompatibility with previous specifications. This can result in future conflicts if other tools decide to autogenerate JSON files for neoSaris.
Stated this, I purpose the following object specification for neoSaris:
export type ContestData = {
contestMetadata: {
duration: Number; //Duration in minutes
frozenTimeDuration: Number; //Duration of the frozen time in minutes
name: String; // Title to display for the problem
type: "ICPC"; // Type of contest to evaluate
//^ We can add a future type for IOI to identify IOI contests
};
problems: Array<{//0 = first problem, etc.
index: String; //Letter of the problem
name?: String; //Actual name of the problem
//Here we can add subtasks if we need to evaluate IOI contests
}>; //Array with an unique index for each problem
contestants: Array<{
id: Number; //Unique number to identify this contestant
name: String; //Name of the contestant
school?: String; //Name of represented university/school/institution
iconName?: String; //Id of the icon to display for this contestant
//For awards, we can include fields about members of the team
}>;
verdicts: {
accepted: Array<String>; //Name of the accepted verdicts
//For IOI we can add partial verdict name
wrongAnswerWithPenalty: Array<String>; //Name of WA verdicts that causes penalty
wrongAnswerWithoutPenalty: Array<String>; //Name of of WA verdicts that does not causes penalty
};
//For awards, we can add an object for different awards (TopRanked, FirstToSolve, Medals)
submissions: Array<{
timeSubmitted: Number; //Floor time in minutes of the submission, relative to the contest start.
contestantId?: Number; //Number of the contestant, should match contestants array
contestantName: String; //Name of the contestant
problemIndex: String; //Should match problems array
verdict: String; //Should match a registered verdict
//For IOI we can add the partial scores
}>;
};
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.