public JObject buildJson(string code, AlgorithmTask algorithmTask) { string json = JsonConvert.SerializeObject(new { language = "csharp", versionIndex = "2", clientId = "dd7ccab4d307574f22845f30196539c5", clientSecret = "3160598aed4b13b152867b03d946a6afb234af261cac4b547fc723a003a30823", script = code, stdin = algorithmTask.Input }); return(new JObject(JObject.Parse(json))); }
public async Task <String> postToCompileCode(string code, AlgorithmTask algorithmTask) { var client = new HttpClient(); HttpContent cont = new StringContent(JsonConvert.SerializeObject(buildJson(code, algorithmTask)), Encoding.UTF8, "application/json"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Add("Host", "api.jdoodle.com"); var response = await client.PostAsync("https://api.jdoodle.com/v1/execute", cont); responseString = await response.Content.ReadAsStringAsync(); return(JObject.Parse(responseString)["output"].ToString()); }
private string Judge(JsonAfterCompilationResult submissionResult, AlgorithmTask task, SubmissionWithInput submission) { string verdict = ""; string stdout; stdout = submissionResult.stdout.Replace("\n", ""); foreach (var data in task.VerificationData) { if (submissionResult.stderr != null) { verdict = Verdicts.CompilationError.ToString(); } if (submissionResult.stderr != null) { verdict = Verdicts.RuntimeError.ToString(); } else if (Convert.ToDecimal(submissionResult.time) > task.TimeLimit) { verdict = Verdicts.TimeLimitExceeded.ToString(); } else if (submissionResult.memory > task.MemoryLimit) { verdict = Verdicts.MemoryLimitExceeded.ToString(); } else if (submission.stdin == data.InputData && stdout == data.OutputData) { verdict = Verdicts.Accepted.ToString(); var metrics = _codeAnalyzeService.GetMetricsAsync(submission.source_code); } else if (submission.stdin == data.InputData && stdout != data.OutputData) { verdict = Verdicts.NotAccepted.ToString(); } else if (stdout != data.OutputData) { verdict = Verdicts.NotAccepted.ToString(); } else if (stdout == data.OutputData) { verdict = Verdicts.Accepted.ToString(); } } return(verdict); }
public async Task AddAlgorithmTaskAsync(AlgorithmTask algorithmTask) { _context.AlgorithmTask.Add(algorithmTask); await _context.SaveChangesAsync(); }
public async Task UpdateAlgorithmTaskAsync(AlgorithmTask algorithmTask) { _context.Entry(algorithmTask).State = EntityState.Modified; await _context.SaveChangesAsync(); }
void RunAlgorithm() { _runTimeTimer.Reset(); if(_alg.SupportsProgress) { _labelAlgorithmProgress.Content = "0"; _labelAlgorithmTime.Content = "0"; } _runAlgTask = new AlgorithmTask() { Algorithm = _alg }; _runAlgTask.Start(); }