Skip to content

bfontaine/M1Algo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

M1Algo

This is a school project for the Algorithms class at Paris Diderot University.

Usage

You’ll need Python ≥3.1.

./src/wrapper [-w <width>] --algo <algo> < input > output

The program reads one line on stdin and writes on stdout.

  • --algo <algo>: specifies the algorithm to use (you must provide this information)
  • -w <width>: specifies the width of the page (default: 79)
  • --info <algo>: this option can be used to print some info about a specific algorithm
  • --justify: justify the text
  • --ls: list the available algorithms

Use --help to get a summary of the available options.

Add an algorithm

Algorithms are defined as functions in files in src/algos/. To add a new algorithm, open an existing file or create a new one in src/algos/. If this is a new file, add the following lines at the top of it:

# -*- coding: UTF-8 -*-
from .base import algo

Then, any algorithm must be a function with two parameters, the words list and the width, and yields lines to print. This function must also be decorated with @algo(), which takes an optional short doc which will show up when one uses --info on the command line. The name of the function must be unique across all src/algos/* files. You can define helper functions in the same file, as long as you don’t use @algo() on them.

Example

@algo("return an empty text")
def empty(words, width):
    """
    This really cool algorithm has a complexity of O(1).
    """
    yield "no text here"

Please note that words may be a generator instead of a list.

Tests

Run make check. If you have coverage.py for Python3, you can check the code coverage using make covercheck.

About

school project

Topics

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •