コード例 #1
0
        public ProblemDescription AddProblem(ProblemDescription newProblem)
        {
            SetNewIdToProblem(newProblem);

            Save(newProblem);

            return(newProblem);
        }
コード例 #2
0
 public async Task SetDescription(ProblemDescription value)
 {
     _problem.Description = value.Description;
     _problem.Input       = value.Input;
     _problem.Output      = value.Output;
     _problem.Hint        = value.Hint;
     await _context.SaveChangesAsync();
 }
コード例 #3
0
        public ProblemDescription UpdateProblem(ProblemDescription problem, ProblemDescription updatedProblem)
        {
            problem.Copy(updatedProblem);
            problem.LastUpdate = Helper.GetDateTimeNowBrazil();

            Save <ProblemDescription>(problem);

            return(problem);
        }
コード例 #4
0
        private void SetNewIdToProblem(ProblemDescription newProblem)
        {
            var lastId = GetAllProblemsIds()?.LastOrDefault();

            if (lastId == null)
            {
                lastId = "0";
            }
            int newID = Convert.ToInt32(lastId) + 1;

            newProblem.Id = newID.ToString();
        }
コード例 #5
0
        public async Task <ActionResult> UpdateDescription(string id, [FromBody] ProblemDescription data)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res == null)
            {
                return(NotFound());
            }

            await res.SetDescription(data);

            return(Accepted());
        }
コード例 #6
0
 public bool TryReadProblemString(string problemString, out ProblemDescription problemDescription)
 {
     problemDescription = null;
     try
     {
         problemDescription = JsonConvert.DeserializeObject <ProblemDescription>(problemString);
     }
     catch (Exception)
     {
         return(false);
     }
     return(problemDescription != null);
 }
コード例 #7
0
        // Takes in a standard Q# format and outputs interpretable data to text
        // Input: Problem, state, indexConvention (default), qubitEncoding (default)
        // Output: No output, see ToPauliHamiltonian for generated filed
        public static void ToQSharpFormat(
            ProblemDescription problem,
            string state = "",
            IndexConvention indexConvention = IndexConvention.UpDown,
            QubitEncoding qubitEncoding     = QubitEncoding.JordanWigner
            )
        {
            var fermionHamiltonian = problem
                                     .OrbitalIntegralHamiltonian
                                     .ToFermionHamiltonian(indexConvention);

            Auxiliary.ToPauliHamiltonian(fermionHamiltonian, qubitEncoding);
        }
コード例 #8
0
        public IActionResult UpdateProblemById(string problemId, ProblemDescription updatedProblem)
        {
            var user = this.GetUserFromContext();

            var problem = _problemsManager.GetProblemById(problemId);

            if (problem == null)
            {
                NotFound(_contractBo.BuildBackendResponse <string>("Este problema não existe no sistema.", SOJStatusCode.SOJStatusCodes.NotFound));
            }

            if (!problem.Author.Username.Equals(user.Username))
            {
                return(BadRequest(_contractBo.BuildBackendResponse <string>("Você não pode modificar este problema.", SOJStatusCode.SOJStatusCodes.BadRequest)));
            }

            problem = _problemsManager.UpdateProblem(problem, updatedProblem);

            return(Ok(_contractBo.BuildBackendResponse <ProblemDescription>(null, SOJStatusCode.SOJStatusCodes.OK, problem)));
        }
コード例 #9
0
        public IActionResult AddProblem(ProblemDescription newProblem)
        {
            if (newProblem == null)
            {
                return(StatusCode(StatusCodes.Status400BadRequest,
                                  _contractBo.BuildBackendResponse <string>("Você precisar enviar um arquivo!",
                                                                            SOJStatusCode.SOJStatusCodes.BadRequest,
                                                                            null)));
            }

            var author = this.GetAuthorFromContext();

            newProblem.Author     = author;
            newProblem.LastUpdate = Helper.GetDateTimeNowBrazil();

            var response = _problemsManager.AddProblem(newProblem);

            return(StatusCode(StatusCodes.Status201Created,
                              _contractBo.BuildBackendResponse <ProblemDescription>("Problema adicionado com sucesso",
                                                                                    SOJStatusCode.SOJStatusCodes.Created,
                                                                                    response)));
        }
