Metadata-Version: 1.1
Name: EasyEuler
Version: 1.2.1
Summary: A command line tool for Project Euler
Home-page: https://github.com/Encrylize/EasyEuler
Author: Encrylize
Author-email: encrylize@gmail.com
License: MIT
Description: EasyEuler
        =========
        
        EasyEuler is a configurable command line tool for working with Project
        Euler. It provides support for many languages out of the box and adding
        more is easy.
        
        This project was inspired by
        `EulerPy <https://github.com/iKevinY/EulerPy>`__ and intends to provide
        the same functionality for a larger variety of languages.
        
        Installation
        ============
        
        EasyEuler can be installed from PyPI using
        `pip <https://pip.pypa.io/en/latest/>`__:
        
        .. code:: bash
        
            $ pip install easyeuler
        
        Usage
        =====
        
        Use ``create`` to create a new problem file:
        
        .. code:: bash
        
            $ easyeuler create 1 python
            Written to euler_001.py
        
            $ cat euler_001.py
            """
            Problem 1: Multiples of 3 and 5
        
            If we list all the natural numbers below 10 that are multiples of 3 or 5,
            we get 3, 5, 6 and 9. The sum of these multiples is 23.
        
            Find the sum of all the multiples of 3 or 5 below 1000.
        
            """
        
        Once you've come up with a solution, output the result and check if it's
        correct with ``verify``:
        
        .. code:: bash
        
            $ easyeuler verify euler_001.py
            Checking output of euler_001.py: [no output]  # output in red
        
            $ echo print(12345) > euler_001.py
            $ easyeuler verify euler_001.py
            Checking output of euler_001.py: 12345        # incorrect solution, output in red
        
            $ echo print(42) > euler_001.py
            $ easyeuler verify euler_001.py
            Checking output of euler_001.py: 42           # correct solution, output in green
        
        You can even time the execution of your solutions with the ``time``
        flag:
        
        .. code:: bash
        
            $ easyeuler verify --time euler_001.py
            Checking output of euler_001.py: 42
            CPU times - user: 16.7ms, system: 3.33ms, total: 20ms
            Wall time: 1.02s
        
        ...and execute multiple at once:
        
        .. code:: bash
        
            $ easyeuler verify *
            Checking output of euler_001.py: 42
            Checking output of euler_002.c: 12345
            Checking output of euler_003.py: [error]  # [error] is displayed if an error occurs during execution
        
        Some problems come with additional files, use ``generate-resources`` to
        generate those:
        
        .. code:: bash
        
            $ easyeuler create 22 python
            Written to euler_022.py
            $ cat euler_022.py
            """
            Problem 22: Names scores
        
            [....]
        
            This problem references the following resources:
        
            names.txt
        
            """
        
            $ easyeuler generate-resources 22  # specify the problem ID to generate problem-specific resources
            Created names.txt at path .
        
            $ easyeuler generate-resources     # or leave it empty to generate all resources
            [....]
            Created 326_formula2.gif at path .
            Created 326_formula1.gif at path .
            Created 327_rooms_of_doom.gif at path .
            Created 330_formula.gif at path .
        
        Use ``list`` and ``show`` to browse problems:
        
        .. code:: bash
        
            $ easyeuler list
            ╒══════╤════════════════════════════════════╤══════════════╕
            │   ID │ Name                               │ Difficulty   │
            ╞══════╪════════════════════════════════════╪══════════════╡
            │    1 │ Multiples of 3 and 5               │ 5%           │
            ├──────┼────────────────────────────────────┼──────────────┤
            │    2 │ Even Fibonacci numbers             │ 5%           │
            ├──────┼────────────────────────────────────┼──────────────┤
            │    3 │ Largest prime factor               │ 5%           │
            ├──────┼────────────────────────────────────┼──────────────┤
            [....]
        
            $ easyeuler show 2
            Problem 2: Even Fibonacci numbers
        
            Each new term in the Fibonacci sequence is generated by adding the
            previous two terms. By starting with 1 and 2, the first 10 terms will be:
        
                              1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
        
            Find the sum of all the even-valued terms in the sequence which do not
            exceed four million.
        
        Configuration
        =============
        
        EasyEuler is designed to be configurable and adaptable to any language
        you may want to use it with. It follows the `XDG Base Directory Specification
        <https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html>`__
        for locating configuration files. The default location is
        ``$HOME/.config/EasyEuler``.
        To see examples of configuration, look at ``config.json`` and the ``templates``
        directory inside the package.
        
        Languages
        ~~~~~~~~~
        Adding a new language is as easy as adding a few lines to the ``config.json``
        file.
        
        A language has the following general attributes:
        
        -  ``name`` - name of the language. (required)
        -  ``extension`` - file extension for the language. (required)
        -  ``template`` - name of the template file. (default: ``name``)
        
        These commands are executed in order when using the ``verify`` command:
        
        -  ``build`` - build the file if required.
        -  ``execute`` - time this command and compare the output to the solution. (default: ``./{path}``)
        -  ``cleanup`` - remove binary files after execution, etc.
        
        Templates
        ~~~~~~~~~
        Templates use the `Jinja2 <http://jinja.pocoo.org>`__ templating engine.
        New templates should go in the ``templates`` directory inside the configuration
        directory.
        
        Requirements
        ============
        
        EasyEuler requires `Python
        3.5+ <https://www.python.org/downloads/release/python-350/>`__, along
        with the `Click <http://click.pocoo.org>`__,
        `Jinja2 <http://jinja.pocoo.org>`__ and
        `tabulate <https://pypi.python.org/pypi/tabulate>`__ modules.
        It has been tested on Windows and Linux and it should work on any other
        Unix-based platforms, including macOS.
        
        Contributing
        ============
        Please see `CONTRIBUTING.rst
        <https://github.com/Encrylize/EasyEuler/blob/master/CONTRIBUTING.rst>`__
        for information on how to contribute to this project.
        
        Acknowledgements
        ================
        
        The problem descriptions are courtesy of the
        `EulerPy <https://github.com/iKevinY/EulerPy>`__ project, which
        formatted the descriptions from Kyle Keen's `Local
        Euler <http://kmkeen.com/local-euler>`__ project into a human-readable
        form.
        
        License
        =======
        
        EasyEuler is licensed under the `MIT
        license <https://en.wikipedia.org/wiki/MIT_License>`__.
        
Keywords: EasyEuler,ProjectEuler,euler,Project-Euler
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Utilities
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 3.5
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: Unix
Classifier: Natural Language :: English
