GithubHelp home page GithubHelp logo

alice's People

Contributors

rocher avatar

Watchers

 avatar  avatar

alice's Issues

Add support for Puzzles (CG)

Introduction

AS a user that wants

DoD — Users can add and share Codingame test cases; users can add a solution to a Puzzle that will be checked against all available test cases.

Alternatives — Add a mechanism to generate new test cases, based on the Puzzle specification. Add new hidden (MD5) test cases, so that only the md5 has will be checked and user won't be able to know the solution.

Tasks

  • Based on Project Euler CLI
  • Use test cases found in each Codingame Puzzle
    • Provide a way to add test cases manually (even better if automatically, but seems really difficult)
  • Provide a Puzzle checker: users can add a solution and check it against a set of test cases

Add problem parameters

Introduction

As a Problem solver, I want that users can provide parameters to slightly change the algorithm behavior. As a User, I want to test the algorithm performance of behavior for different initial conditions.

DoD — First approach to parse CLI arguments and allow problems to add their own options.

Tasks

  • Add generic 'help' option
  • Allow problems to add their own options

Refactor GUI presentation

Introduction

Current GUI presentation of Project Euler Problems is a PoC. It has no complete information and element distribution on the screen must be improved.

DoD — First version of Project Euler GUI with complete information of the Problem and the solution, with a pleasant look and feel.

Tasks

  • Add answer visualization as text
  • Add legends for graphical elements
  • Add more problem information: URL, difficulty ..
  • Check font sizes on axes and GUI in general
  • Fix labels on axes: display exponential notation for big numbers

Add algorithm steps and explanations

Introduction

As a user providing a solution to a Problem, I want to provide an explanation about the implemented algorithm.

DoD — The Problem can pause itself and add additional information, text or graphics; when the User press Continue this information is possibly removed and the Problem continues, either to the next step or to the end. Additional graphical information must be differentiated from the mathematical visualization of the Problem.

Tasks

  • Improve the current pause/step feature
  • Add explanation message or graphical details when program pauses itself (use the info layer?)

Use Ada.Finalization types for Problems and Plotters

Introduction

GUI Runner of Gnoga Multi-connection application uses a derived Connection_Data_Type record. In it, some fields are pointers to objects dynamically allocated. For example, each connection requires a different Problem instance. On_Connection event, the Problem factory passed to the Gnoga Runner creates a new Problem object. The pointer is placed into the connection data, so that no user interaction with the Problem do not interfere with other user Problems.

When the connection is closed (either the TAB browser is closed of F5 is pressed in a TAB), the connection data is finalized, but there is no way to de-allocate the memory previously allocated by the Runner.

Initial experiment was done by making Connection_Data_Type in Gnoga.Types to be a new Ada.Finalization.Limited_Controlled type, but unsuccessfully. See this Gnoga branch and this Alice branch for more information.

DoD — The GUI Runner is able to de-allocate previously dynamic memory allocated for a Problem using the Problem factory.

Tasks

  • Investigate if Gnoga already allows de-allocating such memory (in principle look like it is not possible)
  • Prepare a Gnoga pull request if a solution is found that requires modifying Connection_Data_Type
  • Adapt changes in GUI Gnoga Runner

Add unit tests to check is a problem is solved correctly

Introduction

As a user that implements a solution to a Problem, I want to know whether my answer is correct or not without looking at the correct answer.

DoD — Provide a mechanism that check a solution to a Problem without revealing the answer.

Tasks

  • Implement an MD5 checker
  • Check Problems with known solutions

Add support for Puzzles (AoC)

Introduction

As a fan of the Advent of Code event, I want to share, test and compare my implementations in Ada with other users. For this, I like sharing my input files and answers to form a test case, so that other users can test their implementations with my test case. Also, I want to have an automatic way to test my solution with all available test cases.

DoD — Users can add input files and answers (test case); users can provide a solution and test it with all available test cases.

Tasks

  • Add support for Advent of Code Puzzles similar to Project Euler CLI
  • Add support for adding and sharing input files and solutions
  • Provide a Puzzle checker that automatically test the implementation with all available solutions

Explore alternatives

Introduction

This item keeps track of ideas for future developments.

Tasks

  • Analyze the possibility to have multi-Problem Runners (GUI)
    • Users can run several Problems in the same session
    • Users can compare two or more implementations of the same Problem
  • Measures of time and algorithm complexity

Add more Plotter features

Introduction

Current Plotter interface is in Proof of Concept state, enough to test initial GUI approach.

DoD — Plotter interface allows complex visualizations of mathematical problems; users can draw shapes (lines, rectangles, circles, ..) and plot functions.

Tasks

  • Add more subprograms and parameters

Suggestion: overload subprograms to add minor parameters: color, width, style .. instead of duplicating HTML-Canvas API

Refactor GUI Stucture

Introduction

Gnoga GUI uses a grid view to distribute element of the User interface. This grid is made with table cells, which is inappropriate and not flexible. Modern HTML frameworks, like Bootstrap, provide much more flexible mechanisms to do the same job.

DoD — Gnoga grid view can optionally use div elements instead of table cells.

Tasks

  • Change Gnoga to create grid views using div elements instead of cell tables
    • This requires to create a Pull Request in Gnoga repository
  • Create new GUI structure using div elements and Bootstrap

Add support for visual Puzzless (CG)

Introduction

As a Codingame fan, I want to play these graphical Puzzles programmed with Ada, like Mars Lander or Power of Thor. For this, first the implementation of the game is required according to the Puzzle description and with all the visual elements. Second, a mechanism that allows a programmer to provide an implementation and to interact with the game in GUI.

DoD — Users can provide either the implementation of a graphical Puzzle, or a solution to an already implemented graphical Puzzle and interact with the GUI Runner.

Tasks

  • Provide a basic game engine to allow the implementation of this kind of Puzzles and the interaction with the User implementation.
  • Specify the game engine in terms of an interface independent of the graphics library used by the game Runner implementation.
  • Provide and implementation using one of the available graphics frameworks for Ada.
    • Implement the game visualizer
    • Implement the game runner and checker
    • Implement some sample games

Documentation for contributors

Introduction

For people to start making contributions, it is necessary to provide them with some indications. There might be people developing new GUI Runners, others implementing more Problems, etc.

DoD — There is a good number of tutorials to start working with Alice / Project Euler Problems; at least, basic CLI and GUI interfaces.

Tasks

  • Tutorial to implement a Project Euler problem
    • Basic CLI: minimum interface
    • Advanced CLI: add options and logs
    • Expert CLI: add tasks to explore search space in parallel
    • Basic GUI: Familiarize with Plotter interafce
    • Advanced GUI: Add awesome visualizations
  • Guide to implement a new Project Euler GUI Runner

Add problem parameters

Introduction

Like was done in #2 for the CLI interface, now we want the same in the GUI interface. The list of options must be given in a similar way but in a different context.For example, the GUI must limit the range of values for options that declare a minimum or maximum value.

DoD — Problems can give to the Runner a list of options with a rich description (name, type, values..); the GUI adds these options to the user interface; the User can tweak these parameters; before starting the Problem, all options are applied.

Tasks

  • Visualize all possible options added by a Problem in the GUI
  • Allow users change the value of each option
  • Make the Runner set the options before starting the Problem

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.