Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 public async Task AddAlgorithmTaskAsync(AlgorithmTask algorithmTask)
 {
     _context.AlgorithmTask.Add(algorithmTask);
     await _context.SaveChangesAsync();
 }
Exemplo n.º 5
0
 public async Task UpdateAlgorithmTaskAsync(AlgorithmTask algorithmTask)
 {
     _context.Entry(algorithmTask).State = EntityState.Modified;
     await _context.SaveChangesAsync();
 }
Exemplo n.º 6
0
        void RunAlgorithm()
        {
            _runTimeTimer.Reset();
            if(_alg.SupportsProgress)
            {
                _labelAlgorithmProgress.Content = "0";
                _labelAlgorithmTime.Content = "0";
            }

            _runAlgTask = new AlgorithmTask() { Algorithm = _alg };
            _runAlgTask.Start();
        }