No description
Find a file
2023-01-15 22:59:25 +01:00
.idea cleanup 2022-11-18 14:43:04 +01:00
_build polished readme (typo + clarification of examples) 2023-01-14 15:42:54 +01:00
graphs First Commit 2022-11-18 14:25:41 +01:00
src Typo and variable name change 2023-01-15 22:59:25 +01:00
.gitignore added visualisation 2022-11-24 10:19:37 +01:00
.merlin cleanup v2 2022-11-18 14:52:49 +01:00
_tags First Commit 2022-11-18 14:25:41 +01:00
appMedium.native added inputs support. The application can read its input. Missing the output part. 2022-12-09 21:12:37 +01:00
example_with_source.png polished readme and added terminal quality of life improvements (clear) 2023-01-14 15:18:52 +01:00
Example_without_source_1.png polished readme and added terminal quality of life improvements (clear) 2023-01-14 15:18:52 +01:00
Example_without_source_2.png polished readme and added terminal quality of life improvements (clear) 2023-01-14 15:18:52 +01:00
Example_without_source_3.png polished readme and added terminal quality of life improvements (clear) 2023-01-14 15:18:52 +01:00
Graph_example.png polished readme (typo + svg to png) 2023-01-14 15:27:15 +01:00
Graph_example.svg polished readme and added terminal quality of life improvements (clear) 2023-01-14 15:18:52 +01:00
INPUT various refactoring 2023-01-14 14:34:40 +01:00
Makefile polished readme and added terminal quality of life improvements (clear) 2023-01-14 15:18:52 +01:00
outfile added display support for ints + main tested. Ford Fulkerson Finished 2022-11-30 12:48:53 +01:00
outFileApp polished readme (typo + clarification of examples) 2023-01-14 15:42:54 +01:00
outFileApp.svg polished readme (typo + clarification of examples) 2023-01-14 15:42:54 +01:00
README.md polished readme (typo + clarification of examples) 2023-01-14 15:42:54 +01:00
test.svg added display support for ints + main tested. Ford Fulkerson Finished 2022-11-30 12:48:53 +01:00

Project undertaken by Aurélia LEJEUNE and Raphaël LACROIX as part of our 4th year course on functionnal programming

What is this project about?

Ever needed to organise an day with participants (like children for instance) that can pick a variying number of activities (like hockey football ...) from a list? Avoid yourself the hassle of filling the table by hand for three hours just to realize that little jimmy can't go to the swimming pool because there are no remaining spots for him.

How to use this software ?

Installing and running

  • clone this repo make sure you have ocaml installed
  • in the root of the directory run
    • make app if you want to enter the activities and participants one by one in the terminal (we won't judge you)
    • make appSource if you prefer to enter those ./INPUT and let the program do it for you

Inputting data

The format for the file is as follows :

Nb_... and id_... are numbers. The first represent the number of possible participants. The latter will be used to say which activities the participant wants. Participant_... and Activity... must be strings of characters without spaces (you can replace those with _ or -)

Activity_1 Nb_available
Activity_2 Nb_available
...
Activity_n Nb_available

Participant_1 id_1 id_2 id_3 ... id_n
Participant_2 id_1 id_2 id_3 ... id_n
...
Participant_m id_1 id_2 id_3 ... id_n

So it may look like :

Foot 15
Hockey 12
Piscine 15
Poney-aquatique 2

Jean 1 2
Jean-Michel 5
Jean-Claude 1
Jean-ti 1 6 2

The formatting is the same should you input the information through the terminal. You will be guided along the way.

Examples

with a source file

example_with_source.png

with the CLI

Example_without_source_1.png Example_without_source_2.png Example_without_source_3.png

NB

  • The application seeks to match children/students to activities/courses as a bipartite matching process.
  • The user is asked to provide :
    • The names and capacities of activities/courses
    • The names and choices of children/students
  • The user is NOT ASKED
    • the order of interest among the choices for a children/students
    • the answer to the question of life, the universe and everything
  • make test enables you to test the first step of the project (i.e. just running the Ford-Fulkerson algorithm on a test graph)
    • ⚠️ But it is needed to roll back in the git history before the changes for the "Medium" part were made like this one
  • An image of the final graph (./outFileApp.svg) can be used to get a better understanding of the algorithm here is an example : Graph_example.svg