コード例 #10
0
        /// <summary>
        /// Converts an electronic structure problem description
        /// into a format consumable by Q# using default settings.
        /// </summary>
        /// <param name="problem">Input electronic structure problem description.</param>
        /// <param name="state">Selected wavefunction ansatz. This uses the Hartree–Fock state by default.</param>
        /// <param name="indexConvention">Convention for mapping spin-orbit indices to integer indices.</param>
        /// <param name="qubitEncoding">Scheme for mapping fermions to qubits.</param>
        /// <returns>
        /// A representation of <paramref name="problem" /> suitable for passing to Q# simulation operations.
        /// </returns>
        public static JordanWignerEncodingData ToQSharpFormat(
            this ProblemDescription problem,
            string state = "",
            IndexConvention indexConvention = IndexConvention.UpDown,
            QubitEncoding qubitEncoding     = QubitEncoding.JordanWigner
            )
        {
            var fermionHamiltonian = problem
                                     .OrbitalIntegralHamiltonian
                                     .ToFermionHamiltonian(indexConvention);

            var wavefunction = problem.Wavefunctions.ContainsKey(state) ?
                               problem.Wavefunctions[state].ToIndexing(indexConvention) :
                               fermionHamiltonian.CreateHartreeFockState(problem.NElectrons);

            var pauliHamiltonian = fermionHamiltonian.ToPauliHamiltonian(qubitEncoding);

            var pauliHamiltonianQSharpFormat = pauliHamiltonian.ToQSharpFormat();
            var wavefunctionQSharpFormat     = wavefunction.ToQSharpFormat();

            return(QSharpFormat.Convert.ToQSharpFormat(pauliHamiltonianQSharpFormat, wavefunctionQSharpFormat));
        }
コード例 #11
0
ファイル: UIProblemDrawer.cs プロジェクト: wcatykid/GeoShader
 /// <summary>
 /// Draw the given problem to the UI.
 /// </summary>
 /// <param name="desc"></param>
 public void draw(ProblemDescription desc)
 {
     invokeDraw(desc);
 }
コード例 #12
0
ファイル: UIProblemDrawer.cs プロジェクト: wcatykid/GeoShader
 /// <summary>
 /// Draw the given problem to the UI.
 /// </summary>
 /// <param name="desc"></param>
 public void draw(ProblemDescription desc)
 {
     invokeDraw(desc);
 }
コード例 #13
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // configures one-to-many relationship
            //        modelBuilder.Entity<User>()
            //.HasMany(p => p.Posts)
            //.WithOne(p => p.User);
            //        modelBuilder.Entity<Profile>()
            //    .HasOne(u => u.User)
            //    .WithOne(u => u.Profile)
            //    .IsRequired();
            User admin = new User
            {
                Id              = 1,
                Login           = "******",
                Password        = "******",
                Email           = "*****@*****.**",
                Solved_Problems = null
            };
            User slave = new User
            {
                Id              = 2,
                Login           = "******",
                Password        = "******",
                Email           = "*****@*****.**",
                Solved_Problems = null
            };
            Problem summTwo = new Problem
            {
                Id     = 1,
                Title  = "Найти сумму двух чисел",
                Type   = "Easy",
                Solved = 0,
                Trying = 0,
            };
            Problem minusTwo = new Problem
            {
                Id     = 2,
                Title  = "Найти разницу двух чисел",
                Type   = "Easy",
                Solved = 0,
                Trying = 0
            };
            ProblemDescription minusTwoDesc = new ProblemDescription
            {
                ProblemId    = 2,
                Description  = "В этой задаче тербуется найти разность двух чисел",
                ExamplesJson = JsonConvert.SerializeObject(new[]
                {
                    new { input = "a = 2, b = 1", output = "1" },
                    new { input = "a = 3, b = 3", output = "0" }
                }),
                Cheat           = "К этой задаче нет подсказок",
                Id              = 2,
                InitialCodeJson = JsonConvert.SerializeObject(new { Javascript = "JS Code Here!", Csharp = "C# Code Here!", CPlus = "C++ Code Here!" }),
                TestCasesJson   = JsonConvert.SerializeObject(new TestData[]
                {
                    new TestData {
                        input = new string[] { "2", "1" }, output = "1"
                    },
                    new TestData {
                        input = new string[] { "2", "2" }, output = "0"
                    },
                })
            };
            ProblemDescription summTwoDesc = new ProblemDescription
            {
                ProblemId    = 1,
                Description  = "В этой задаче тербуется найти сумму двух чисел",
                ExamplesJson = JsonConvert.SerializeObject(new[]
                {
                    new { input = "a = 1, b = 2", output = "3" },
                    new { input = "a = 3, b = 3", output = "6" }
                }),
                Cheat           = "К этой задаче нет подсказок",
                Id              = 1,
                InitialCodeJson = JsonConvert.SerializeObject(new { Javascript = "JS Code Here!", Csharp = "C# Code Here!", CPlus = "C++ Code Here!" }),
                TestCasesJson   = JsonConvert.SerializeObject(new TestData[]
                {
                    new TestData {
                        input = new string[] { "2", "1" }, output = "3"
                    },
                    new TestData {
                        input = new string[] { "2", "2" }, output = "4"
                    },
                })
            };

            modelBuilder.Entity <User>(b =>
            {
                b.HasKey(o => o.Id);
                b.Property(o => o.Id).ValueGeneratedOnAdd();
                b.HasData(admin, slave);
                b.HasMany(p => p.Solved_Problems).WithMany(c => c.Solved_By);
            });
            modelBuilder.Entity <Problem>(b =>
            {
                b.HasKey(o => o.Id);
                b.Property(o => o.Id).ValueGeneratedOnAdd();
                b.HasData(summTwo, minusTwo);
                b.OwnsOne(p => p.ProblemDescription).HasData(summTwoDesc, minusTwoDesc);
            });
        }